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 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ˉ (gennemsnit) og s (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ˉ og s 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ˉ og s 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.
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
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 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ˉ (gennemsnit) og s (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ˉ og s 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ˉ og s 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.
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!