始める無料で始める

出来高からの特徴量エンジニアリング

より精度の高い予測を行うために、非線形モデルを使っていきましょう。線形モデルでは、特徴量とターゲットの間に線形の相関が必要です。一方、他の機械学習モデルでは、特徴量を非線形な形で組み合わせることができます。たとえば、価格の移動平均が上昇しており、かつ出来高の移動平均が低下しているときに価格が上がる、というパターンを考えてみましょう。このような相互作用を捉えるには、特徴量同士を掛け合わせるか、非線形性を扱える機械学習アルゴリズム(例:ランダムフォレスト)を使う必要があります。

他の特徴量と相互作用する可能性のある情報をモデルに加えるため、弱い相関を持つ特徴量を追加できます。ここではまず、lng_dfAdj_Volume 列に含まれる出来高データを追加します。

始める前に、SMA() などの TA-Lib 関数には pandas オブジェクトではなく Numpy 配列を渡す必要があることを覚えておきましょう。pandas の Series や DataFrame に .values 属性を使うと、Numpy 配列として取得できます。

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

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

コースを見る

演習の手順

  • 出来高の1日変化率を作成し(pandas の pct_change() を使用)、lng_dfAdj_Volume_1d_change 列に代入してください。
  • 出来高の1日変化率の5日移動平均を作成し、lng_dfAdj_Volume_1d_change_SMA 列に代入してください。
  • new_features リストを使って、作成したこれら2つの新しい特徴量のヒストグラムを描画してください。

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

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

# Create 2 new volume features, 1-day % change and 5-day SMA of the % change
new_features = ['Adj_Volume_1d_change', 'Adj_Volume_1d_change_SMA']
feature_names.extend(new_features)
lng_df[____] = lng_df['Adj_Volume'].____
lng_df[____] = talib.SMA(____[____].____,
                        timeperiod=____)

# Plot histogram of volume % change data
lng_df[____].plot(kind='hist', sharex=False, bins=50)
plt.show()
コードを編集して実行