Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære K-nærmeste Nabo-klassifikator | Modellering
ML Introduksjon med Scikit-learn

bookK-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:

  1. For en ny forekomst, finn de k nærmeste (basert på egenskaper) forekomstene i treningssettet. Disse k forekomstene kalles naboer;
  2. 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.

12345678910111213
import 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))
copy

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.

question mark

Hvordan gjør KNeighborsClassifier prediksjoner for en ny instans?

Select the correct answer

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 4. Kapittel 2

Spør AI

expand

Spør AI

ChatGPT

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

bookK-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:

  1. For en ny forekomst, finn de k nærmeste (basert på egenskaper) forekomstene i treningssettet. Disse k forekomstene kalles naboer;
  2. 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.

12345678910111213
import 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))
copy

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.

question mark

Hvordan gjør KNeighborsClassifier prediksjoner for en ny instans?

Select the correct answer

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 4. Kapittel 2
some-alt