CommencerCommencez gratuitement

Feature engineering à partir du volume

Nous allons utiliser des modèles non linéaires pour obtenir des prédictions plus précises. Avec les modèles linéaires, les features doivent être linéairement corrélées à la cible. D'autres modèles de machine learning peuvent combiner les features de manière non linéaire. Par exemple, et si le prix augmente lorsque la moyenne mobile du prix augmente, mais que la moyenne mobile du volume diminue ? La seule façon de capturer ces interactions est soit de multiplier les features, soit d'utiliser un algorithme de machine learning capable de gérer la non-linéarité (par exemple des random forests).

Pour intégrer davantage d'informations susceptibles d'interagir avec d'autres features, nous pouvons ajouter des features faiblement corrélées. Nous allons d'abord ajouter les données de volume, disponibles dans lng_df sous forme de colonne Adj_Volume.

Avant de commencer, rappelez-vous que pour les fonctions de TA-Lib (comme SMA()), vous devez fournir des tableaux Numpy, et non des objets pandas. Vous pouvez utiliser l'attribut .values d'une Series ou d'un DataFrame pandas pour les convertir en tableau Numpy.

Cet exercice fait partie du cours

<cours>Machine Learning pour la finance en Python</cours>
Voir le cours

Instructions de l’exercice

  • Créez la variation en pourcentage du volume sur 1 jour (utilisez pct_change() de pandas) et affectez-la à la colonne Adj_Volume_1d_change de lng_df.
  • Créez une moyenne mobile sur 5 jours de cette variation en pourcentage sur 1 jour du volume, et affectez-la à la colonne Adj_Volume_1d_change_SMA de lng_df.
  • Tracez les histogrammes de ces deux nouvelles features à l'aide de la liste new_features.

Exercice interactif pratique

Essayez cet exercice en complétant ce code d’exemple.

# 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()
Modifier et exécuter le code