Implementering av k-NN
KNeighborsClassifier
Att implementera k-Nearest Neighbors är ganska enkelt. Det enda som krävs är att importera och använda klassen KNeighborsClassifier.
När du har importerat klassen och skapat ett klassobjekt så här:
# Importing the class
from sklearn.neighbors import KNeighborsClassifier
knn = KNeighborsClassifier(n_neighbors=3)
Måste du mata in träningsdata med metoden .fit():
knn.fit(X_scaled, y)
Och det är allt! Nu kan du förutsäga nya värden.
y_pred = knn.predict(X_new_scaled)
Skalning av data
Kom dock ihåg att datan måste skalas. StandardScaler används ofta för detta ändamål:
Du måste beräkna xˉ och s endast på träningsuppsättningen med hjälp av .fit() eller .fit_transform().
Använd sedan .transform() på testuppsättningen så att båda uppsättningarna skalas identiskt:
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)
Att använda olika skalningsvärden för träning och test försämrar prediktionerna.
Exempel
Vi förutspår om en person tycker om Star Wars VI genom att använda deras betyg för Episod IV och V (från The Movies Dataset).
Efter träning testar vi två användare: en gav IV/V betygen 5 och 5, den andra 4.5 och 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)
Tack för dina kommentarer!
Fråga AI
Fråga AI
Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal
Can you explain why scaling is important for k-Nearest Neighbors?
What does the output of the prediction mean in this example?
How do I choose the best value for n_neighbors in KNeighborsClassifier?
Awesome!
Completion rate improved to 4.17
Implementering av k-NN
Svep för att visa menyn
KNeighborsClassifier
Att implementera k-Nearest Neighbors är ganska enkelt. Det enda som krävs är att importera och använda klassen KNeighborsClassifier.
När du har importerat klassen och skapat ett klassobjekt så här:
# Importing the class
from sklearn.neighbors import KNeighborsClassifier
knn = KNeighborsClassifier(n_neighbors=3)
Måste du mata in träningsdata med metoden .fit():
knn.fit(X_scaled, y)
Och det är allt! Nu kan du förutsäga nya värden.
y_pred = knn.predict(X_new_scaled)
Skalning av data
Kom dock ihåg att datan måste skalas. StandardScaler används ofta för detta ändamål:
Du måste beräkna xˉ och s endast på träningsuppsättningen med hjälp av .fit() eller .fit_transform().
Använd sedan .transform() på testuppsättningen så att båda uppsättningarna skalas identiskt:
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)
Att använda olika skalningsvärden för träning och test försämrar prediktionerna.
Exempel
Vi förutspår om en person tycker om Star Wars VI genom att använda deras betyg för Episod IV och V (från The Movies Dataset).
Efter träning testar vi två användare: en gav IV/V betygen 5 och 5, den andra 4.5 och 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)
Tack för dina kommentarer!