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

bookClassificatore 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:

  1. Per una nuova istanza, trova le k istanze più vicine (in base alle caratteristiche) del set di addestramento. Queste k istanze sono chiamate vicini;
  2. 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.

12345678910111213
import 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))
copy

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.

question mark

Come fa il KNeighborsClassifier a fare previsioni per una nuova istanza?

Select the correct answer

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 4. Capitolo 2

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

bookClassificatore 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:

  1. Per una nuova istanza, trova le k istanze più vicine (in base alle caratteristiche) del set di addestramento. Queste k istanze sono chiamate vicini;
  2. 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.

12345678910111213
import 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))
copy

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.

question mark

Come fa il KNeighborsClassifier a fare previsioni per una nuova istanza?

Select the correct answer

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 4. Capitolo 2
some-alt