Cross-validatie met schufflen
Zoals je je herinnert, is cross-validatie het proces waarbij je je data meerdere keren in training- en testsets opdeelt. Elke keer dat je dit doet, kies je een andere training- en testset. In deze oefening voer je een traditionele ShuffleSplit-cross-validatie uit op de bedrijfswaardedata van eerder. Later behandelen we welke aanpassingen nodig zijn voor tijdreeksen. De data die we gebruiken zijn dezelfde historische prijsgegevens voor een aantal grote bedrijven.
Een instantie van het Linear regression-object (model) is beschikbaar in je werkruimte, samen met de functie r2_score() voor het scoren. De data staan ook in arrays X en y. We hebben ook een helperfunctie (visualize_predictions()) toegevoegd om de resultaten te visualiseren.
Deze oefening maakt deel uit van de cursus
Machine Learning voor tijdreeksgegevens in Python
Oefeninstructies
- Initialiseer een ShuffleSplit-cross-validatieobject met 10 splits.
- Itereer door de CV-splits met dit object. Voer bij elke iteratie het volgende uit:
- Fit een model met de trainingsindices.
- Genereer voorspellingen met de testindices, bereken de modelscore (\(R^2\)) met de voorspellingen en verzamel de resultaten.
Interactieve oefening met praktijkervaring
Probeer deze oefening door deze voorbeeldcode aan te vullen.
# 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)