K-nærmeste Nabo-Klassifikator
Når den endelige estimatoren opprettes i en pipeline, ble den valgte modellen KNeighborsClassifier
. Dette kapittelet gir en kort forklaring på hvordan algoritmen fungerer.
Hvordan modeller fungerer er ikke hovedtemaet i dette kurset, så det er greit om noe virker uklart for deg. Dette forklares mer detaljert i andre kurs som Linear Regression with Python eller Classification with Python.
k-Nearest Neighbors
k-nearest neighbors (k-NN) er en maskinlæringsalgoritme som predikerer utfall ved å identifisere de mest like instansene i treningssettet.
KNeighborsClassifier
er Scikit-learn sin implementasjon av denne algoritmen for klassifiseringsoppgaver. Prediksjonsprosessen fungerer slik:
- For en ny instans, identifiser de k nærmeste treningsinstansene basert på likhet i egenskaper. Disse kalles naboer.
- Bestem den mest vanlige klassen blant de k naboene. Denne klassen blir prediksjonen for den nye instansen.
Parameteren k angir hvor mange naboer som skal vurderes. Som standard er den satt til 5. Ulike verdier av k kan gi ulike prediksjoner, noe som gjør det til en hyperparameter — en parameter som velges før trening og som direkte påvirker modellens oppførsel.
Å eksperimentere med ulike verdier av k og velge den som gir best ytelse kalles hyperparametertuning. Denne prosessen er essensiell for å optimalisere modellen.
KNeighborsClassifier under .fit()
I motsetning til de fleste ML-modeller gjør KNeighborsClassifier
ingenting annet enn å lagre treningssettet under trening. Selv om treningen ikke tar tid, er det obligatorisk å kalle .fit(X, y)
for at den skal huske treningssettet.
KNeighborsClassifier under .predict()
Under prediksjon finner KNeighborsClassifier
grådig de k nærmeste naboene for hver ny instans.
I gifene ovenfor brukes kun to egenskaper, 'body_mass_g'
og 'culmen_depth_mm'
, fordi det er utfordrende å visualisere plott med høyere dimensjoner. Å inkludere flere egenskaper vil sannsynligvis hjelpe modellen med å skille bedre mellom de grønne og røde datapunktene, noe som gjør at KNeighborsClassifier
kan gi mer nøyaktige prediksjoner.
KNeighborsClassifier kodeeksempel
Opprett en KNeighborsClassifier
, tren den, og evaluer nøyaktigheten ved å bruke .score()
-metoden. Datasettet i .csv
-filen er allerede forhåndsbehandlet.
Antall naboer (k) angis med argumentet n_neighbors
når du initialiserer KNeighborsClassifier
. Prøv både standardverdien 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))
Resultatene viser høy nøyaktighet, til og med perfekt med 1-nærmeste nabo.
Disse resultatene er imidlertid ikke pålitelige fordi evalueringen ble gjort på treningssettet—de samme dataene som modellen ble trent på. I dette tilfellet forutsier modellen bare eksempler den allerede har sett.
For å vurdere ytelsen riktig, må modellen evalueres på data den ikke har sett tidligere.
Takk for tilbakemeldingene dine!
Spør AI
Spør AI
Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår
Can you explain why evaluating on the training set is unreliable?
How should I properly evaluate the performance of a KNeighborsClassifier?
What is the difference between using 1 neighbor and 5 neighbors in k-NN?
Awesome!
Completion rate improved to 3.13
K-nærmeste Nabo-Klassifikator
Sveip for å vise menyen
Når den endelige estimatoren opprettes i en pipeline, ble den valgte modellen KNeighborsClassifier
. Dette kapittelet gir en kort forklaring på hvordan algoritmen fungerer.
Hvordan modeller fungerer er ikke hovedtemaet i dette kurset, så det er greit om noe virker uklart for deg. Dette forklares mer detaljert i andre kurs som Linear Regression with Python eller Classification with Python.
k-Nearest Neighbors
k-nearest neighbors (k-NN) er en maskinlæringsalgoritme som predikerer utfall ved å identifisere de mest like instansene i treningssettet.
KNeighborsClassifier
er Scikit-learn sin implementasjon av denne algoritmen for klassifiseringsoppgaver. Prediksjonsprosessen fungerer slik:
- For en ny instans, identifiser de k nærmeste treningsinstansene basert på likhet i egenskaper. Disse kalles naboer.
- Bestem den mest vanlige klassen blant de k naboene. Denne klassen blir prediksjonen for den nye instansen.
Parameteren k angir hvor mange naboer som skal vurderes. Som standard er den satt til 5. Ulike verdier av k kan gi ulike prediksjoner, noe som gjør det til en hyperparameter — en parameter som velges før trening og som direkte påvirker modellens oppførsel.
Å eksperimentere med ulike verdier av k og velge den som gir best ytelse kalles hyperparametertuning. Denne prosessen er essensiell for å optimalisere modellen.
KNeighborsClassifier under .fit()
I motsetning til de fleste ML-modeller gjør KNeighborsClassifier
ingenting annet enn å lagre treningssettet under trening. Selv om treningen ikke tar tid, er det obligatorisk å kalle .fit(X, y)
for at den skal huske treningssettet.
KNeighborsClassifier under .predict()
Under prediksjon finner KNeighborsClassifier
grådig de k nærmeste naboene for hver ny instans.
I gifene ovenfor brukes kun to egenskaper, 'body_mass_g'
og 'culmen_depth_mm'
, fordi det er utfordrende å visualisere plott med høyere dimensjoner. Å inkludere flere egenskaper vil sannsynligvis hjelpe modellen med å skille bedre mellom de grønne og røde datapunktene, noe som gjør at KNeighborsClassifier
kan gi mer nøyaktige prediksjoner.
KNeighborsClassifier kodeeksempel
Opprett en KNeighborsClassifier
, tren den, og evaluer nøyaktigheten ved å bruke .score()
-metoden. Datasettet i .csv
-filen er allerede forhåndsbehandlet.
Antall naboer (k) angis med argumentet n_neighbors
når du initialiserer KNeighborsClassifier
. Prøv både standardverdien 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))
Resultatene viser høy nøyaktighet, til og med perfekt med 1-nærmeste nabo.
Disse resultatene er imidlertid ikke pålitelige fordi evalueringen ble gjort på treningssettet—de samme dataene som modellen ble trent på. I dette tilfellet forutsier modellen bare eksempler den allerede har sett.
For å vurdere ytelsen riktig, må modellen evalueres på data den ikke har sett tidligere.
Takk for tilbakemeldingene dine!