始める無料で始める

sklearn を使ったクロスバリデーション

第2章で説明したとおり、データセットの過学習はアナリティクスでよくある問題です。モデルがデータに過度に適合してしまい、学習に使ったデータでは高い性能を出す一方で、外部のデータにはうまく一般化できない状態を指します。

第2章で学んだ train/test 分割は、学習データへの過学習を防ぐのに有効ですが、ハイパーパラメータチューニングを行うと、テストデータに合わせ込みすぎて過学習する可能性があります。テストセットで最良の予測結果を得るようにモデルを調整するからです。そこで、異なるテストセットでモデルを検証することが推奨されます。K-fold クロスバリデーションはこの目的に適しています。

  • データセットを学習用とテスト用に分割します
  • モデルを学習し、予測を行い、スコアを計算します(正解率、適合率、再現率などを指定できます)
  • この処理を合計 k 回繰り返します
  • 10 個のスコアの平均を出力します

この演習では、データセットに対してクロスバリデーションを実行し、cross_val_score 関数で結果を評価します。

この演習はコースの一部です

HRアナリティクス:Pythonで従業員離職を予測する

コースを見る

演習の手順

  • クロスバリデーションを実行する関数 cross_val_score() を、モジュール sklearn.model_selection からインポートします。
  • cv ハイパーパラメータで分割数を 10 に指定し、モデルのクロスバリデーションスコアを出力してください。

実践的なインタラクティブ演習

このサンプルコードを完成させて、この演習に挑戦してみましょう。

# Import the function for implementing cross validation
from sklearn.model_selection import ____

# Use that function to print the cross validation score for 10 folds
print(____(model,features,target,____=10))
コードを編集して実行