はじめに
この実験は、scikit-learn を使って Digits データセットに対して分類手法をどのように使用するかに関する手順を追ったチュートリアルです。この実験では、データセットを読み込み、データを前処理し、データセットを学習用とテスト用に分割し、その後、2 つの異なる分類手法(K 近傍法とロジスティック回帰)を使って数字を分類します。最後に、両手法の精度を比較します。
VM のヒント
VM の起動が完了したら、左上隅をクリックしてノートブックタブに切り替え、Jupyter Notebook を使って練習しましょう。
時々、Jupyter Notebook が読み込み終了するまで数秒待つ必要があります。Jupyter Notebook の制限により、操作の検証は自動化できません。
学習中に問題がある場合は、Labby にお問い合わせください。セッション後にフィードバックを提供してください。すぐに問題を解決いたします。
Digits データセットを読み込む
scikit-learn のload_digits関数を使って Digits データセットを読み込みます。この関数は 2 つの配列を返します。入力データを含むX_digitsとターゲットラベルを含むy_digitsです。
from sklearn import datasets
X_digits, y_digits = datasets.load_digits(return_X_y=True)
データを前処理する
次に、データの最大値を使って特徴量を[0, 1]の範囲にスケーリングすることでデータを前処理します。これは、入力データを入力データの最大値で割ることによって行うことができます。
X_digits = X_digits / X_digits.max()
データセットを学習用とテスト用に分割する
次に、scikit-learn のtrain_test_split関数を使ってデータセットを学習用とテスト用に分割します。学習にはデータの 90% を、テストには 10% を使います。
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X_digits, y_digits, test_size=0.1, random_state=42)
K 近傍法(K-Nearest Neighbors)分類器を学習とテストする
ここでは、scikit-learn のKNeighborsClassifier関数を使って K 近傍法(KNN)分類器を学習し、テストセットでテストします。その後、分類器の精度スコアを表示します。
from sklearn.neighbors import KNeighborsClassifier
knn = KNeighborsClassifier()
knn.fit(X_train, y_train)
knn_score = knn.score(X_test, y_test)
print("KNN score: %f" % knn_score)
ロジスティック回帰分類器を学習とテストする
ここでは、scikit-learn のLogisticRegression関数を使ってロジスティック回帰分類器を学習し、テストセットでテストします。その後、分類器の精度スコアを表示します。
from sklearn.linear_model import LogisticRegression
logistic = LogisticRegression(max_iter=1000)
logistic.fit(X_train, y_train)
logistic_score = logistic.score(X_test, y_test)
print("Logistic Regression score: %f" % logistic_score)
両方の分類器の精度を比較する
最後に、両方の分類器の精度スコアを表示することで、両方の分類器の精度を比較します。
print("KNN score: %f" % knn_score)
print("Logistic Regression score: %f" % logistic_score)
まとめ
この実験では、scikit-learn を使って Digits データセットに対して分類手法をどのように使用するかを学びました。データセットを読み込み、データを前処理し、学習用とテスト用にデータセットを分割し、その後、テストセットで 2 つの異なる分類器(K 近傍法とロジスティック回帰)を学習とテストしました。最後に、両方の分類器の精度を比較しました。