Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Implementering af k-NN | K-NN-Klassifikator
Klassifikation med Python

bookImplementering 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 du har importeret klassen og oprettet et klasseobjekt som dette:

# Importing the class
from sklearn.neighbors import KNeighborsClassifier
knn = KNeighborsClassifier(n_neighbors=3)

Skal du give den træningsdata ved hjælp af .fit()-metoden:

knn.fit(X_scaled, y)

Og det er det! Nu kan du forudsige 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 bør beregne xˉ\bar x (gennemsnit) og ss (standardafvigelse) på træningssættet ved at bruge enten .fit() eller .fit_transform() metoden. Dette trin sikrer, at skaleringsparametrene er udledt fra træningsdataene.

Når du har et test-sæt til at forudsige, skal du bruge den samme xˉ\bar x og ss til at forbehandle disse data ved hjælp af .transform(). Denne konsistens er afgørende, da det sikrer, at testdataene skaleres på samme måde som træningsdataene, hvilket opretholder modellens forudsigelsesintegritet.

# 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)

Hvis du bruger forskellige xˉ\bar x og ss for træningssæt og test-sæt, vil dine forudsigelser sandsynligvis være dårligere.

Eksempel

Lad os undersøge et enkelt eksempel, hvor vi ønsker at forudsige om en person vil kunne lide Star Wars VI baseret på deres vurderinger af Star Wars IV og V. Dataene er taget fra The Movies Dataset med ekstra forbehandling. En person anses for at kunne lide Star Wars VI, hvis de vurderer den til mere end 4 (ud af 5).

Efter at have trænet vores model, vil vi lave forudsigelser for to personer fra test-sættet. Den første person vurderer Star Wars IV og V til henholdsvis 5 og 5, mens den anden person vurderer dem til 4.5 og 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

Hvilke af følgende klassenavne fra scikit-learn bruges til at implementere k-Nearest Neighbors-klassifikatoren og til at skalere features ved forberedelse af data til k-NN?

Select the correct answer

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 1. Kapitel 4

Spørg AI

expand

Spørg AI

ChatGPT

Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat

Suggested prompts:

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

bookImplementering 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 du har importeret klassen og oprettet et klasseobjekt som dette:

# Importing the class
from sklearn.neighbors import KNeighborsClassifier
knn = KNeighborsClassifier(n_neighbors=3)

Skal du give den træningsdata ved hjælp af .fit()-metoden:

knn.fit(X_scaled, y)

Og det er det! Nu kan du forudsige 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 bør beregne xˉ\bar x (gennemsnit) og ss (standardafvigelse) på træningssættet ved at bruge enten .fit() eller .fit_transform() metoden. Dette trin sikrer, at skaleringsparametrene er udledt fra træningsdataene.

Når du har et test-sæt til at forudsige, skal du bruge den samme xˉ\bar x og ss til at forbehandle disse data ved hjælp af .transform(). Denne konsistens er afgørende, da det sikrer, at testdataene skaleres på samme måde som træningsdataene, hvilket opretholder modellens forudsigelsesintegritet.

# 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)

Hvis du bruger forskellige xˉ\bar x og ss for træningssæt og test-sæt, vil dine forudsigelser sandsynligvis være dårligere.

Eksempel

Lad os undersøge et enkelt eksempel, hvor vi ønsker at forudsige om en person vil kunne lide Star Wars VI baseret på deres vurderinger af Star Wars IV og V. Dataene er taget fra The Movies Dataset med ekstra forbehandling. En person anses for at kunne lide Star Wars VI, hvis de vurderer den til mere end 4 (ud af 5).

Efter at have trænet vores model, vil vi lave forudsigelser for to personer fra test-sættet. Den første person vurderer Star Wars IV og V til henholdsvis 5 og 5, mens den anden person vurderer dem til 4.5 og 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

Hvilke af følgende klassenavne fra scikit-learn bruges til at implementere k-Nearest Neighbors-klassifikatoren og til at skalere features ved forberedelse af data til k-NN?

Select the correct answer

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 1. Kapitel 4
some-alt