Implementazione 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ˉ (media) e s (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ˉ e s 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ˉ e s 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.
123456789101112131415161718192021222324252627from 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)
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
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
Implementazione 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ˉ (media) e s (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ˉ e s 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ˉ e s 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.
123456789101112131415161718192021222324252627from 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)
Grazie per i tuoi commenti!