Zacznij terazZacznij za darmo

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

Zobacz kurs

Instrukcje do ćwiczenia

  • Użyj właściwości dayofweek z indeksu lng_df, aby uzyskać dni tygodnia.
  • Zastosuj funkcję get_dummies na zmiennej zawierającej dni tygodnia, ustawiając prefiks 'weekday'.
  • Ustaw indeks zmiennej days_of_week taki sam jak indeks lng_df, aby móc połączyć oba DataFrame'y.
  • Połącz DataFrame'y lng_df i days_of_week w jeden DataFrame za pomocą funkcji concat.

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())
Edytuj i uruchom kod