Validazione Incrociata
La suddivisione train-test presenta due svantaggi:
- Meno dati di addestramento, che può ridurre la qualità del modello;
- Dipendenza dalla suddivisione casuale, causando risultati instabili. Per superare questi limiti, si utilizza la cross-validation.
Per prima cosa, suddividere l'intero dataset in 5 parti uguali, chiamate fold.
Successivamente, utilizzare un fold come set di test e combinare i fold rimanenti per formare il set di addestramento.
Come in qualsiasi processo di valutazione, il set di addestramento viene utilizzato per addestrare il modello, mentre il set di test viene utilizzato per misurarne le prestazioni.
Il processo viene ripetuto in modo che ciascun fold serva una volta come set di test, mentre i fold rimanenti costituiscono il set di addestramento.
La cross-validazione produce più punteggi di accuratezza—uno per ogni suddivisione.
La loro media rappresenta la prestazione media del modello.
In Python, questo viene calcolato con cross_val_score().
È possibile scegliere qualsiasi numero di fold. Ad esempio, utilizzare 10 fold significa addestrare su 9 parti e testare su 1.
Questo si imposta tramite il parametro cv in cross_val_score().
1234567891011import pandas as pd from sklearn.neighbors import KNeighborsClassifier from sklearn.model_selection import cross_val_score df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/a65bbc96-309e-4df9-a790-a1eb8c815a1c/penguins_pipelined.csv') # Assign X, y variables (X is already preprocessed and y is already encoded) X, y = df.drop('species', axis=1), df['species'] # Print the cross-val scores and the mean for KNeighborsClassifier with 5 neighbors scores = cross_val_score(KNeighborsClassifier(), X, y) print(scores) print(scores.mean())
La cross-validation è più affidabile ma più lenta, poiché il modello viene addestrato e valutato n volte.
È ampiamente utilizzata nell'ottimizzazione degli iperparametri, dove la cross-validation viene ripetuta per ogni valore di iperparametro—ad esempio, testando diversi valori di k in k-NN.
Questo aiuta a scegliere l'opzione che ottiene risultati migliori in modo costante.
Grazie per i tuoi commenti!
Chieda ad AI
Chieda ad AI
Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione
Awesome!
Completion rate improved to 3.13
Validazione Incrociata
Scorri per mostrare il menu
La suddivisione train-test presenta due svantaggi:
- Meno dati di addestramento, che può ridurre la qualità del modello;
- Dipendenza dalla suddivisione casuale, causando risultati instabili. Per superare questi limiti, si utilizza la cross-validation.
Per prima cosa, suddividere l'intero dataset in 5 parti uguali, chiamate fold.
Successivamente, utilizzare un fold come set di test e combinare i fold rimanenti per formare il set di addestramento.
Come in qualsiasi processo di valutazione, il set di addestramento viene utilizzato per addestrare il modello, mentre il set di test viene utilizzato per misurarne le prestazioni.
Il processo viene ripetuto in modo che ciascun fold serva una volta come set di test, mentre i fold rimanenti costituiscono il set di addestramento.
La cross-validazione produce più punteggi di accuratezza—uno per ogni suddivisione.
La loro media rappresenta la prestazione media del modello.
In Python, questo viene calcolato con cross_val_score().
È possibile scegliere qualsiasi numero di fold. Ad esempio, utilizzare 10 fold significa addestrare su 9 parti e testare su 1.
Questo si imposta tramite il parametro cv in cross_val_score().
1234567891011import pandas as pd from sklearn.neighbors import KNeighborsClassifier from sklearn.model_selection import cross_val_score df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/a65bbc96-309e-4df9-a790-a1eb8c815a1c/penguins_pipelined.csv') # Assign X, y variables (X is already preprocessed and y is already encoded) X, y = df.drop('species', axis=1), df['species'] # Print the cross-val scores and the mean for KNeighborsClassifier with 5 neighbors scores = cross_val_score(KNeighborsClassifier(), X, y) print(scores) print(scores.mean())
La cross-validation è più affidabile ma più lenta, poiché il modello viene addestrato e valutato n volte.
È ampiamente utilizzata nell'ottimizzazione degli iperparametri, dove la cross-validation viene ripetuta per ogni valore di iperparametro—ad esempio, testando diversi valori di k in k-NN.
Questo aiuta a scegliere l'opzione che ottiene risultati migliori in modo costante.
Grazie per i tuoi commenti!