KNeighborsClassifier
Ved oprettelse af den endelige estimator i en pipeline blev den valgte model KNeighborsClassifier
. Dette kapitel giver en kort forklaring på, hvordan algoritmen fungerer.
Hvordan modeller fungerer er ikke hovedemnet i dette kursus, så det er i orden, hvis noget virker uklart for dig. Det forklares mere detaljeret i andre kurser som Linear Regression with Python eller Classification with Python.
k-Nearest Neighbors
k-nearest neighbors (k-NN) er en maskinlæringsalgoritme, der forudsiger resultater ved at identificere de mest lignende eksempler i træningssættet.
KNeighborsClassifier
er Scikit-learns implementering af denne algoritme til klassifikationsopgaver. Forudsigelsesprocessen fungerer således:
- For en ny observation identificeres de k nærmeste træningseksempler baseret på lighed i egenskaber. Disse kaldes naboer.
- Den mest hyppige klasse blandt de k naboer bestemmes. Denne klasse bliver forudsigelsen for den nye observation.
Parameteren k angiver, hvor mange naboer der skal tages i betragtning. Som standard er den sat til 5. Forskellige værdier af k kan føre til forskellige forudsigelser, hvilket gør det til en hyperparameter — en parameter, der vælges før træning og direkte påvirker modellens adfærd.
At eksperimentere med forskellige værdier af k og vælge den, der giver den bedste ydeevne, kaldes hyperparametertuning. Denne proces er afgørende for at optimere modellen.
KNeighborsClassifier under .fit()
I modsætning til de fleste ML-modeller gør KNeighborsClassifier
intet andet end at gemme træningssættet under træning. Selvom træningen derfor ikke tager tid, er det obligatorisk at kalde .fit(X, y)
for at modellen kan huske træningssættet.
KNeighborsClassifier under .predict()
Ved forudsigelse finder KNeighborsClassifier
grådigt de k nærmeste naboer for hver ny instans.
I animationerne ovenfor anvendes kun to features, 'body_mass_g'
og 'culmen_depth_mm'
, fordi det er udfordrende at visualisere plots med højere dimensioner. Inkludering af yderligere features vil sandsynligvis hjælpe modellen med bedre at adskille de grønne og røde datapunkter, hvilket gør det muligt for KNeighborsClassifier
at lave mere præcise forudsigelser.
KNeighborsClassifier Kodningseksempel
Opret en KNeighborsClassifier
, træn den, og evaluer dens nøjagtighed ved hjælp af .score()
-metoden. Datasættet i .csv
-filen er allerede forbehandlet.
Antallet af naboer (k) angives med argumentet n_neighbors
, når KNeighborsClassifier
initialiseres. Prøv både standardværdien 5 og 1.
12345678910111213import pandas as pd from sklearn.neighbors import KNeighborsClassifier df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/a65bbc96-309e-4df9-a790-a1eb8c815a1c/penguins_pipelined.csv') # Assign X, y variables (X is already preprocessed and y is already encoded) X, y = df.drop('species', axis=1), df['species'] # Initialize and train a model knn5 = KNeighborsClassifier().fit(X, y) # Trained 5 neighbors model knn1 = KNeighborsClassifier(n_neighbors=1).fit(X, y) # Trained 1 neighbor model # Print the scores of both models print('5 Neighbors score:',knn5.score(X, y)) print('1 Neighbor score:',knn1.score(X, y))
Resultaterne viser høj nøjagtighed, endda perfekt med 1-nærmeste nabo.
Disse scorer er dog ikke pålidelige, da evalueringen blev udført på træningssættet—de samme data, som modellen blev trænet på. I dette tilfælde forudsiger modellen blot eksempler, den allerede har set.
For at vurdere ydeevnen korrekt skal modellen evalueres på data, den ikke tidligere har set.
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
Awesome!
Completion rate improved to 3.13
KNeighborsClassifier
Stryg for at vise menuen
Ved oprettelse af den endelige estimator i en pipeline blev den valgte model KNeighborsClassifier
. Dette kapitel giver en kort forklaring på, hvordan algoritmen fungerer.
Hvordan modeller fungerer er ikke hovedemnet i dette kursus, så det er i orden, hvis noget virker uklart for dig. Det forklares mere detaljeret i andre kurser som Linear Regression with Python eller Classification with Python.
k-Nearest Neighbors
k-nearest neighbors (k-NN) er en maskinlæringsalgoritme, der forudsiger resultater ved at identificere de mest lignende eksempler i træningssættet.
KNeighborsClassifier
er Scikit-learns implementering af denne algoritme til klassifikationsopgaver. Forudsigelsesprocessen fungerer således:
- For en ny observation identificeres de k nærmeste træningseksempler baseret på lighed i egenskaber. Disse kaldes naboer.
- Den mest hyppige klasse blandt de k naboer bestemmes. Denne klasse bliver forudsigelsen for den nye observation.
Parameteren k angiver, hvor mange naboer der skal tages i betragtning. Som standard er den sat til 5. Forskellige værdier af k kan føre til forskellige forudsigelser, hvilket gør det til en hyperparameter — en parameter, der vælges før træning og direkte påvirker modellens adfærd.
At eksperimentere med forskellige værdier af k og vælge den, der giver den bedste ydeevne, kaldes hyperparametertuning. Denne proces er afgørende for at optimere modellen.
KNeighborsClassifier under .fit()
I modsætning til de fleste ML-modeller gør KNeighborsClassifier
intet andet end at gemme træningssættet under træning. Selvom træningen derfor ikke tager tid, er det obligatorisk at kalde .fit(X, y)
for at modellen kan huske træningssættet.
KNeighborsClassifier under .predict()
Ved forudsigelse finder KNeighborsClassifier
grådigt de k nærmeste naboer for hver ny instans.
I animationerne ovenfor anvendes kun to features, 'body_mass_g'
og 'culmen_depth_mm'
, fordi det er udfordrende at visualisere plots med højere dimensioner. Inkludering af yderligere features vil sandsynligvis hjælpe modellen med bedre at adskille de grønne og røde datapunkter, hvilket gør det muligt for KNeighborsClassifier
at lave mere præcise forudsigelser.
KNeighborsClassifier Kodningseksempel
Opret en KNeighborsClassifier
, træn den, og evaluer dens nøjagtighed ved hjælp af .score()
-metoden. Datasættet i .csv
-filen er allerede forbehandlet.
Antallet af naboer (k) angives med argumentet n_neighbors
, når KNeighborsClassifier
initialiseres. Prøv både standardværdien 5 og 1.
12345678910111213import pandas as pd from sklearn.neighbors import KNeighborsClassifier df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/a65bbc96-309e-4df9-a790-a1eb8c815a1c/penguins_pipelined.csv') # Assign X, y variables (X is already preprocessed and y is already encoded) X, y = df.drop('species', axis=1), df['species'] # Initialize and train a model knn5 = KNeighborsClassifier().fit(X, y) # Trained 5 neighbors model knn1 = KNeighborsClassifier(n_neighbors=1).fit(X, y) # Trained 1 neighbor model # Print the scores of both models print('5 Neighbors score:',knn5.score(X, y)) print('1 Neighbor score:',knn1.score(X, y))
Resultaterne viser høj nøjagtighed, endda perfekt med 1-nærmeste nabo.
Disse scorer er dog ikke pålidelige, da evalueringen blev udført på træningssættet—de samme data, som modellen blev trænet på. I dette tilfælde forudsiger modellen blot eksempler, den allerede har set.
For at vurdere ydeevnen korrekt skal modellen evalueres på data, den ikke tidligere har set.
Tak for dine kommentarer!