Pythonではじめる機械学習
- Anaconda
- NumPy : ナンパイ
- SciPy : サイパイ
- matplotlib : マットプロットリブ
- IPython : アイパイソン
- Jupyter Notebook : ジュパイター・ノートブック
- scikit-learn : サイキットラーン
- pandas : パンダス
- mglearn :
- TMP
Anaconda
大規模データ処理、予測解析、科学技術計算向けのPythonディストリビュージョン
含まれるライブラリ
- NumPy
- SciPy
- matplotlib
- IPython
- Jupyter Notebook
- scikit-learn
NumPy : ナンパイ
主な機能
クラス
ndarry : (n-dimensional)多次元配列
… 要素は全て同じ型
NumPy配列ndarrayのスライス : [start:stop:step]
import numpy as np l = list(range(10)) print(l) # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] print(l[4:8]) # [4, 5, 6, 7] print(l[-5:-2]) # [5, 6, 7] print(l[::-1]) # [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
データセットのロード
: データセットの読み込み
from sklearn.datasets import load_iris iris_dataset = load_iris() # irisオブジェクトは辞書に似たBunchクラスのオブジェクトでキーと値を持つ print("keys: {}".format(iris_dataset.keys())) type(iris_dataset['data']) # numpy.ndarray
shape
: ndarrayの構造を確認する
iris_dataset['data'].shape # (150, 4)
train_test_split
: 75%-25%でtrain-testデータを分ける
from sklearn.model_selection import train_test_split X_train, X_test, y_train, y_test = train_test_split( iris_dataset['data'], iris_dataset['target'], random_state=0)
SciPy : サイパイ
主な機能
- 高度な線形代数ルーチン
- 数学関数の最適化
- 信号処理
- 特殊な数学関数
- 統計分布
- 疎行列 : scipy.sparse
matplotlib : マットプロットリブ
主な機能
- グラフ描画ライブラリ
IPython : アイパイソン
Jupyter Notebook : ジュパイター・ノートブック
ブラウザベースのインタラクティブなプログラミング環境
scikit-learn : サイキットラーン
主な機能
- 機械学習のためのライブラリ
- NumPy,SciPyに依存する
- 入力をNumPy配列で受け取る
機械学習モデル
全てのscikit-learnの機械学習モデルは、Estimatorと総称される個別のクラスに実装される。
k-最近傍法(k-Nearest Neighbors : ニアリスト ネィボァ)のクラス分類アルゴリズムは、neighborsモジュールのKNeighborsClassifierクラスに実装されている。
KNeighborsClassifier
from sklearn.neighbors import KNeighborsClassifier knn = KNeighborsClassifier(n_neighbors=1)
fit
訓練セットからモデルを構築する
knn.fit(X_train,y_train)
predict
予測する
X_new = np.array([[5,2.9,1,0.2]]) prediction = knn.predict(X_new) print(prediction) #[0] print("Predicted target name: {}".format( iris_dataset['target_names'][prediction])) # Predicted target name: ['setosa']
score
モデルの評価
y_pred = knn.predict(X_test) print(y_pred) # [2 1 0 2 0 2 0 1 1 1 2 1 1 1 1 0 1 1 0 0 2 1 0 0 2 0 0 1 1 0 2 1 0 2 2 1 0 2] # モデルの評価結果 print("Test set score: {:.2f}".format(np.mean(y_pred == y_test))) # Test set score: 0.97 print("Test set score: {:.2f}".format(knn.score(X_test,y_test))) # Test set score: 0.97
pandas : パンダス
主な機能
- データ変換、解析
- pandasのDataFrameはテーブルのようなもの
DataFrame
ndarrayをDataFrameに変換する
iris_dataframe = pd.DataFrame(X_train, columns=iris_dataset.feature_names)
pd.plotting.scatter_matrix
pd.scatter_matrix
: ペアプロットを作成する関数
※ ペアプロット : 全ての組み合わせ可能な特微量の組み合わせをプロットする
iris_dataframe = pd.DataFrame(X_train, columns=iris_dataset.feature_names) grr = pd.plotting.scatter_matrix(iris_dataframe, c= y_train, figsize=(15,15), marker='0', hist_kwds={'bins': 20}, s=60, alpha=.8, cmap=mglearn.cm3)
mglearn :
TMP
bunch