訓練用とテスト用の特徴量を作成する
線形モデルをフィットする前に、切片を持たせるために特徴量に定数を追加します。
また、訓練用とテスト用の特徴量を分けて作成します。これにより、訓練データセットでモデルをフィットし、テストデータセットで性能を評価できます。過学習(訓練データのパターンを過度に記憶してしまうこと)を防ぐために、モデルが未見のデータに対する性能を必ず確認することが重要です。
このような時系列データでは、通常、古いデータを訓練セット、新しいデータをテストセットとして使用します。こうすることで、最新のデータに対するモデルの性能を評価でき、未見のデータへの予測をより現実的にシミュレートできます。
この演習はコースの一部です
Python による金融のための Machine Learning
演習の手順
statsmodels.apiライブラリをエイリアスsmでインポートします。- statsmodels の
.add_constant()関数を使って、features変数に定数を追加します。 featuresまたはtargetsの.shape[0]プロパティを使って、全データポイント数(行数)の 85% をtrain_sizeとして設定します。train_sizeと Python のインデックス指定(例:[start:stop])を使って、linear_featuresとtargetsをそれぞれ訓練セットとテストセットに分割します。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# Import the statsmodels.api library with the alias sm
___
# Add a constant to the features
linear_features = sm.____(features)
# Create a size for the training set that is 85% of the total number of samples
train_size = int(0.85 * ____)
train_features = linear_features[:train_size]
train_targets = targets[____]
test_features = linear_features[train_size:]
test_targets = targets[train_size:]
print(linear_features.shape, train_features.shape, test_features.shape)