はじめに
機械学習において、クロスバリデーションは、独立したデータセットでモデルの性能を評価するために使用される手法です。これは、モデルが新しい未見のデータにどの程度一般化するかをより良く推定することで、オーバーフィッティングを防ぐのに役立ちます。
この実験では、クロスバリデーションの概念と、Python の scikit - learn ライブラリを使用してそれを実装する方法を探ります。
VM のヒント
VM の起動が完了したら、左上隅をクリックしてノートブックタブに切り替え、Jupyter Notebook にアクセスして練習します。
場合によっては、Jupyter Notebook が読み込み終了するまで数秒待つ必要があります。Jupyter Notebook の制限により、操作の検証を自動化することはできません。
学習中に問題に遭遇した場合は、Labby にお問い合わせください。セッション後にフィードバックを提供してください。すぐに問題を解決いたします。
必要なライブラリをインポートする
まず、この実験に必要なライブラリをインポートしましょう。
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn import datasets
from sklearn import svm
データセットを読み込む
次に、モデルを学習させるためのデータセットを読み込みましょう。この例では、分類タスクにおいて一般的なデータセットである Iris データセットを使用します。
X, y = datasets.load_iris(return_X_y=True)
データセットを学習用とテスト用に分割する
モデルの性能を評価するために、データセットを学習用とテスト用に分割する必要があります。これを行うには、scikit - learn ライブラリのtrain_test_split関数を使用します。
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.4, random_state=0)
モデルを学習させて評価する
次に、学習用データセットでサポートベクターマシン(SVM)分類器を学習させ、テスト用データセットでその性能を評価しましょう。
clf = svm.SVC(kernel='linear', C=1).fit(X_train, y_train)
score = clf.score(X_test, y_test)
print("Accuracy: ", score)
まとめ
この実験では、Python の scikit - learn ライブラリを使って交差検証を実装する方法を学びました。データセットを学習用とテスト用に分割し、学習用データセットでモデルを学習させ、テスト用データセットでその性能を評価しました。交差検証はオーバーフィッティングを防ぎ、モデルが新しい未見のデータにどの程度一般化できるかをより良く推定するのに役立ちます。