K-nærmeste Nabo-klassifikator
Ved opprettelse av den endelige estimatoren 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-Nærmeste Naboer
k-nærmeste naboer (k-NN) er en maskinlæringsalgoritme som predikerer utfall ved å identifisere de mest like forekomstene i treningssettet.
KNeighborsClassifier
er Scikit-learn sin implementasjon av denne algoritmen for klassifiseringsoppgaver. Prediksjonsprosessen fungerer slik:
- For en ny forekomst identifiseres de k nærmeste treningsforekomstene basert på likhet i egenskaper. Disse kalles naboer.
- Den mest vanlige klassen blant de k naboene bestemmes. Denne klassen blir prediksjonen for den nye forekomsten.
Parameteren k angir hvor mange naboer som skal vurderes. Standardverdien er 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 viktig 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 de grønne og røde datapunktene bedre, 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 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
Ved opprettelse av den endelige estimatoren 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-Nærmeste Naboer
k-nærmeste naboer (k-NN) er en maskinlæringsalgoritme som predikerer utfall ved å identifisere de mest like forekomstene i treningssettet.
KNeighborsClassifier
er Scikit-learn sin implementasjon av denne algoritmen for klassifiseringsoppgaver. Prediksjonsprosessen fungerer slik:
- For en ny forekomst identifiseres de k nærmeste treningsforekomstene basert på likhet i egenskaper. Disse kalles naboer.
- Den mest vanlige klassen blant de k naboene bestemmes. Denne klassen blir prediksjonen for den nye forekomsten.
Parameteren k angir hvor mange naboer som skal vurderes. Standardverdien er 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 viktig 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 de grønne og røde datapunktene bedre, 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 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!