Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Impara Implementazione di k-NN | Classificatore K-Nn
Classificazione con Python

bookImplementazione di k-NN

KNeighborsClassifier

L'implementazione di k-Nearest Neighbors è piuttosto semplice. È sufficiente importare e utilizzare la classe KNeighborsClassifier.

Dopo aver importato la classe e creato un oggetto della classe come segue:

# Importing the class
from sklearn.neighbors import KNeighborsClassifier
knn = KNeighborsClassifier(n_neighbors=3)

È necessario fornire i dati di addestramento utilizzando il metodo .fit():

knn.fit(X_scaled, y)

E questo è tutto! Ora è possibile prevedere nuovi valori.

y_pred = knn.predict(X_new_scaled)

Scalare i dati

Tuttavia, ricordare che i dati devono essere scalati. StandardScaler è comunemente utilizzato a questo scopo:

È necessario calcolare xˉ\bar x (media) e ss (deviazione standard) sul set di addestramento utilizzando il metodo .fit() oppure .fit_transform(). Questo passaggio garantisce che i parametri di scaling siano derivati dai dati di addestramento.

Quando si dispone di un set di test da prevedere, è necessario utilizzare gli stessi xˉ\bar x e ss per preprocessare questi dati tramite .transform(). Questa coerenza è fondamentale perché assicura che i dati di test siano scalati nello stesso modo dei dati di addestramento, mantenendo l'integrità delle previsioni del modello.

# Importing the class
from sklearn.preprocessing import StandardScaler

scaler = StandardScaler()
# Calculating x̄ and s and scaling `X_train`
X_train_scaled = scaler.fit_transform(X_train)
# Scaling `X_test` with x̄ and s calculated in the previous line
X_test_scaled = scaler.transform(X_test)

Se si utilizzano xˉ\bar x e ss diversi per il set di addestramento e quello di test, le previsioni saranno probabilmente meno accurate.

Esempio

Analizziamo un esempio semplice in cui si desidera prevedere se una persona apprezzerà Star Wars VI in base alle sue valutazioni di Star Wars IV e V. I dati sono tratti da The Movies Dataset con ulteriore preprocessing. Una persona si considera che apprezzi Star Wars VI se lo valuta più di 4 (su 5).

Dopo aver addestrato il modello, verranno effettuate previsioni per due individui del set di test. Il primo individuo valuta Star Wars IV e V rispettivamente con 5 e 5, mentre il secondo individuo li valuta con 4.5 e 4.

123456789101112131415161718192021222324252627
from sklearn.neighbors import KNeighborsClassifier from sklearn.preprocessing import StandardScaler import numpy as np import pandas as pd import warnings warnings.filterwarnings('ignore') df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/b71ff7ac-3932-41d2-a4d8-060e24b00129/starwars_binary.csv') # Dropping the target column and leaving only features as `X_train` X_train = df.drop('StarWars6', axis=1) # Storing target column as `y_train`, which contains 1 (liked SW 6) or 0 (didn't like SW 6) y_train = df['StarWars6'] # Test set of two people X_test = np.array([[5, 5], [4.5, 4]]) # Scaling the data scaler = StandardScaler() X_train = scaler.fit_transform(X_train) X_test = scaler.transform(X_test) # Building a model and predict new instances knn = KNeighborsClassifier(n_neighbors=13).fit(X_train, y_train) y_pred = knn.predict(X_test) print(y_pred)
copy
question mark

Quali tra i seguenti nomi di classi di scikit-learn vengono utilizzati per implementare il classificatore k-Nearest Neighbors e per scalare le caratteristiche durante la preparazione dei dati per k-NN?

Select the correct answer

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 1. 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

Suggested prompts:

Can you explain what the output of the code means?

How do I choose the best value for n_neighbors in KNeighborsClassifier?

Why is it important to scale the data before using KNeighborsClassifier?

Awesome!

Completion rate improved to 4.17

bookImplementazione di k-NN

Scorri per mostrare il menu

KNeighborsClassifier

L'implementazione di k-Nearest Neighbors è piuttosto semplice. È sufficiente importare e utilizzare la classe KNeighborsClassifier.

Dopo aver importato la classe e creato un oggetto della classe come segue:

# Importing the class
from sklearn.neighbors import KNeighborsClassifier
knn = KNeighborsClassifier(n_neighbors=3)

È necessario fornire i dati di addestramento utilizzando il metodo .fit():

knn.fit(X_scaled, y)

E questo è tutto! Ora è possibile prevedere nuovi valori.

y_pred = knn.predict(X_new_scaled)

Scalare i dati

Tuttavia, ricordare che i dati devono essere scalati. StandardScaler è comunemente utilizzato a questo scopo:

È necessario calcolare xˉ\bar x (media) e ss (deviazione standard) sul set di addestramento utilizzando il metodo .fit() oppure .fit_transform(). Questo passaggio garantisce che i parametri di scaling siano derivati dai dati di addestramento.

Quando si dispone di un set di test da prevedere, è necessario utilizzare gli stessi xˉ\bar x e ss per preprocessare questi dati tramite .transform(). Questa coerenza è fondamentale perché assicura che i dati di test siano scalati nello stesso modo dei dati di addestramento, mantenendo l'integrità delle previsioni del modello.

# Importing the class
from sklearn.preprocessing import StandardScaler

scaler = StandardScaler()
# Calculating x̄ and s and scaling `X_train`
X_train_scaled = scaler.fit_transform(X_train)
# Scaling `X_test` with x̄ and s calculated in the previous line
X_test_scaled = scaler.transform(X_test)

Se si utilizzano xˉ\bar x e ss diversi per il set di addestramento e quello di test, le previsioni saranno probabilmente meno accurate.

Esempio

Analizziamo un esempio semplice in cui si desidera prevedere se una persona apprezzerà Star Wars VI in base alle sue valutazioni di Star Wars IV e V. I dati sono tratti da The Movies Dataset con ulteriore preprocessing. Una persona si considera che apprezzi Star Wars VI se lo valuta più di 4 (su 5).

Dopo aver addestrato il modello, verranno effettuate previsioni per due individui del set di test. Il primo individuo valuta Star Wars IV e V rispettivamente con 5 e 5, mentre il secondo individuo li valuta con 4.5 e 4.

123456789101112131415161718192021222324252627
from sklearn.neighbors import KNeighborsClassifier from sklearn.preprocessing import StandardScaler import numpy as np import pandas as pd import warnings warnings.filterwarnings('ignore') df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/b71ff7ac-3932-41d2-a4d8-060e24b00129/starwars_binary.csv') # Dropping the target column and leaving only features as `X_train` X_train = df.drop('StarWars6', axis=1) # Storing target column as `y_train`, which contains 1 (liked SW 6) or 0 (didn't like SW 6) y_train = df['StarWars6'] # Test set of two people X_test = np.array([[5, 5], [4.5, 4]]) # Scaling the data scaler = StandardScaler() X_train = scaler.fit_transform(X_train) X_test = scaler.transform(X_test) # Building a model and predict new instances knn = KNeighborsClassifier(n_neighbors=13).fit(X_train, y_train) y_pred = knn.predict(X_test) print(y_pred)
copy
question mark

Quali tra i seguenti nomi di classi di scikit-learn vengono utilizzati per implementare il classificatore k-Nearest Neighbors e per scalare le caratteristiche durante la preparazione dei dati per k-NN?

Select the correct answer

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 1. Capitolo 4
some-alt