Implementering 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ˉ og s for X;transform(X)– returnerer Xscaled ved brug af xˉ,s fra.fit();fit_transform(X)–.fit(X)efterfulgt af.transform(X).
Du skal beregne xˉ og s kun på træningssættet ved hjælp af .fit() eller .fit_transform().
Brug derefter .transform() på 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.
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)
Tak for dine kommentarer!
Spørg AI
Spørg AI
Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat
Fantastisk!
Completion rate forbedret til 3.33
Implementering 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ˉ og s for X;transform(X)– returnerer Xscaled ved brug af xˉ,s fra.fit();fit_transform(X)–.fit(X)efterfulgt af.transform(X).
Du skal beregne xˉ og s kun på træningssættet ved hjælp af .fit() eller .fit_transform().
Brug derefter .transform() på 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.
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)
Tak for dine kommentarer!