НачатьНачать бесплатно

Создание признаков дня недели

Можно формировать признаки на основе дат и времени, чтобы добавить ещё больше информации для нелинейных моделей. Большинство финансовых данных содержит временны́е метки, в которых закодировано множество сведений: год, месяц, день, а иногда часы, минуты и секунды. Помимо этого, можно извлечь день недели, квартал года или время, прошедшее с какого-либо события (например, публикации финансовой отчётности).

В этом упражнении мы извлечём только день недели, поскольку наш набор данных охватывает не очень большой период. Для этого воспользуемся свойством 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())
Редактировать и запускать код