Створення ознак за днями тижня
Ми можемо створювати ознаки з дат і часу, щоб додати ще більше інформації для наших нелінійних моделей. Більшість фінансових даних містить позначки часу, у яких багато відомостей — рік, місяць, день, а іноді година, хвилина й секунда. Також можна отримати день тижня, квартал року або час, що минув від певної події (наприклад, виходу звіту про прибутки).
Тут ми дістанемо лише день тижня, адже наш набір даних не охоплює далекий період. Властивість dayofweek з індексу дат pandas допоможе отримати день тижня. Далі ми перетворимо dayofweek на «даммі»-ознаки за допомогою pandas get_dummies(). Це створить стовпці для кожного дня тижня з бінарними значеннями (0 або 1). Перший стовпець ми відкинемо, оскільки його можна однозначно відновити з інших.
Ця вправа є частиною курсу
Machine Learning для фінансів у Python
Інструкції до вправи
- Використайте властивість
dayofweekз індексуlng_df, щоб отримати дні тижня. - Застосуйте функцію
get_dummiesдо змінної з днями тижня, задавши префікс'weekday'. - Встановіть індекс змінної
days_of_weekтаким самим, як індексlng_df, щоб ми могли їх обʼєднати. - Обʼєднайте датафрейми
lng_dfіdays_of_weekв один датафрейм за допомогою конкатенації.
Інтерактивна практична вправа
Спробуйте виконати цю вправу, доповнивши цей зразок коду.
# 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())