NumPyによるデータ分析入門
――配列操作、線形代数、機械学習のためのPythonプログラミング

[cover photo]
  • 2019年09月 発行
  • 248ページ
  • ISBN978-4-87311-887-1
  • 原書: Mastering Numerical Computing with NumPy
  • フォーマット 本 PDF

オライリー・ジャパンで書籍を購入:
定価3,080円

Ebook Storeで電子版を購入:
価格2,464円

NumPyは、配列計算が高速に行えるPythonの数値計算用ライブラリです。科学技術分野を中心に人気が高く、数値計算、データ分析、機械学習に欠かせないツールとなっています。本書ではまず配列の仕組みとその演算をていねいに説明します。続いて、機械学習を理解する上で欠かせない線形代数について、NumPyを使った基本的な演算を行います。これらの準備の後で、実データを使ったデータ分析で機械学習の基礎を学びます。さらにNumPyと一緒によく使われるSciPy、pandas、scikit-learnなどのライブラリとの関係を示して、いくつかの例を紹介します。最後に扱うのは効率化の追求です。本書は、NumPyとそれに関連するPythonの配列と演算についての知識とスキルをコンパクトにまとめているので、NumPyの機能と威力が体感できます。

関連書籍

Juliaプログラミングクックブック
Pythonデータサイエンスハンドブック
Pythonによるデータ分析入門 第2版
エレガントなSciPy

はじめに

Ⅰ部

1章 NumPy配列を操作する
    1.1 技術的要件
    1.2 NumPyが必要とされる理由
    1.3 誰がNumPyを使うのか
    1.4 ベクトルと行列の入門
    1.5 NumPy配列オブジェクトの基本
    1.6 NumPy配列の演算
    1.7 多次元配列を取り扱う
    1.8 インデックス付け、スライス、形状変換、サイズ変換、ブロードキャスティング
    1.9 1章のまとめ

2章 NumPyの線形代数
    2.1 ベクトルと行列の数学
    2.2 固有値とその計算方法
    2.3 ノルムと行列式の計算
    2.4 線形方程式の解法
    2.5 勾配の計算
    2.6 2章のまとめ

3章 NumPyの統計関数で行う探索的データ分析:ボストン市の住宅価格データセット
    3.1 ファイルの読み込みと保存
    3.2 データセットの探索
    3.3 基本統計量を調べる
    3.4 ヒストグラムを計算する
    3.5 歪度と尖度
    3.6 データの刈り込みと統計量
    3.7 ボックスプロット
    3.8 相関を計算する
    3.9 3章のまとめ

4章 線形回帰を用いて住宅価格を予測する
    4.1 教師あり学習と線形回帰
    4.2 独立変数と従属変数
    4.3 ハイパーパラメータ
    4.4 損失関数と誤差関数
    4.5 勾配降下法を用いた線形単回帰
    4.6 線形回帰を用いた住宅価格のモデリング
    4.7 4章のまとめ

5章 NumPyで卸売業者の顧客をクラスタ分析する
    5.1 教師なし学習とクラスタ分析
    5.2 ハイパーパラメータ
    5.3 損失関数
    5.4 k平均法アルゴリズムを単一変数用に実装する
    5.5 アルゴリズムの修正
    5.6 5章のまとめ

6章 NumPyとSciPy、pandas、scikit-learnを併用する
    6.1 NumPyとSciPy
        6.1.1 SciPyとNumPyで行う線形回帰
    6.2 NumPyとpandas
        6.2.1 pandasで株価の定量的モデリングをする
    6.3 SciPyとscikit-learn
        6.3.1 scikit-learnでk平均法を用いて住宅価格データをクラスタリングする
    6.4 6章のまとめ

7章 NumPy上級編
    7.1 NumPyの内部構造
        7.1.1 NumPyのメモリ管理方法
        7.1.2 NumPyのコードをプロファイリングして性能を理解する
    7.2 7章のまとめ

Ⅱ部

8章 高性能計算ライブラリの手引き
    8.1 BLASとLAPACK
    8.2 ATLAS
    8.3 Intel Math Kernel Library
    8.4 OpenBLAS
    8.5 AWS EC2上でNumPyを低レベルライブラリを変えて構築する
        8.5.1 BLASとLAPACKのインストール
        8.5.2 OpenBLASのインストール
        8.5.3 Intel MKLのインストール
        8.5.4 ATLASのインストール
    8.6 ベンチマークテスト用の計算集約的タスク
        8.6.1 行列の分解
        8.6.2 特異値分解(SVD)
        8.6.3 コレスキー分解
        8.6.4 LU分解
        8.6.5 固有値分解
        8.6.6 QR分解
        8.6.7 疎線形系を取り扱うには
    8.7 8章のまとめ

