はじめに
この実験では、scikit-learn の手書き数字データセットを調べます。このデータセットは 1797 個の 8x8 ピクセルの画像で構成されており、それぞれが 0 から 9 までの手書き数字を表しています。私たちの目的は、このデータセットを分析し、機械学習アルゴリズムを使って手書き数字を分類する方法を理解することです。
VM のヒント
VM の起動が完了したら、左上隅をクリックしてノートブックタブに切り替え、Jupyter Notebook を使って練習しましょう。
時々、Jupyter Notebook が読み込み終わるまで数秒待つ必要があります。Jupyter Notebook の制限により、操作の検証は自動化できません。
学習中に問題がある場合は、Labby にお問い合わせください。セッション後にフィードバックを提供してください。私たちは迅速に問題を解決いたします。
データセットのインポート
最初のステップは、次のコードを使って scikit-learn から手書き数字データセットをインポートすることです。
from sklearn import datasets
## Load the digits dataset
digits = datasets.load_digits()
データセットの可視化
データセットをよりよく理解するために、matplotlib を使ってサンプル画像を可視化できます。次のコードは、データセットの最後の数字を表示します。
import matplotlib.pyplot as plt
## Display the last digit
plt.figure(1, figsize=(3, 3))
plt.imshow(digits.images[-1], cmap=plt.cm.gray_r, interpolation="nearest")
plt.show()
機械学習用のデータセットの準備
データセットで機械学習モデルを学習させる前に、データを訓練用とテスト用のセットに分割することでデータを準備する必要があります。これは、scikit-learn のtrain_test_split関数を使って行うことができます。
from sklearn.model_selection import train_test_split
## Split the dataset into training and testing sets
X_train, X_test, y_train, y_test = train_test_split(digits.data, digits.target, test_size=0.2, random_state=42)
機械学習モデルの学習
これでデータセットが準備できたので、訓練用データを使って機械学習モデルを学習させることができます。この例では、サポートベクターマシン(SVM)アルゴリズムを使います。
from sklearn.svm import SVC
## Create the SVM classifier
clf = SVC(kernel='linear')
## Train the classifier on the training data
clf.fit(X_train, y_train)
モデルの評価
モデルの性能を評価するには、scikit-learn のaccuracy_score関数を使うことができます。
from sklearn.metrics import accuracy_score
## Predict the labels of the test set
y_pred = clf.predict(X_test)
## Calculate the accuracy of the model
accuracy = accuracy_score(y_test, y_pred)
## Print the accuracy of the model
print("Accuracy:", accuracy)
モデルの改善
モデルの精度が不十分な場合、SVM アルゴリズムのハイパーパラメータを調整することで改善を試みることができます。たとえば、Cパラメータの値を変更することを試してみることができます。
## Create the SVM classifier with a different value of C
clf = SVC(kernel='linear', C=0.1)
## Train the classifier on the training data
clf.fit(X_train, y_train)
## Predict the labels of the test set
y_pred = clf.predict(X_test)
## Calculate the accuracy of the model
accuracy = accuracy_score(y_test, y_pred)
## Print the accuracy of the model
print("Accuracy:", accuracy)
まとめ
この実験では、scikit-learn の手書き数字データセットを調べ、手書き数字を分類するための機械学習モデルを学習させました。また、モデルの性能を評価する方法と、アルゴリズムのハイパーパラメータを調整することでモデルを改善する方法についても学びました。このデータセットは、機械学習分類アルゴリズムに興味のある人にとって非常に良いリソースです。