Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Impara Valutazione del Modello | Modellazione
Introduzione al ML con Scikit-Learn

bookValutazione del Modello

Quando si costruisce un modello per le previsioni, è fondamentale comprendere quanto bene il modello si comporta prima di effettuare qualsiasi previsione reale.

Valutare un modello significa analizzare le sue prestazioni nel fare previsioni. Per questo motivo, il metodo .score() è importante.

Tuttavia, valutare il modello utilizzando i dati del set di addestramento può produrre risultati inaffidabili perché un modello tende a comportarsi meglio sui dati su cui è stato addestrato rispetto a dati nuovi e mai visti prima. Pertanto, è fondamentale valutare il modello su dati che non ha mai visto per comprendere realmente le sue prestazioni.

In termini più formali, desideriamo un modello che generalizzi bene.

Possiamo ottenere questo risultato suddividendo casualmente i dati in un set di addestramento e un set di test.

Ora possiamo addestrare il modello sul set di addestramento e valutarne le prestazioni sul set di test.

model.fit(X_train, y_train)
print(model.score(X_test, y_test))

Per suddividere i dati casualmente, possiamo utilizzare la funzione train_test_split() dal modulo sklearn.model_selection.

Tipicamente, per un set di test, si utilizza 25-40% dei dati quando il dataset è piccolo, 10-30% per un dataset di medie dimensioni e meno del 10% per dataset di grandi dimensioni.

Nel nostro esempio, con solo 342 istanze — classificato come un dataset piccolo — assegneremo 33% dei dati al set di test.

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33)

Ci riferiamo al set di addestramento come X_train e y_train, e al set di test come X_test e y_test.

123456789101112131415
import pandas as pd from sklearn.neighbors import KNeighborsClassifier from sklearn.model_selection import train_test_split 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'] # Train-test split X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33) # Initialize and train a model knn5 = KNeighborsClassifier().fit(X_train, y_train) # Trained 5 neighbors model knn1 = KNeighborsClassifier(n_neighbors=1).fit(X_train, y_train) # Trained 1 neighbor model # Print the scores of both models print('5 Neighbors score:',knn5.score(X_test, y_test)) print('1 Neighbor score:',knn1.score(X_test, y_test))
copy

Nota che ora utilizziamo il set di addestramento in .fit(X_train, y_train) e il set di test in .score(X_test, y_test).

Poiché train_test_split() suddivide il dataset casualmente, ogni volta che esegui il codice, ci sono set di addestramento e test diversi. Puoi eseguirlo più volte e vedere che i punteggi variano. Questi punteggi diventerebbero più stabili se la dimensione del dataset aumentasse.

question mark

Per ottenere una suddivisione train-test del 67%/33%, prendiamo un terzo delle prime righe come set di test e il resto come set di addestramento. Questa affermazione è corretta?

Select the correct answer

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 4. Capitolo 3

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

bookValutazione del Modello

Scorri per mostrare il menu

Quando si costruisce un modello per le previsioni, è fondamentale comprendere quanto bene il modello si comporta prima di effettuare qualsiasi previsione reale.

Valutare un modello significa analizzare le sue prestazioni nel fare previsioni. Per questo motivo, il metodo .score() è importante.

Tuttavia, valutare il modello utilizzando i dati del set di addestramento può produrre risultati inaffidabili perché un modello tende a comportarsi meglio sui dati su cui è stato addestrato rispetto a dati nuovi e mai visti prima. Pertanto, è fondamentale valutare il modello su dati che non ha mai visto per comprendere realmente le sue prestazioni.

In termini più formali, desideriamo un modello che generalizzi bene.

Possiamo ottenere questo risultato suddividendo casualmente i dati in un set di addestramento e un set di test.

Ora possiamo addestrare il modello sul set di addestramento e valutarne le prestazioni sul set di test.

model.fit(X_train, y_train)
print(model.score(X_test, y_test))

Per suddividere i dati casualmente, possiamo utilizzare la funzione train_test_split() dal modulo sklearn.model_selection.

Tipicamente, per un set di test, si utilizza 25-40% dei dati quando il dataset è piccolo, 10-30% per un dataset di medie dimensioni e meno del 10% per dataset di grandi dimensioni.

Nel nostro esempio, con solo 342 istanze — classificato come un dataset piccolo — assegneremo 33% dei dati al set di test.

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33)

Ci riferiamo al set di addestramento come X_train e y_train, e al set di test come X_test e y_test.

123456789101112131415
import pandas as pd from sklearn.neighbors import KNeighborsClassifier from sklearn.model_selection import train_test_split 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'] # Train-test split X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33) # Initialize and train a model knn5 = KNeighborsClassifier().fit(X_train, y_train) # Trained 5 neighbors model knn1 = KNeighborsClassifier(n_neighbors=1).fit(X_train, y_train) # Trained 1 neighbor model # Print the scores of both models print('5 Neighbors score:',knn5.score(X_test, y_test)) print('1 Neighbor score:',knn1.score(X_test, y_test))
copy

Nota che ora utilizziamo il set di addestramento in .fit(X_train, y_train) e il set di test in .score(X_test, y_test).

Poiché train_test_split() suddivide il dataset casualmente, ogni volta che esegui il codice, ci sono set di addestramento e test diversi. Puoi eseguirlo più volte e vedere che i punteggi variano. Questi punteggi diventerebbero più stabili se la dimensione del dataset aumentasse.

question mark

Per ottenere una suddivisione train-test del 67%/33%, prendiamo un terzo delle prime righe come set di test e il resto come set di addestramento. Questa affermazione è corretta?

Select the correct answer

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 4. Capitolo 3
some-alt