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

Machine LearningMachine LearningBeginner
今すぐ練習

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

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

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

この実験では、クロスバリデーションの概念と、Pythonのscikit - learnライブラリを使用してそれを実装する方法を探ります。

VMのヒント

VMの起動が完了したら、左上隅をクリックしてノートブックタブに切り替え、Jupyter Notebookにアクセスして練習します。

場合によっては、Jupyter Notebookが読み込み終了するまで数秒待つ必要があります。Jupyter Notebookの制限により、操作の検証を自動化することはできません。

学習中に問題に遭遇した場合は、Labbyにお問い合わせください。セッション後にフィードバックを提供してください。すぐに問題を解決いたします。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL sklearn(("Sklearn")) -.-> sklearn/ModelSelectionandEvaluationGroup(["Model Selection and Evaluation"]) ml(("Machine Learning")) -.-> ml/FrameworkandSoftwareGroup(["Framework and Software"]) sklearn/ModelSelectionandEvaluationGroup -.-> sklearn/model_selection("Model Selection") ml/FrameworkandSoftwareGroup -.-> ml/sklearn("scikit-learn") subgraph Lab Skills sklearn/model_selection -.-> lab-71122{{"Python を使った機械学習の交差検証"}} ml/sklearn -.-> lab-71122{{"Python を使った機械学習の交差検証"}} end

必要なライブラリをインポートする

まず、この実験に必要なライブラリをインポートしましょう。

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