Feature engineering dal volume
Useremo modelli non lineari per ottenere previsioni più accurate. Con i modelli lineari, le feature devono essere linearmente correlate al target. Altri modelli di machine learning possono invece combinare le feature in modo non lineare. Per esempio, cosa succede se il prezzo sale quando la media mobile del prezzo sta salendo e la media mobile del volume sta scendendo? L'unico modo per catturare queste interazioni è moltiplicare le feature oppure usare un algoritmo di machine learning che gestisca la non linearità (ad es. i random forest).
Per includere più informazioni che possano interagire con altre feature, possiamo aggiungere feature debolmente correlate. Per iniziare aggiungeremo i dati di volume, che abbiamo in lng_df nella colonna Adj_Volume.
Prima di cominciare, ricorda che per le funzioni di TA-Lib (come SMA()), devi fornire array Numpy, non oggetti pandas. Puoi usare l'attributo .values di una Series o di un DataFrame di pandas per ottenerlo come array Numpy.
Questo esercizio fa parte del corso
Machine Learning per la finanza in Python
Istruzioni dell'esercizio
- Crea la variazione percentuale a 1 giorno del volume (usa
pct_change()di pandas) e assegnala alla colonnaAdj_Volume_1d_changeinlng_df. - Crea la media mobile a 5 giorni della variazione percentuale a 1 giorno del volume e assegnala alla colonna
Adj_Volume_1d_change_SMAinlng_df. - Traccia gli istogrammi di queste due nuove feature utilizzando la lista
new_features.
esercizio interattivo pratico
Prova questo esercizio completando questo codice di esempio.
# 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()