内容紹介
Pythonで科学計算を行うための知識とテクニック、明確かつ効率的なコーディング方法を紹介!
豊富な数学関連、科学関連のライブラリを持つPythonは、現在では多くの科学分野で使われています。本書では、実際の科学データとSciPy、NumPy、pandas、scikit-imageといった科学ライブラリを使って実際の問題を解決する作業を通じて、数学的計算の基礎となるデータ構造のNumPy配列を使いこなし、科学計算の「明確かつ簡潔かつ効率的でエレガントなコード」の書き方を学ぶことができます。掲載コードとデータ、環境、ツールはすべて本書のGitHubから利用可能です。Python 3.6対応。
このような方におすすめ
Pythonで科学計算をする研究者、学生
目次
詳細目次
まえがき
1章 エレガントなNumPy:科学Pythonの基礎
1.1 データの紹介:遺伝子発現とは
1.2 NumPyのN次元配列
1.2.1 Pythonのリストでなくndarrayを使う理由
1.2.2 ベクトル化
1.2.3 ブロードキャスティング
1.3 遺伝子発現データセットの探索
1.3.1 pandasを使ってデータを読み込む
1.4 正規化
1.4.1 標本間の正規化
1.4.2 遺伝子間の正規化
1.4.3 標本間と遺伝子間の正規化:RPKM
1.5 まとめ
2章 NumPyとSciPyを用いた分位数正規化
2.1 データの取得
2.2 遺伝子発現分布の標本差
2.3 リード数データのバイクラスタリング
2.4 クラスタの可視化
2.5 生存率予測
2.5.1 追加の課題:TCGAの患者クラスタを使用する
2.5.2 追加の課題:TCGAのクラスタを再現する
3章 ndimageを使った画像領域のネットワーク
3.1 画像は単なるNumPy配列
3.1.1 演習:グリッドオーバーレイを追加する
3.2 信号処理で使うフィルタ
3.3 画像のフィルタリング(2次元フィルタ)
3.4 汎用フィルタ:近傍データの任意の関数
3.4.1 演習:Conwayのライフゲーム
3.4.2 演習:ソーベル勾配の大きさ
3.5 グラフとNetworkXライブラリ
3.5.1 演習:SciPyを使った曲線回帰
3.6 領域隣接グラフ
3.7 エレガントなndimage:画像領域からグラフを構築する方法
3.8 すべてのまとめ:平均の色を用いた領域分割
4章 周波数と高速フーリエ変換
4.1 周波数とは
4.2 応用例:鳥のさえずりのスペクトログラム
4.3 歴史
4.4 実装
4.5 DFTの長さを決定する
4.6 さらなるDFTの概念
4.6.1 周波数とその並び順
4.6.2 窓を掛ける
4.7 実世界の応用例:レーダデータの解析
4.7.1 周波数領域の信号特性
4.7.2 窓を掛ける:応用編
4.7.3 レーダ画像
4.7.4 FFTの他の応用例
4.7.5 参考文献
4.7.6 演習:画像の畳み込み
5章 疎行列を用いた分割表
5.1 分割表
5.1.1 演習:対応行列の計算複雑性
5.1.2 演習:対応行列を計算する別のアルゴリズム
5.1.3 演習:多クラス対応行列
5.2 scipy.sparseのデータ形式
5.2.1 COO形式
5.2.2 演習:COOを使った表現
5.2.3 CSR形式
5.3 疎行列の適用例:画像変換
5.3.1 演習:画像の回転
5.4 分割表再び
5.4.1 演習:必要なメモリ容量を減らす
5.5 セグメンテーションにおける分割表
5.6 情報理論の概要
5.6.1 演習:条件付きエントロピーの計算
5.7 セグメンテーションにおける情報理論:情報変化量
5.8 疎行列を使うようにNumPy配列のコードを変換する
5.9 情報変化量の使い方
5.9.1 追加の課題:セグメンテーションの実践
6章 SciPyで行う線形代数
6.1 線形代数の基本
6.2 グラフのラプラシアン行列
6.2.1 演習:回転行列
6.3 脳データのラプラシアン
6.3.1 演習:神経細胞の接続の近さを表す図を描く
6.3.2 チャレンジ問題:疎行列を扱う線形代数
6.4 ページランク:評判と重要度のための線形代数
6.4.1 演習:ぶら下がりノードの処理法
6.4.2 演習:異なる固有ベクトルの手法の等価性
6.5 まとめ
7章 SciPyを使って関数を最適化する
7.1 SciPyの最適化関数:scipy.optimize
7.1.1 事例:画像の最適な移動距離を計算する
7.2 optimizeを使った画像のレジストレーション
7.3 ベイスン-ホッピング法で極小値を避ける
7.3.1 演習:align関数を修正する
7.4 「何が最適か?」:適切な目的関数の選び方
8章 Toolzを使って小さなノートパソコンでビッグデータを処理する方法
8.1 yieldを使ったストリーミング
8.2 ストリーミングライブラリToolzの紹介
8.3 k-merのカウントとエラー補正
8.4 カリー化:ストリーミングのスパイス
8.5 k-merのカウント再び
8.5.1 演習:ストリーミングデータの主成分分析(PCA)
8.6 全ゲノムを基にマルコフモデルを作成する
8.6.1 演習:オンラインで実行するunzip
付録 演習の解答
A.1 解答:グリッドオーバーレイを追加する
A.2 解答:Conwayのライフゲーム
A.3 解答:ソーベル勾配の大きさ
A.4 解答:SciPyを使った曲線回帰
A.5 解答:画像の畳み込み
A.6 解答:対応行列の計算複雑性
A.7 解答:対応行列を計算する別のアルゴリズム
A.8 解答:多クラス対応行列
A.9 解答:COOを使った表現
A.10 解答:画像の回転
A.11 解答:必要なメモリ容量を減らす
A.12 解答:条件付きエントロピーの計算
A.13 解答:回転行列
A.14 解答:神経細胞の接続の近さを表す図を描く
A.14.1 チャレンジを受けて立つ:疎行列を扱う線形代数
A.15 解答:ぶら下がりノードの処理法
A.16 解答:手法の検証
A.17 解答:align関数を修正する
A.18 解答:scikit-learnライブラリ
A.19 解答:パイプの最初の部分に1段階追加する
エピローグ
E.1 次の目標
E.1.1 メーリングリスト
E.1.2 GitHub
E.1.3 カンファレンス
E.2 SciPyの向こう
E.3 本書に寄与する方法
E.4 また会う日まで
索引
続きを見る