Classificatore KNeighbors
Quando si costruisce un estimatore finale per una pipeline, è stato utilizzato il modello KNeighborsClassifier
. Questo capitolo spiega brevemente come funziona.
k-Nearest Neighbors
k-nearest neighbors è un algoritmo di machine learning basato sull'individuazione delle istanze più simili nel set di addestramento per effettuare una previsione.
KNeighborsClassifier
è un'implementazione di scikit-learn di questo algoritmo per un compito di classificazione. Ecco come effettua una previsione:
- Per una nuova istanza, trova le k istanze più vicine (in base alle caratteristiche) del set di addestramento. Queste k istanze sono chiamate vicini;
- Trova la classe più frequente tra i k vicini. Quella classe sarà la previsione per la nuova istanza.
k è il numero di vicini che si desidera considerare. È necessario specificare questo numero durante l'inizializzazione del modello. Per impostazione predefinita, k è impostato a 5.
Con valori diversi di k, il modello produce previsioni differenti. Questo è noto come iperparametro — un parametro che deve essere specificato in anticipo e che può modificare le previsioni del modello.
È possibile provare a impostare diversi valori di k e trovare quello ottimale per il proprio compito. Questo processo di regolazione degli iperparametri è noto come ottimizzazione degli iperparametri e può aiutare a ottimizzare le prestazioni del modello.
KNeighborsClassifier durante .fit()
A differenza della maggior parte dei modelli di machine learning, il KNeighborsClassifier
non fa altro che memorizzare il set di addestramento durante l'addestramento. Tuttavia, anche se l'addestramento non richiede tempo, è obbligatorio chiamare .fit(X, y)
affinché il modello memorizzi il set di addestramento.
KNeighborsClassifier durante .predict()
Durante la previsione, il KNeighborsClassifier
individua in modo greedy i k vicini più prossimi per ogni nuova istanza.
Esempio di codice KNeighborsClassifier
Creiamo un KNeighborsClassifier
, addestriamolo e otteniamo la sua accuratezza utilizzando il metodo .score()
. Per semplicità, i dati nel file .csv sono già completamente preprocessati.
Per specificare il valore di k, utilizzare l'argomento n_neighbors
del costruttore di KNeighborsClassifier
. Proveremo i valori 5 (valore predefinito) e 1.
12345678910111213import pandas as pd from sklearn.neighbors import KNeighborsClassifier 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'] # Initialize and train a model knn5 = KNeighborsClassifier().fit(X, y) # Trained 5 neighbors model knn1 = KNeighborsClassifier(n_neighbors=1).fit(X, y) # Trained 1 neighbor model # Print the scores of both models print('5 Neighbors score:',knn5.score(X, y)) print('1 Neighbor score:',knn1.score(X, y))
Abbiamo ottenuto una buona accuratezza! Con un 1-nearest neighbor, l'accuratezza è addirittura perfetta.
Tuttavia, dovremmo fidarci di questi punteggi? No, perché abbiamo valutato il modello sul training set—gli stessi dati su cui è stato addestrato. Naturalmente, predirà bene le istanze che ha già visto.
Per comprendere davvero quanto il modello funzioni bene, dovremmo valutarlo su istanze che il modello non ha mai visto prima.
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
Classificatore KNeighbors
Scorri per mostrare il menu
Quando si costruisce un estimatore finale per una pipeline, è stato utilizzato il modello KNeighborsClassifier
. Questo capitolo spiega brevemente come funziona.
k-Nearest Neighbors
k-nearest neighbors è un algoritmo di machine learning basato sull'individuazione delle istanze più simili nel set di addestramento per effettuare una previsione.
KNeighborsClassifier
è un'implementazione di scikit-learn di questo algoritmo per un compito di classificazione. Ecco come effettua una previsione:
- Per una nuova istanza, trova le k istanze più vicine (in base alle caratteristiche) del set di addestramento. Queste k istanze sono chiamate vicini;
- Trova la classe più frequente tra i k vicini. Quella classe sarà la previsione per la nuova istanza.
k è il numero di vicini che si desidera considerare. È necessario specificare questo numero durante l'inizializzazione del modello. Per impostazione predefinita, k è impostato a 5.
Con valori diversi di k, il modello produce previsioni differenti. Questo è noto come iperparametro — un parametro che deve essere specificato in anticipo e che può modificare le previsioni del modello.
È possibile provare a impostare diversi valori di k e trovare quello ottimale per il proprio compito. Questo processo di regolazione degli iperparametri è noto come ottimizzazione degli iperparametri e può aiutare a ottimizzare le prestazioni del modello.
KNeighborsClassifier durante .fit()
A differenza della maggior parte dei modelli di machine learning, il KNeighborsClassifier
non fa altro che memorizzare il set di addestramento durante l'addestramento. Tuttavia, anche se l'addestramento non richiede tempo, è obbligatorio chiamare .fit(X, y)
affinché il modello memorizzi il set di addestramento.
KNeighborsClassifier durante .predict()
Durante la previsione, il KNeighborsClassifier
individua in modo greedy i k vicini più prossimi per ogni nuova istanza.
Esempio di codice KNeighborsClassifier
Creiamo un KNeighborsClassifier
, addestriamolo e otteniamo la sua accuratezza utilizzando il metodo .score()
. Per semplicità, i dati nel file .csv sono già completamente preprocessati.
Per specificare il valore di k, utilizzare l'argomento n_neighbors
del costruttore di KNeighborsClassifier
. Proveremo i valori 5 (valore predefinito) e 1.
12345678910111213import pandas as pd from sklearn.neighbors import KNeighborsClassifier 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'] # Initialize and train a model knn5 = KNeighborsClassifier().fit(X, y) # Trained 5 neighbors model knn1 = KNeighborsClassifier(n_neighbors=1).fit(X, y) # Trained 1 neighbor model # Print the scores of both models print('5 Neighbors score:',knn5.score(X, y)) print('1 Neighbor score:',knn1.score(X, y))
Abbiamo ottenuto una buona accuratezza! Con un 1-nearest neighbor, l'accuratezza è addirittura perfetta.
Tuttavia, dovremmo fidarci di questi punteggi? No, perché abbiamo valutato il modello sul training set—gli stessi dati su cui è stato addestrato. Naturalmente, predirà bene le istanze che ha già visto.
Per comprendere davvero quanto il modello funzioni bene, dovremmo valutarlo su istanze che il modello non ha mai visto prima.
Grazie per i tuoi commenti!