Implementering af k-NN
KNeighborsClassifier
Implementering af k-Nearest Neighbors er ret ligetil. Det eneste, der kræves, er at importere og anvende klassen KNeighborsClassifier.
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 tilføres ved hjælp af .fit()-metoden:
knn.fit(X_scaled, y)
Det er alt! Nu kan der forudsiges nye værdier.
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:
Du skal beregne xˉ og s kun på træningssættet ved hjælp af .fit() eller .fit_transform().
Brug derefter .transform() på test-sæ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
Awesome!
Completion rate improved to 4.17
Implementering af k-NN
Stryg for at vise menuen
KNeighborsClassifier
Implementering af k-Nearest Neighbors er ret ligetil. Det eneste, der kræves, er at importere og anvende klassen KNeighborsClassifier.
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 tilføres ved hjælp af .fit()-metoden:
knn.fit(X_scaled, y)
Det er alt! Nu kan der forudsiges nye værdier.
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:
Du skal beregne xˉ og s kun på træningssættet ved hjælp af .fit() eller .fit_transform().
Brug derefter .transform() på test-sæ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!