Inizia subitoInizia gratis

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

Visualizza corso

Istruzioni dell'esercizio

  • Crea la variazione percentuale a 1 giorno del volume (usa pct_change() di pandas) e assegnala alla colonna Adj_Volume_1d_change in lng_df.
  • Crea la media mobile a 5 giorni della variazione percentuale a 1 giorno del volume e assegnala alla colonna Adj_Volume_1d_change_SMA in lng_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()
Modifica ed esegui il codice