シャッフル付きの交差検証
思い出してください。交差検証では、データを学習用とテスト用に何度も分割し、そのたびに異なる学習・テストセットを選びます。この演習では、先ほどの企業価値データに対して従来の ShuffleSplit による交差検証を行います。時系列データに対しては後ほど必要な変更点を扱います。ここで使うデータは、複数の大企業の過去の株価データと同じものです。
ワークスペースには線形回帰オブジェクト(model)のインスタンスと、評価用の関数 r2_score() が用意されています。データは配列 X と y に格納されています。結果の可視化を支援するヘルパー関数(visualize_predictions())も提供しています。
この演習はコースの一部です
Pythonで学ぶMachine Learningによる時系列データ解析
演習の手順
- 10 分割の ShuffleSplit 交差検証オブジェクトを初期化します。
- このオブジェクトを使って CV 分割を反復し、各反復で次を行います:
- 学習用インデックスでモデルを学習します。
- テスト用インデックスで予測を生成し、予測を用いてモデルのスコア($R^2$)を計算し、結果を集計します。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# Import ShuffleSplit and create the cross-validation object
from sklearn.model_selection import ShuffleSplit
cv = ____(____, random_state=1)
# Iterate through CV splits
results = []
for tr, tt in cv.____(X, y):
# Fit the model on training data
____(X[tr], y[tr])
# Generate predictions on the test data, score the predictions, and collect
prediction = ____(X[tt])
score = r2_score(____, ____)
results.append((prediction, score, tt))
# Custom function to quickly visualize predictions
visualize_predictions(results)