Tworzenie cech dzień tygodnia
Możemy tworzyć cechy datetime, aby dostarczyć jeszcze więcej informacji naszym modelom nieliniowym. Większość danych finansowych zawiera znaczniki czasu, które niosą ze sobą wiele informacji – rok, miesiąc, dzień, a czasem godzinę, minutę i sekundę. Możemy też wyodrębnić dzień tygodnia, kwartał roku czy czas, jaki upłynął od jakiegoś zdarzenia (np. publikacji wyników finansowych).
W tym ćwiczeniu wyodrębnimy tylko dzień tygodnia, ponieważ nasz zbiór danych nie obejmuje zbyt długiego okresu. Właściwość dayofweek z indeksu datetime biblioteki pandas pozwoli nam uzyskać dzień tygodnia. Następnie zastosujemy kodowanie zero-jedynkowe za pomocą funkcji get_dummies() z biblioteki pandas. Tworzy ona osobną kolumnę dla każdego dnia tygodnia z wartościami binarnymi (0 lub 1). Pierwszą kolumnę pomijamy, ponieważ można ją wywnioskować z pozostałych.
To ćwiczenie jest częścią kursu
Uczenie maszynowe w finansach z Pythonem
Instrukcje do ćwiczenia
- Użyj właściwości
dayofweekz indeksulng_df, aby uzyskać dni tygodnia. - Zastosuj funkcję
get_dummiesna zmiennej zawierającej dni tygodnia, ustawiając prefiks'weekday'. - Ustaw indeks zmiennej
days_of_weektaki sam jak indekslng_df, aby móc połączyć oba DataFrame'y. - Połącz DataFrame'y
lng_dfidays_of_weekw jeden DataFrame za pomocą funkcjiconcat.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
# 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())