Cross-validation con mescolamento
Come ricorderai, la cross-validation consiste nello suddividere i dati più volte in insiemi di training e di test. Ogni volta scegli un insieme di training e di test diverso. In questo esercizio eseguirai una classica cross-validation ShuffleSplit sui dati del valore aziendale visti in precedenza. Più avanti vedremo quali modifiche servono per le serie temporali. Useremo gli stessi dati storici dei prezzi per alcune grandi aziende.
Nel tuo workspace è disponibile un'istanza dell'oggetto di regressione lineare (model) insieme alla funzione r2_score() per il punteggio. I dati sono memorizzati negli array X e y. Abbiamo anche fornito una funzione di supporto (visualize_predictions()) per aiutarti a visualizzare i risultati.
Questo esercizio fa parte del corso
Machine Learning per dati di serie temporali in Python
Istruzioni dell'esercizio
- Inizializza un oggetto di cross-validation ShuffleSplit con 10 suddivisioni.
- Itera tra le suddivisioni di CV usando questo oggetto. A ogni iterazione:
- Addestra un modello usando gli indici di training.
- Genera le predizioni usando gli indici di test, calcola il punteggio del modello (\(R^2\)) usando le predizioni e raccogli i risultati.
esercizio interattivo pratico
Prova questo esercizio completando questo codice di esempio.
# 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)