始める無料で始める

データの標準化

K最近傍法(KNN)やニューラルネットワークなど、スケーリングされたデータで性能が向上するモデルがあります。そこで、データを標準化しましょう。

また、特徴量の重要度に基づいて、重要度の低い変数(曜日)を .iloc[] でインデックス指定し、特徴量の DataFrame から除外します。KNN は距離を使って予測に使う類似点を探すため、値の大きな特徴量が小さな特徴量を圧倒してしまいます。スケーリングによってその問題を解消できます。

sklearnscale() を使うとデータを標準化できます。これは平均を 0、標準偏差を 1 に変換する処理です。本来であれば訓練データに StandardScalerfit_transform() を、テストデータに fit() を使うのが理想的ですが、ここではコードを 15 行以内に収める必要があるため、scale() を使用します。

データを標準化したら、ヒストグラムを描画して結果を確認しましょう。

この演習はコースの一部です

Python による金融のための Machine Learning

コースを見る

演習の手順

  • .iloc を使って、訓練・テストの特徴量から曜日の特徴量を除外してください(曜日は末尾の 4 特徴量です)。
  • sklearn の scale() を使って train_featurestest_features を標準化し、結果をそれぞれ scaled_train_featuresscaled_test_features に格納してください。
  • スケーリング前の train_features から 14 日間 RSI 移動平均([:, 2] でインデックス指定)のヒストグラムを、1 つ目のサブプロット(ax[0])に描画してください。
  • 標準化後の 14 日間 RSI 移動平均のヒストグラムを、2 つ目のサブプロット(ax[1])に描画してください。

実践的なインタラクティブ演習

このサンプルコードを完成させて、この演習に挑戦してみましょう。

from sklearn.preprocessing import scale

# Remove unimportant features (weekdays)
train_features = train_features.iloc[:, :-4]
test_features = test_features.____

# Standardize the train and test features
scaled_train_features = scale(train_features)
scaled_test_features = ____

# Plot histograms of the 14-day SMA RSI before and after scaling
f, ax = plt.subplots(nrows=2, ncols=1)
train_features.iloc[:, 2].hist(ax=____)
ax[1].hist(scaled_train_features[:, 2])
plt.show()
コードを編集して実行