クロスバリデーションの統計
グリッドサーチCVでランダムフォレスト分類器のチューニングを行い、過学習していないかを確認するためにクロスバリデーション結果を確認したいとします。特に、各パラメータ設定について、平均訓練スコアから平均テストスコアを引いた差を見たいと考えています。データセットは X_train と y_train として、パイプラインは pipe として与えられ、pandas を pd として、さらに GridSearchCV() などのモジュールはすでに読み込まれています。
この演習はコースの一部です
Python で設計する Machine Learning ワークフロー
演習の手順
- 3 分割のクロスバリデーションで、訓練統計とテスト統計の両方を返すように設定したグリッドサーチオブジェクトを作成します。
- そのグリッドサーチオブジェクトを訓練データに適合させます。
- 学習済みCVオブジェクトの
cv_results_属性にあるクロスバリデーション結果をデータフレームに保存します。 - 平均テストスコアの列と平均訓練スコアの列の差を表示します。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# Fit your pipeline using GridSearchCV with three folds
grid_search = GridSearchCV(
pipe, params, ____=3, return_train_score=____)
# Fit the grid search
gs = grid_search.____(____, ____)
# Store the results of CV into a pandas dataframe
results = pd.____(gs.____)
# Print the difference between mean test and training scores
print(
results[____]-results['mean_train_score'])