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 bör beräkna xˉ (medelvärde) och s (standardavvikelse) på träningsuppsättningen med hjälp av antingen .fit() eller .fit_transform()-metoden. Detta steg säkerställer att skalningsparametrarna härleds från träningsdatan.
När du har en testuppsättning att förutsäga måste du använda samma xˉ och s för att förbehandla denna data med .transform(). Denna konsekvens är avgörande eftersom det säkerställer att testdatan skalas på samma sätt som träningsdatan, vilket upprätthåller modellens prediktionsintegritet.
# 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)
Om du använder olika xˉ och s för tränings- och testuppsättningen kommer dina prediktioner sannolikt att bli sämre.
Exempel
Låt oss undersöka ett enkelt exempel där vi vill förutsäga om en person kommer att tycka om Star Wars VI baserat på deras betyg för Star Wars IV och V. Datan är hämtad från The Movies Dataset med extra förbehandling. En person anses tycka om Star Wars VI om de ger den ett betyg över 4 (av 5).
Efter att vi tränat vår modell kommer vi att göra prediktioner för två individer från testuppsättningen. Den första individen ger Star Wars IV och V betygen 5 respektive 5, medan den andra ger betygen 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 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
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 bör beräkna xˉ (medelvärde) och s (standardavvikelse) på träningsuppsättningen med hjälp av antingen .fit() eller .fit_transform()-metoden. Detta steg säkerställer att skalningsparametrarna härleds från träningsdatan.
När du har en testuppsättning att förutsäga måste du använda samma xˉ och s för att förbehandla denna data med .transform(). Denna konsekvens är avgörande eftersom det säkerställer att testdatan skalas på samma sätt som träningsdatan, vilket upprätthåller modellens prediktionsintegritet.
# 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)
Om du använder olika xˉ och s för tränings- och testuppsättningen kommer dina prediktioner sannolikt att bli sämre.
Exempel
Låt oss undersöka ett enkelt exempel där vi vill förutsäga om en person kommer att tycka om Star Wars VI baserat på deras betyg för Star Wars IV och V. Datan är hämtad från The Movies Dataset med extra förbehandling. En person anses tycka om Star Wars VI om de ger den ett betyg över 4 (av 5).
Efter att vi tränat vår modell kommer vi att göra prediktioner för två individer från testuppsättningen. Den första individen ger Star Wars IV och V betygen 5 respektive 5, medan den andra ger betygen 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!