Validation croisée avec mélange aléatoire
Comme vous vous en souvenez, la validation croisée consiste à diviser plusieurs fois vos données en ensembles d’entraînement et de test. À chaque itération, vous choisissez un ensemble d’entraînement et de test différent. Dans cet exercice, vous allez effectuer une validation croisée classique ShuffleSplit sur les données de valorisation d’entreprises vues plus tôt. Nous verrons ensuite les adaptations nécessaires pour les séries temporelles. Nous utiliserons les mêmes données historiques de prix pour plusieurs grandes entreprises.
Une instance de l’objet de régression linéaire (model) est disponible dans votre espace de travail, ainsi que la fonction r2_score() pour l’évaluation. Les données sont stockées dans les tableaux X et y. Nous avons également fourni une fonction utilitaire (visualize_predictions()) pour vous aider à visualiser les résultats.
Cet exercice fait partie du cours
Machine Learning for Time Series Data in Python
Instructions
- Initialisez un objet de validation croisée ShuffleSplit avec 10 divisions.
- Parcourez les divisions de CV à l’aide de cet objet. À chaque itération :
- Ajustez un modèle à l’aide des indices d’entraînement.
- Générez des prédictions à l’aide des indices de test, calculez le score du modèle (\(R^2\)) à partir des prédictions, et collectez les résultats.
Exercice interactif pratique
Essayez cet exercice en complétant cet exemple de code.
# Import ShuffleSplit and create the cross-validation object
from sklearn.model_selection import ShuffleSplit
cv = ____(____, random_state=1)
# Iterate through CV splits
results = []
for tr, tt in cv.____(X, y):
# Fit the model on training data
____(X[tr], y[tr])
# Generate predictions on the test data, score the predictions, and collect
prediction = ____(X[tt])
score = r2_score(____, ____)
results.append((prediction, score, tt))
# Custom function to quickly visualize predictions
visualize_predictions(results)