曜日特徴量の作成
日時の特徴量を追加することで、非線形モデルにさらに多くの情報を提供できます。金融データの多くには日時情報が含まれており、年・月・日、そして場合によっては時・分・秒といったデータが得られます。さらに、曜日や四半期、あるいは決算発表などのイベントからの経過時間なども特徴量として活用できます。
ここでは、データセットの期間が短いため、曜日のみを取得します。pandas の日時インデックスが持つ dayofweek プロパティを使って曜日を取得しましょう。その後、pandas の get_dummies() を使って dayofweek をダミー変数化します。これにより、各曜日に対応する列が作成され、値は 0 または 1 の二値になります。他の列から推測できるため、最初の列は削除します。
この演習はコースの一部です
Python による金融のための Machine Learning
演習の手順
lng_dfのインデックスにdayofweekプロパティを使用して、曜日を取得してください。- 曜日の変数に対して
get_dummies関数を適用し、プレフィックスとして'weekday'を指定してください。 lng_dfと結合できるよう、days_of_week変数のインデックスをlng_dfのインデックスと同じに設定してください。lng_dfとdays_of_weekの DataFrame を 1 つの DataFrame に結合してください。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# Use pandas' get_dummies function to get dummies for day of the week
days_of_week = pd.get_dummies(lng_df.index.____,
prefix=____,
drop_first=True)
# Set the index as the original dataframe index for merging
days_of_week.index = lng_df.____
# Join the dataframe with the days of week dataframe
lng_df = pd.concat([lng_df, ____], axis=1)
# Add days of week to feature names
feature_names.extend(['weekday_' + str(i) for i in range(1, 5)])
lng_df.dropna(inplace=True) # drop missing values in-place
print(lng_df.head())