始める無料で始める

シャッフル付きの交差検証

思い出してください。交差検証では、データを学習用とテスト用に何度も分割し、そのたびに異なる学習・テストセットを選びます。この演習では、先ほどの企業価値データに対して従来の ShuffleSplit による交差検証を行います。時系列データに対しては後ほど必要な変更点を扱います。ここで使うデータは、複数の大企業の過去の株価データと同じものです。

ワークスペースには線形回帰オブジェクト(model)のインスタンスと、評価用の関数 r2_score() が用意されています。データは配列 Xy に格納されています。結果の可視化を支援するヘルパー関数(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)
コードを編集して実行