シャッフルなしのクロスバリデーション
次に、ブロック型のクロスバリデーション(全データポイントをシャッフルしない)でモデルの学習を再実行しましょう。この場合、隣接する時点のデータは互いに近いまま保たれます。各クロスバリデーションループにおけるモデルの予測は、どのように見えると思いますか?
ワークスペースには線形回帰の model オブジェクトのインスタンスが用意されています。配列 X と y(学習データ)も利用できます。
この演習はコースの一部です
Pythonで学ぶMachine Learningによる時系列データ解析
演習の手順
- 今回はシャッフルなしで分割数を 10 にした KFold クロスバリデーションを使い、別のクロスバリデーションオブジェクトを作成します。
- このオブジェクトを反復処理し、学習用インデックスでモデルを学習し、テスト用インデックスで予測を生成します。
- 用意されたヘルパー関数(
visualize_predictions())を使って、CV 各分割にわたる予測を可視化します。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# Create KFold cross-validation object
from sklearn.model_selection import KFold
cv = ____(n_splits=____, shuffle=____)
# Iterate through CV splits
results = []
for tr, tt in cv.split(X, y):
# Fit the model on training data
model.fit(____)
# Generate predictions on the test data and collect
prediction = model.predict(____)
results.append((prediction, tt))
# Custom function to quickly visualize predictions
visualize_predictions(results)