Python を使った機械学習の交差検証

Beginner

This tutorial is from open-source community. Access the source code

はじめに

機械学習において、クロスバリデーションは、独立したデータセットでモデルの性能を評価するために使用される手法です。これは、モデルが新しい未見のデータにどの程度一般化するかをより良く推定することで、オーバーフィッティングを防ぐのに役立ちます。

この実験では、クロスバリデーションの概念と、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 ライブラリを使って交差検証を実装する方法を学びました。データセットを学習用とテスト用に分割し、学習用データセットでモデルを学習させ、テスト用データセットでその性能を評価しました。交差検証はオーバーフィッティングを防ぎ、モデルが新しい未見のデータにどの程度一般化できるかをより良く推定するのに役立ちます。