Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Leer Implementatie van k-NN | Sectie
Practice
Projects
Quizzes & Challenges
Quizzen
Challenges
/
Essentiële Supervised Learning

bookImplementatie 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 klasse KNeighborsClassifier.

Constructor:

  • KNeighborsClassifier(n_neighbors = 5)
  • n_neighbors – aantal buren (k). Standaardwaarde is 5;

Methoden:

  • fit(X, y) – Trainingsset fitten;
  • predict(X) – Klasse voorspellen voor X;
  • score(X, y) – Geeft de nauwkeurigheid voor de X, y set terug.

Na het importeren van de klasse en het aanmaken van een klasse-object zoals hieronder:

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

Moet de trainingsdata worden aangeboden met 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)

Schalen van de data

Houd er echter rekening mee dat de data geschaald moet worden. StandardScaler wordt hiervoor vaak gebruikt:

Constructor:

  • StandardScaler().

Methoden:

  • fit(X) – Berekent xˉ\bar{x} en ss voor X;
  • transform(X) – Geeft XscaledX_{\text{scaled}} terug met gebruik van xˉ,s\bar{x}, s uit .fit();
  • fit_transform(X) – Voert eerst .fit(X) uit en daarna .transform(X).

Je moet xˉ\bar x en ss alleen op de trainingsset berekenen met .fit() of .fit_transform(). Gebruik vervolgens .transform() op de testset zodat beide sets identiek geschaald worden:

from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)

Verschillende schaalwaarden voor train en test schaden de voorspellingen.

Voorbeeld

We voorspellen of een persoon Star Wars VI leuk vindt aan de hand van hun beoordelingen voor Episodes IV en V (van 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.

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

Welke van de volgende class-namen uit scikit-learn worden gebruikt om de k-Nearest Neighbors-classificator te implementeren en om features te schalen bij het voorbereiden van data voor k-NN?

Select the correct answer

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 1. Hoofdstuk 17

Vraag AI

expand

Vraag AI

ChatGPT

Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.

bookImplementatie 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 klasse KNeighborsClassifier.

Constructor:

  • KNeighborsClassifier(n_neighbors = 5)
  • n_neighbors – aantal buren (k). Standaardwaarde is 5;

Methoden:

  • fit(X, y) – Trainingsset fitten;
  • predict(X) – Klasse voorspellen voor X;
  • score(X, y) – Geeft de nauwkeurigheid voor de X, y set terug.

Na het importeren van de klasse en het aanmaken van een klasse-object zoals hieronder:

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

Moet de trainingsdata worden aangeboden met 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)

Schalen van de data

Houd er echter rekening mee dat de data geschaald moet worden. StandardScaler wordt hiervoor vaak gebruikt:

Constructor:

  • StandardScaler().

Methoden:

  • fit(X) – Berekent xˉ\bar{x} en ss voor X;
  • transform(X) – Geeft XscaledX_{\text{scaled}} terug met gebruik van xˉ,s\bar{x}, s uit .fit();
  • fit_transform(X) – Voert eerst .fit(X) uit en daarna .transform(X).

Je moet xˉ\bar x en ss alleen op de trainingsset berekenen met .fit() of .fit_transform(). Gebruik vervolgens .transform() op de testset zodat beide sets identiek geschaald worden:

from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)

Verschillende schaalwaarden voor train en test schaden de voorspellingen.

Voorbeeld

We voorspellen of een persoon Star Wars VI leuk vindt aan de hand van hun beoordelingen voor Episodes IV en V (van 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.

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

Welke van de volgende class-namen uit scikit-learn worden gebruikt om de k-Nearest Neighbors-classificator te implementeren en om features te schalen bij het voorbereiden van data voor k-NN?

Select the correct answer

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 1. Hoofdstuk 17
some-alt