Создание признаков дня недели
Можно формировать признаки на основе дат и времени, чтобы добавить ещё больше информации для нелинейных моделей. Большинство финансовых данных содержит временны́е метки, в которых закодировано множество сведений: год, месяц, день, а иногда часы, минуты и секунды. Помимо этого, можно извлечь день недели, квартал года или время, прошедшее с какого-либо события (например, публикации финансовой отчётности).
В этом упражнении мы извлечём только день недели, поскольку наш набор данных охватывает не очень большой период. Для этого воспользуемся свойством dayofweek индекса дат pandas. Затем преобразуем dayofweek в дамми-переменные с помощью функции get_dummies(). В результате для каждого дня недели появится отдельный столбец с бинарными значениями (0 или 1). Первый столбец удаляется, так как его значения можно вывести из остальных.
Это упражнение является частью курса
Машинное обучение для финансов на Python
Инструкции к упражнению
- Используйте свойство
dayofweekиндексаlng_df, чтобы получить дни недели. - Примените функцию
get_dummiesк переменной с днями недели, задав префикс'weekday'. - Присвойте переменной
days_of_weekтот же индекс, что и уlng_df, чтобы можно было объединить два DataFrame. - Объедините DataFrame
lng_dfиdays_of_weekв один DataFrame с помощью функцииconcat.
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
# 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())