Implementatie van k-NN
KNeighborsClassifier
Het implementeren van k-Nearest Neighbors is vrij eenvoudig. Het enige wat nodig is, is het importeren en gebruiken van de KNeighborsClassifier klasse.
Nadat de klasse is geïmporteerd en een klasse-object is aangemaakt zoals hieronder:
# Importing the class
from sklearn.neighbors import KNeighborsClassifier
knn = KNeighborsClassifier(n_neighbors=3)
Moet de trainingsdata worden aangeboden via de .fit() methode:
knn.fit(X_scaled, y)
En dat is alles! Nu kunnen nieuwe waarden worden voorspeld.
y_pred = knn.predict(X_new_scaled)
Gegevens schalen
Houd er echter rekening mee dat de gegevens geschaald moeten worden. StandardScaler wordt hiervoor vaak gebruikt:
Bereken xˉ en s alleen op de trainingsset met behulp van .fit() of .fit_transform().
Gebruik vervolgens .transform() op de testset zodat beide sets identiek worden geschaald:
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)
Het gebruik van verschillende schaalwaarden voor train en test schaadt de voorspellingen.
Voorbeeld
We voorspellen of een persoon Star Wars VI leuk vindt op basis van hun beoordelingen voor Episodes IV en V (uit The Movies Dataset).
Na het trainen testen we twee gebruikers: één beoordeelde IV/V als 5 en 5, de ander als 4.5 en 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)
Bedankt voor je feedback!
Vraag AI
Vraag AI
Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.
Awesome!
Completion rate improved to 4.17
Implementatie van k-NN
Veeg om het menu te tonen
KNeighborsClassifier
Het implementeren van k-Nearest Neighbors is vrij eenvoudig. Het enige wat nodig is, is het importeren en gebruiken van de KNeighborsClassifier klasse.
Nadat de klasse is geïmporteerd en een klasse-object is aangemaakt zoals hieronder:
# Importing the class
from sklearn.neighbors import KNeighborsClassifier
knn = KNeighborsClassifier(n_neighbors=3)
Moet de trainingsdata worden aangeboden via de .fit() methode:
knn.fit(X_scaled, y)
En dat is alles! Nu kunnen nieuwe waarden worden voorspeld.
y_pred = knn.predict(X_new_scaled)
Gegevens schalen
Houd er echter rekening mee dat de gegevens geschaald moeten worden. StandardScaler wordt hiervoor vaak gebruikt:
Bereken xˉ en s alleen op de trainingsset met behulp van .fit() of .fit_transform().
Gebruik vervolgens .transform() op de testset zodat beide sets identiek worden geschaald:
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)
Het gebruik van verschillende schaalwaarden voor train en test schaadt de voorspellingen.
Voorbeeld
We voorspellen of een persoon Star Wars VI leuk vindt op basis van hun beoordelingen voor Episodes IV en V (uit The Movies Dataset).
Na het trainen testen we twee gebruikers: één beoordeelde IV/V als 5 en 5, de ander als 4.5 en 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)
Bedankt voor je feedback!