Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Impara Validazione Incrociata | Modellazione
Introduzione al Machine Learning con Python

bookValidazione Incrociata

La suddivisione train-test presenta due svantaggi:

  1. Meno dati di addestramento, che può ridurre la qualità del modello;
  2. 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().

Note
Nota

È 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().

1234567891011
import 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())
copy

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.

question mark

Perché la cross-validation può essere preferita rispetto alla divisione train-test per valutare le prestazioni di un modello di machine learning?

Select the correct answer

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 4. Capitolo 4

Chieda ad AI

expand

Chieda ad AI

ChatGPT

Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione

Awesome!

Completion rate improved to 3.13

bookValidazione Incrociata

Scorri per mostrare il menu

La suddivisione train-test presenta due svantaggi:

  1. Meno dati di addestramento, che può ridurre la qualità del modello;
  2. 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().

Note
Nota

È 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().

1234567891011
import 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())
copy

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.

question mark

Perché la cross-validation può essere preferita rispetto alla divisione train-test per valutare le prestazioni di un modello di machine learning?

Select the correct answer

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 4. Capitolo 4
some-alt