Tvorba příznaků z objemu obchodů
Budeme používat nelineární modely pro přesnější predikce. U lineárních modelů musí být příznaky lineárně korelované s cílovou proměnnou. Jiné modely strojového učení dokážou příznaky kombinovat nelineárně. Co kdybychom například zjistili, že cena roste tehdy, když klouzavý průměr ceny roste a klouzavý průměr objemu obchodů klesá? Jediný způsob, jak zachytit takovéto interakce, je buď příznaky vzájemně vynásobit, nebo použít algoritmus strojového učení, který s nelinearitou umí pracovat (např. random forests).
Abychom zahrnuli více informací, které mohou s ostatními příznaky interagovat, přidáme i slabě korelované příznaky. Začneme daty o objemu obchodů, která máme v lng_df ve sloupci Adj_Volume.
Než začneš, pamatuj, že funkce TA-Lib (například SMA()) vyžadují Numpy pole, ne pandas objekty. Pomocí atributu .values pandas Series nebo DataFrame je snadno převedeš na Numpy pole.
Toto cvičení je součástí kurzu
Machine Learning for Finance in Python
Pokyny k cvičení
- Vypočítej jednodenní procentuální změnu objemu obchodů (použij
pct_change()z pandas) a výsledek ulož do sloupceAdj_Volume_1d_changevlng_df. - Vypočítej 5denní klouzavý průměr jednodenní procentuální změny objemu obchodů a výsledek ulož do sloupce
Adj_Volume_1d_change_SMAvlng_df. - Vykresli histogramy těchto dvou nových příznaků pomocí seznamu
new_features.
Interaktivní cvičení na vyzkoušení si v praxi
Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.
# 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()