9章 ベンチマークテストで行う性能評価
    9.1 なぜベンチマークが必要か
    9.2 ベンチマークテストの準備
        9.2.1 BLASとLAPACKを使った設定の性能
        9.2.2 OpenBLASを使った設定の性能
        9.2.3 ATLASを使った設定の性能
        9.2.4 Intel MKLを使った設定の性能
    9.3 結果
    9.4 9章のまとめ

索引

ここで紹介する正誤表には、書籍発行後に気づいた誤植や更新された情報を掲載しています。以下のリストに記載の年月は、正誤表を作成し、増刷書籍を印刷した月です。お手持ちの書籍では、すでに修正が施されている場合がありますので、書籍最終ページの奥付でお手持ちの書籍の刷版、刷り年月日をご確認の上、ご利用ください。

第1刷正誤表 2019年11月29日更新

ページ :67、コードブロック

【誤】

In [48]: %matplotlib notebook
         import matplotlib.pyplot as plt
         NOX = samples[:,5:6]
         plt.hist(NOX,bins ='auto')
         plt.title("Distribution nitric oxides concentration (parts per 10 million)")
         plt.show()

【正】

In [48]: %matplotlib notebook
         import matplotlib.pyplot as plt
         RM = samples[5:6]
         plt.hist(RM,bins ='auto')
         plt.title("Average number of rooms per dwelling")
         plt.show()

ページ :67、図3-2の直前の文章

【誤】
上のコードでは、NOXという特徴のヒストグラムをプロットします。
【正】
上のコードでは、RMという特徴のヒストグラムをプロットします。


ページ :67、図3-2のラベルとラベル訳

【誤】
窒素化合物の濃度の分布(0.1ppm単位)
Distribution nitric oxides concentration (parts per 10 million)
【正】
1住戸あたりの平均部屋数
Average number of rooms per dwelling


ページ :67、図3-2キャプション

【誤】
窒素化合物の分布(y軸は個数)
【正】
1住戸あたりの平均部屋数(y軸は個数)


ページ :68、2行目とその下のコードブロック

【誤】
normed=Trueに設定すると、以下のようにビンに含まれる値の個数の全体に対する割合が表示されます。

In [49]: plt.hist(NOX,bins ='auto', normed = True)
         plt.title("Distribution nitric oxides concentration (parts per 10 million)")
         plt.show()

【正】
density=Trueに設定すると、以下のようにビンの確率密度(ヒストグラム全体の面積すなわちビン幅とビンの個数の積の総和が、1になるように、ビンの個数を正規化したもの)が表示されます。

In [49]: plt.hist(RM,bins ='auto', density = True)
         plt.title("Average number of rooms per dwelling")
         plt.show()

ページ :68、図3-3のラベルとラベル訳

【誤】
窒素化合物の濃度の分布(0.1ppm単位)
Distribution nitric oxides concentration (parts per 10 million)
【正】
1住戸あたりの平均部屋数
Average number of rooms per dwelling


ページ :67、図3-3キャプション

【誤】
窒素化合物の分布(y軸は割合)
【正】
1住戸あたりの平均部屋数(y軸は確率密度)


ページ :68、図3-3の下のコードブロック

【誤】

In [50]: import matplotlib.pyplot as plt
         NOX = samples[:,5:6]
         n, bins, patches = plt.hist(NOX, bins='auto')
         print('Bin Sizes')
         print(n)
         print('Bin Edges')
         print(bins)

【正】

In [50]: import matplotlib.pyplot as plt
         RM = samples[:,5:6]
         n, bins, patches = plt.hist(RM, bins='auto')
         print('Bin Sizes')
         print(n)
         print('Bin Edges')
         print(bins)

ページ :72、13行目

【誤】

axs[n].set_title('{}'.format(feature_names[n]))

【正】

axs[n].set_title('{}'.format(feature_names_new[n]))

ページ :73、図3-5

4枚目以降のパネルのタイトルを修正。
CHAS→NOX
NOX→RM
RM→AGE
AGE→DIS
DIS→RAD
RAD→TAX
TAX→PTRATIO
PTRATIO→B
B→LSTAT

Feedback

皆さんのご意見をお聞かせください。ご購入いただいた書籍やオライリー・ジャパンへのご感想やご意見、ご提案などをお聞かせください。より良い書籍づくりやサービス改良のための参考にさせていただきます。
[feedbackページへ]