Zacznij terazZacznij za darmo

Inżynieria cech na podstawie wolumenu

Użyjemy modeli nieliniowych, aby uzyskać dokładniejsze prognozy. W modelach liniowych cechy muszą być liniowo skorelowane z wartością docelową. Inne algorytmy uczenia maszynowego potrafią łączyć cechy w sposób nieliniowy. Na przykład – co jeśli cena rośnie, gdy średnia krocząca ceny idzie w górę, a średnia krocząca wolumenu idzie w dół? Jedynym sposobem na uchwycenie takich zależności jest albo pomnożenie cech przez siebie, albo zastosowanie algorytmu, który radzi sobie z nieliniowością (np. lasy losowe).

Aby wzbogacić dane o informacje, które mogą wchodzić w interakcje z innymi cechami, możemy dodać cechy słabo skorelowane z celem. Zaczniemy od danych o wolumenie, które znajdują się w lng_df jako kolumna Adj_Volume.

Zanim zaczniesz – pamiętaj, że funkcje TA-Lib (np. SMA()) wymagają tablic NumPy, nie obiektów pandas. Możesz użyć atrybutu .values obiektu Series lub DataFrame z biblioteki pandas, aby uzyskać odpowiadającą mu tablicę NumPy.

To ćwiczenie jest częścią kursu

Uczenie maszynowe w finansach z Pythonem

Zobacz kurs

Instrukcje do ćwiczenia

  • Oblicz jednodniową zmianę procentową wolumenu (użyj pct_change() z biblioteki pandas) i przypisz wynik do kolumny Adj_Volume_1d_change w lng_df.
  • Oblicz 5-dniową średnią kroczącą jednodniowej zmiany procentowej wolumenu i przypisz wynik do kolumny Adj_Volume_1d_change_SMA w lng_df.
  • Narysuj histogramy obu nowo utworzonych cech, korzystając z listy new_features.

Interaktywne ćwiczenie praktyczne

Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.

# Create 2 new volume features, 1-day % change and 5-day SMA of the % change
new_features = ['Adj_Volume_1d_change', 'Adj_Volume_1d_change_SMA']
feature_names.extend(new_features)
lng_df[____] = lng_df['Adj_Volume'].____
lng_df[____] = talib.SMA(____[____].____,
                        timeperiod=____)

# Plot histogram of volume % change data
lng_df[____].plot(kind='hist', sharex=False, bins=50)
plt.show()
Edytuj i uruchom kod