Valutazione del Modello
Quando si costruisce un modello predittivo, è fondamentale determinare quanto bene esso si comporta prima di utilizzarlo per previsioni reali.
La valutazione del modello misura quanto accuratamente il modello effettua le previsioni. Il metodo .score()
fornisce questa valutazione.
Valutare le prestazioni sul set di addestramento può essere fuorviante, poiché il modello tende a comportarsi meglio sui dati già visti. Per ottenere una misura realistica, la valutazione deve essere effettuata su dati non visti.
In termini formali, l'obiettivo è creare un modello che generalizzi bene.
La generalizzazione è la capacità del modello di comportarsi efficacemente su nuovi dati non visti, oltre ai dati su cui è stato addestrato. Misura quanto accuratamente le previsioni di un modello possono essere applicate a scenari reali al di fuori del dataset di addestramento.
Questo può essere ottenuto suddividendo casualmente il dataset in due parti: un set di addestramento per adattare il modello e un set di test per la valutazione.
Addestrare il modello utilizzando il set di addestramento e poi valutarlo sul set di test:
model.fit(X_train, y_train)
print(model.score(X_test, y_test))
Per creare una suddivisione casuale dei dati, utilizzare la funzione train_test_split()
dal modulo sklearn.model_selection
.
Generalmente, la dimensione del set di test dipende dal dataset: 25–40% per dataset piccoli, 10–30% per quelli medi e meno del 10% per dataset grandi.
In questo esempio, con solo 342 istanze (un dataset piccolo), assegnare 33% al set di test:
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33)
Qui, X_train
e y_train
rappresentano il set di addestramento, mentre X_test
e y_test
rappresentano il set di test.
123456789101112131415import 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))
Il modello viene ora addestrato con il training set utilizzando .fit(X_train, y_train)
e valutato con il test set utilizzando .score(X_test, y_test)
.
Poiché train_test_split()
suddivide i dati casualmente, i set di training e test differiscono a ogni esecuzione, il che porta a punteggi variabili. Con un dataset più grande, questi punteggi diventerebbero più stabili.
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
Valutazione del Modello
Scorri per mostrare il menu
Quando si costruisce un modello predittivo, è fondamentale determinare quanto bene esso si comporta prima di utilizzarlo per previsioni reali.
La valutazione del modello misura quanto accuratamente il modello effettua le previsioni. Il metodo .score()
fornisce questa valutazione.
Valutare le prestazioni sul set di addestramento può essere fuorviante, poiché il modello tende a comportarsi meglio sui dati già visti. Per ottenere una misura realistica, la valutazione deve essere effettuata su dati non visti.
In termini formali, l'obiettivo è creare un modello che generalizzi bene.
La generalizzazione è la capacità del modello di comportarsi efficacemente su nuovi dati non visti, oltre ai dati su cui è stato addestrato. Misura quanto accuratamente le previsioni di un modello possono essere applicate a scenari reali al di fuori del dataset di addestramento.
Questo può essere ottenuto suddividendo casualmente il dataset in due parti: un set di addestramento per adattare il modello e un set di test per la valutazione.
Addestrare il modello utilizzando il set di addestramento e poi valutarlo sul set di test:
model.fit(X_train, y_train)
print(model.score(X_test, y_test))
Per creare una suddivisione casuale dei dati, utilizzare la funzione train_test_split()
dal modulo sklearn.model_selection
.
Generalmente, la dimensione del set di test dipende dal dataset: 25–40% per dataset piccoli, 10–30% per quelli medi e meno del 10% per dataset grandi.
In questo esempio, con solo 342 istanze (un dataset piccolo), assegnare 33% al set di test:
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33)
Qui, X_train
e y_train
rappresentano il set di addestramento, mentre X_test
e y_test
rappresentano il set di test.
123456789101112131415import 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))
Il modello viene ora addestrato con il training set utilizzando .fit(X_train, y_train)
e valutato con il test set utilizzando .score(X_test, y_test)
.
Poiché train_test_split()
suddivide i dati casualmente, i set di training e test differiscono a ogni esecuzione, il che porta a punteggi variabili. Con un dataset più grande, questi punteggi diventerebbero più stabili.
Grazie per i tuoi commenti!