Cross-validation con sklearn
Come spiegato nel Capitolo 2, l’overfitting dell’insieme di dati è un problema comune nell’analisi. Succede quando un modello impara i dati “a memoria”: ha ottime prestazioni sull’insieme su cui è stato addestrato, ma non riesce a generalizzare al di fuori di esso.
Anche se la tecnica di train/test split che hai visto nel Capitolo 2 assicura che il modello non faccia overfit sul training set, il tuning degli iperparametri può portare a fare overfit sulla componente di test, perché consiste nell’ottimizzare il modello per ottenere i risultati migliori proprio sul test set. Per questo è consigliato validare il modello su insiemi di test diversi. La K-fold cross-validation ci permette di farlo:
- suddivide l’insieme di dati in un training set e un testing set
- addestra il modello, effettua le predizioni e calcola uno score (puoi specificare se vuoi accuracy, precision, recall…)
- ripete il processo per k volte in totale
- restituisce la media dei 10 punteggi
In questo esercizio userai la Cross Validation sul nostro insieme di dati e valuterai i risultati con la funzione cross_val_score.
Questo esercizio fa parte del corso
HR Analytics: prevedere l'abbandono dei dipendenti in Python
Istruzioni dell'esercizio
- Importa la funzione per implementare la cross-validation,
cross_val_score(), dal modulosklearn.model_selection. - Stampa lo score di cross-validation per il tuo modello, specificando 10 fold con l’iperparametro
cv.
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
# Import the function for implementing cross validation
from sklearn.model_selection import ____
# Use that function to print the cross validation score for 10 folds
print(____(model,features,target,____=10))