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
Instrukcje do ćwiczenia
- Oblicz jednodniową zmianę procentową wolumenu (użyj
pct_change()z biblioteki pandas) i przypisz wynik do kolumnyAdj_Volume_1d_changewlng_df. - Oblicz 5-dniową średnią kroczącą jednodniowej zmiany procentowej wolumenu i przypisz wynik do kolumny
Adj_Volume_1d_change_SMAwlng_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()