K-nærmeste Nabo-klassifikator
Når vi bygger en endelig estimator for en pipeline, brukte vi modellen KNeighborsClassifier
. Dette kapittelet vil kort forklare hvordan den fungerer.
k-nærmeste naboer
k-nærmeste naboer er en ML-algoritme basert på å finne de mest like forekomstene i treningssettet for å lage en prediksjon.
KNeighborsClassifier
er en scikit-learn-implementasjon av denne algoritmen for klassifiseringsoppgaver. Slik gjør den en prediksjon:
- For en ny forekomst, finn de k nærmeste (basert på egenskaper) forekomstene i treningssettet. Disse k forekomstene kalles naboer;
- Finn den mest vanlige klassen blant de k naboene. Denne klassen blir prediksjonen for den nye forekomsten.
k er antallet naboer du ønsker å vurdere. Du må angi dette tallet når du initialiserer modellen. Som standard er k satt til 5.
Med ulike verdier av k gir modellen ulike prediksjoner. Dette kalles en hyperparameter — en parameter du må angi på forhånd, og som kan endre modellens prediksjoner.
Du kan prøve ulike k-verdier og finne den optimale for din oppgave. Denne prosessen med å justere hyperparametere kalles hyperparametertuning, og den kan hjelpe deg med å optimalisere modellens ytelse.
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 likevel 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 forekomst.
KNeighborsClassifier kodeeksempel
La oss opprette en KNeighborsClassifier
, trene den, og hente dens nøyaktighet ved å bruke .score()
-metoden. For enkelhets skyld er dataene i .csv-filen allerede fullstendig forhåndsprosesserte.
For å angi k, bruk argumentet n_neighbors
i konstruktøren til KNeighborsClassifier
. Vi vil prøve verdiene 5 (standardverdi) 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))
Vi oppnådde en ganske god nøyaktighet! Med en 1-nærmeste nabo, er nøyaktigheten til og med perfekt.
Men bør vi stole på disse resultatene? Nei, fordi vi evaluerte modellen på treningssettet—de samme dataene den ble trent på. Naturligvis vil den forutsi de eksemplene den allerede har sett, godt.
For å virkelig forstå hvor godt modellen presterer, bør vi evaluere den på eksempler som modellen aldri har sett før.
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
Awesome!
Completion rate improved to 3.13
K-nærmeste Nabo-klassifikator
Sveip for å vise menyen
Når vi bygger en endelig estimator for en pipeline, brukte vi modellen KNeighborsClassifier
. Dette kapittelet vil kort forklare hvordan den fungerer.
k-nærmeste naboer
k-nærmeste naboer er en ML-algoritme basert på å finne de mest like forekomstene i treningssettet for å lage en prediksjon.
KNeighborsClassifier
er en scikit-learn-implementasjon av denne algoritmen for klassifiseringsoppgaver. Slik gjør den en prediksjon:
- For en ny forekomst, finn de k nærmeste (basert på egenskaper) forekomstene i treningssettet. Disse k forekomstene kalles naboer;
- Finn den mest vanlige klassen blant de k naboene. Denne klassen blir prediksjonen for den nye forekomsten.
k er antallet naboer du ønsker å vurdere. Du må angi dette tallet når du initialiserer modellen. Som standard er k satt til 5.
Med ulike verdier av k gir modellen ulike prediksjoner. Dette kalles en hyperparameter — en parameter du må angi på forhånd, og som kan endre modellens prediksjoner.
Du kan prøve ulike k-verdier og finne den optimale for din oppgave. Denne prosessen med å justere hyperparametere kalles hyperparametertuning, og den kan hjelpe deg med å optimalisere modellens ytelse.
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 likevel 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 forekomst.
KNeighborsClassifier kodeeksempel
La oss opprette en KNeighborsClassifier
, trene den, og hente dens nøyaktighet ved å bruke .score()
-metoden. For enkelhets skyld er dataene i .csv-filen allerede fullstendig forhåndsprosesserte.
For å angi k, bruk argumentet n_neighbors
i konstruktøren til KNeighborsClassifier
. Vi vil prøve verdiene 5 (standardverdi) 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))
Vi oppnådde en ganske god nøyaktighet! Med en 1-nærmeste nabo, er nøyaktigheten til og med perfekt.
Men bør vi stole på disse resultatene? Nei, fordi vi evaluerte modellen på treningssettet—de samme dataene den ble trent på. Naturligvis vil den forutsi de eksemplene den allerede har sett, godt.
For å virkelig forstå hvor godt modellen presterer, bør vi evaluere den på eksempler som modellen aldri har sett før.
Takk for tilbakemeldingene dine!