Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Implementering af k-NN | Sektion
Supervised Learning Essentials

bookImplementering af k-NN

KNeighborsClassifier

Implementering af k-Nearest Neighbors er ret ligetil. Det kræver blot import og brug af klassen KNeighborsClassifier.

Konstruktør:

  • KNeighborsClassifier(n_neighbors = 5)
  • n_neighbors – antal naboer (k). Standardværdien er 5;

Metoder:

  • fit(X, y) – Tilpasning af træningssættet;
  • predict(X) – Forudsigelse af klassen for X;
  • score(X, y) – Returnerer nøjagtigheden for X, y-sættet.

Når klassen er importeret og et klasseobjekt er oprettet som dette:

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

Skal træningsdata gives til objektet ved brug af .fit()-metoden:

knn.fit(X_scaled, y)

Det er det hele! Nu kan nye værdier forudsiges.

y_pred = knn.predict(X_new_scaled)

Skalering af data

Det er dog vigtigt at huske, at data skal skaleres. StandardScaler anvendes ofte til dette formål:

Konstruktør:

  • StandardScaler().

Metoder:

  • fit(X) – beregner xˉ\bar{x} og ss for X;
  • transform(X) – returnerer XscaledX_{\text{scaled}} ved brug af xˉ,s\bar{x}, s fra .fit();
  • fit_transform(X).fit(X) efterfulgt af .transform(X).

Du skal beregne xˉ\bar x og ss kun på træningssættet ved hjælp af .fit() eller .fit_transform(). Brug derefter .transform()testdatasættet, så begge sæt skaleres identisk:

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

Brug af forskellige skaleringsværdier for træning og test forringer forudsigelserne.

Eksempel

Vi forudsiger, om en person kan lide Star Wars VI ved at bruge deres vurderinger af Episode IV og V (fra The Movies Dataset). Efter træning tester vi to brugere: én har vurderet IV/V som 5 og 5, den anden som 4.5 og 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

Hvilke af følgende klassenavne fra scikit-learn bruges til at implementere k-Nearest Neighbors-klassifikatoren og til at skalere features ved forberedelse af data til k-NN?

Select the correct answer

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 1. Kapitel 17

Spørg AI

expand

Spørg AI

ChatGPT

Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat

bookImplementering af k-NN

Stryg for at vise menuen

KNeighborsClassifier

Implementering af k-Nearest Neighbors er ret ligetil. Det kræver blot import og brug af klassen KNeighborsClassifier.

Konstruktør:

  • KNeighborsClassifier(n_neighbors = 5)
  • n_neighbors – antal naboer (k). Standardværdien er 5;

Metoder:

  • fit(X, y) – Tilpasning af træningssættet;
  • predict(X) – Forudsigelse af klassen for X;
  • score(X, y) – Returnerer nøjagtigheden for X, y-sættet.

Når klassen er importeret og et klasseobjekt er oprettet som dette:

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

Skal træningsdata gives til objektet ved brug af .fit()-metoden:

knn.fit(X_scaled, y)

Det er det hele! Nu kan nye værdier forudsiges.

y_pred = knn.predict(X_new_scaled)

Skalering af data

Det er dog vigtigt at huske, at data skal skaleres. StandardScaler anvendes ofte til dette formål:

Konstruktør:

  • StandardScaler().

Metoder:

  • fit(X) – beregner xˉ\bar{x} og ss for X;
  • transform(X) – returnerer XscaledX_{\text{scaled}} ved brug af xˉ,s\bar{x}, s fra .fit();
  • fit_transform(X).fit(X) efterfulgt af .transform(X).

Du skal beregne xˉ\bar x og ss kun på træningssættet ved hjælp af .fit() eller .fit_transform(). Brug derefter .transform()testdatasættet, så begge sæt skaleres identisk:

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

Brug af forskellige skaleringsværdier for træning og test forringer forudsigelserne.

Eksempel

Vi forudsiger, om en person kan lide Star Wars VI ved at bruge deres vurderinger af Episode IV og V (fra The Movies Dataset). Efter træning tester vi to brugere: én har vurderet IV/V som 5 og 5, den anden som 4.5 og 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

Hvilke af følgende klassenavne fra scikit-learn bruges til at implementere k-Nearest Neighbors-klassifikatoren og til at skalere features ved forberedelse af data til k-NN?

Select the correct answer

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 1. Kapitel 17
some-alt