Korsvalidering med slumpmässig uppdelning
Som du kanske minns innebär korsvalidering att data delas upp i tränings- och testmängder flera gånger, där varje omgång använder en annan uppdelning. I den här övningen utför du en traditionell ShuffleSplit-korsvalidering på företagsvärdesdata från tidigare. Senare går vi igenom vilka anpassningar som behövs för tidsseriedata. Vi använder samma historiska prisdata för ett antal stora företag.
En instans av objektet för linjär regression (model) finns tillgänglig i din arbetsmiljö tillsammans med funktionen r2_score() för poängsättning. Data finns lagrat i arrayerna X och y. Vi har också tillhandahållit en hjälpfunktion (visualize_predictions()) för att visualisera resultaten.
Den här övningen är en del av kursen
Maskininlärning för tidsseriedata i Python
Övningsinstruktioner
- Initiera ett ShuffleSplit-korsvalideringsobjekt med 10 uppdelningar.
- Iterera genom CV-uppdelningarna med hjälp av det här objektet. För varje iteration:
- Anpassa en modell med hjälp av träningsindexen.
- Generera förutsägelser med hjälp av testindexen, poängsätt modellen (\(R^2\)) med förutsägelserna och samla in resultaten.
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
# 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)