Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Leer Implementatie van k-NN | K-NN-Classificator
Classificatie met Python

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 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 met de .fit() methode:

knn.fit(X_scaled, y)

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:

Je dient xˉ\bar x (gemiddelde) en ss (standaardafwijking) te berekenen op de trainingsset met behulp van de .fit() of .fit_transform() methode. Deze stap zorgt ervoor dat de schaalparameters worden afgeleid van de trainingsgegevens.

Wanneer je een testset hebt om te voorspellen, moet je dezelfde xˉ\bar x en ss gebruiken om deze gegevens voor te bewerken met .transform(). Deze consistentie is cruciaal omdat het ervoor zorgt dat de testgegevens op dezelfde manier als de trainingsgegevens worden geschaald, waardoor de integriteit van de voorspellingen van het model behouden blijft.

# 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)

Als je verschillende xˉ\bar x en ss gebruikt voor de trainingsset en de testset, zullen je voorspellingen waarschijnlijk slechter zijn.

Voorbeeld

Laten we een eenvoudig voorbeeld bekijken waarin we willen voorspellen of een persoon Star Wars VI leuk zal vinden op basis van hun beoordelingen voor Star Wars IV en V. De gegevens zijn afkomstig uit The Movies Dataset met extra voorbewerking. Een persoon wordt geacht Star Wars VI leuk te vinden als hij deze film hoger dan 4 (uit 5) beoordeelt.

Na het trainen van ons model doen we voorspellingen voor twee individuen uit de testset. De eerste persoon beoordeelt Star Wars IV en V met respectievelijk 5 en 5, terwijl de tweede persoon deze beoordeelt met 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 4

Vraag AI

expand

Vraag AI

ChatGPT

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

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

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 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 met de .fit() methode:

knn.fit(X_scaled, y)

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:

Je dient xˉ\bar x (gemiddelde) en ss (standaardafwijking) te berekenen op de trainingsset met behulp van de .fit() of .fit_transform() methode. Deze stap zorgt ervoor dat de schaalparameters worden afgeleid van de trainingsgegevens.

Wanneer je een testset hebt om te voorspellen, moet je dezelfde xˉ\bar x en ss gebruiken om deze gegevens voor te bewerken met .transform(). Deze consistentie is cruciaal omdat het ervoor zorgt dat de testgegevens op dezelfde manier als de trainingsgegevens worden geschaald, waardoor de integriteit van de voorspellingen van het model behouden blijft.

# 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)

Als je verschillende xˉ\bar x en ss gebruikt voor de trainingsset en de testset, zullen je voorspellingen waarschijnlijk slechter zijn.

Voorbeeld

Laten we een eenvoudig voorbeeld bekijken waarin we willen voorspellen of een persoon Star Wars VI leuk zal vinden op basis van hun beoordelingen voor Star Wars IV en V. De gegevens zijn afkomstig uit The Movies Dataset met extra voorbewerking. Een persoon wordt geacht Star Wars VI leuk te vinden als hij deze film hoger dan 4 (uit 5) beoordeelt.

Na het trainen van ons model doen we voorspellingen voor twee individuen uit de testset. De eerste persoon beoordeelt Star Wars IV en V met respectievelijk 5 en 5, terwijl de tweede persoon deze beoordeelt met 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 4
some-alt