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

Validazione 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 questo problema, si utilizza la cross-validation.

Per prima cosa, suddividere l'intero dataset in 5 parti uguali, chiamate fold.

folds_split

Successivamente, utilizzare una fold come set di test e combinare le restanti fold per formare il set di addestramento.

Fase 2 della CV

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.

CrossValStep3

Il processo viene ripetuto in modo che ciascun fold funzioni una volta come set di test, mentre i fold rimanenti costituiscono il set di addestramento.

CV step 3

La validazione incrociata 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().

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

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 offre prestazioni migliori in modo costante.

question mark

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

Seleziona la risposta corretta

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

Sezione 4. Capitolo 4
some-alt