Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära Implementering av k-NN | K-NN-Klassificerare
Klassificering med Python

bookImplementering 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ˉ\bar x (medelvärde) och ss (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ˉ\bar x och ss 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ˉ\bar x och ss 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.

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

Vilka av följande klassnamn från scikit-learn används för att implementera k-Nearest Neighbors-klassificeraren och för att skala funktioner vid förberedelse av data för k-NN?

Select the correct answer

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 1. Kapitel 4

Fråga AI

expand

Fråga AI

ChatGPT

Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal

Awesome!

Completion rate improved to 4.17

bookImplementering 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ˉ\bar x (medelvärde) och ss (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ˉ\bar x och ss 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ˉ\bar x och ss 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.

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

Vilka av följande klassnamn från scikit-learn används för att implementera k-Nearest Neighbors-klassificeraren och för att skala funktioner vid förberedelse av data för k-NN?

Select the correct answer

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 1. Kapitel 4
some-alt