Standardiser les données
Certains modèles, comme K-nearest neighbors (KNN) et les réseaux de neurones, donnent de meilleurs résultats avec des données mises à l'échelle — nous allons donc standardiser nos données.
Nous allons aussi retirer des variables peu importantes (jour de la semaine), selon l'importance des variables, en indexant les DataFrames de caractéristiques avec .iloc[]. KNN utilise des distances pour trouver des points similaires lors des prédictions, donc les caractéristiques à grande échelle dominent celles à petite échelle. Mettre les données à l'échelle corrige ce problème.
sklearn et sa fonction scale() permettent de standardiser les données, ce qui fixe la moyenne à 0 et l'écart type à 1. Idéalement, on utiliserait StandardScaler avec fit_transform() sur les données d'entraînement et fit() sur les données de test, mais nous sommes limités à 15 lignes de code ici.
Une fois les données mises à l'échelle, nous vérifierons que tout a bien fonctionné en traçant des histogrammes des données.
Cette activité fait partie du cours
Machine Learning pour la finance en Python
Instructions de l’exercice
- Retirez les caractéristiques de jour de la semaine des caractéristiques d'entraînement/test à l'aide de
.iloc(les jours de la semaine correspondent aux 4 dernières caractéristiques). - Standardisez
train_featuresettest_featuresavecscale()de sklearn; enregistrez les caractéristiques mises à l'échelle sousscaled_train_featuresetscaled_test_features. - Tracez un histogramme de la moyenne mobile du RSI sur 14 jours (indexée à
[:, 2]) à partir detrain_featuresnon mises à l'échelle sur le premier sous-graphe (ax[0]). - Tracez un histogramme de la moyenne mobile du RSI standardisée sur le deuxième sous-graphe (
ax[1]).
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
from sklearn.preprocessing import scale
# Remove unimportant features (weekdays)
train_features = train_features.iloc[:, :-4]
test_features = test_features.____
# Standardize the train and test features
scaled_train_features = scale(train_features)
scaled_test_features = ____
# Plot histograms of the 14-day SMA RSI before and after scaling
f, ax = plt.subplots(nrows=2, ncols=1)
train_features.iloc[:, 2].hist(ax=____)
ax[1].hist(scaled_train_features[:, 2])
plt.show()