Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære KNeighborsClassifier | Modellering
ML Introduktion med Scikit-learn

bookKNeighborsClassifier

Når vi bygger en endelig estimator til en pipeline, brugte vi modellen KNeighborsClassifier. Dette kapitel vil kort forklare, hvordan den fungerer.

k-Nærmeste Naboer

k-nærmeste naboer er en ML-algoritme, der baserer sig på at finde de mest lignende eksempler i træningssættet for at lave en forudsigelse.

KNeighborsClassifier er en scikit-learn-implementering af denne algoritme til klassifikationsopgaver. Sådan foretager den en forudsigelse:

  1. For et nyt eksempel findes de k nærmeste (baseret på features) eksempler fra træningssættet. Disse k eksempler kaldes naboer;
  2. Find den mest hyppige klasse blandt de k naboer. Denne klasse bliver forudsigelsen for det nye eksempel.

k er antallet af naboer, du ønsker at tage i betragtning. Dette tal skal angives, når modellen initialiseres. Som standard er k sat til 5.

Med forskellige værdier af k giver modellen forskellige forudsigelser. Dette kaldes en hyperparameter — en parameter, der skal angives på forhånd, og som kan ændre modellens forudsigelser.

Du kan prøve at angive forskellige k-værdier og finde den optimale for din opgave. Denne proces med at justere hyperparametre kaldes hyperparametertuning, og den kan hjælpe dig med at optimere modellens ydeevne.

KNeighborsClassifier under .fit()

I modsætning til de fleste ML-modeller gør KNeighborsClassifier ikke 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()

Under forudsigelse finder KNeighborsClassifier grådigt de k nærmeste naboer for hver ny forekomst.

KNeighborsClassifier kodeeksempel

Opret en KNeighborsClassifier, træn den, og opnå dens nøjagtighed ved hjælp af .score()-metoden. For enkelhedens skyld er dataene i .csv-filen allerede fuldt forbehandlede.

For at angive k bruges argumentet n_neighbors i KNeighborsClassifier-konstruktøren. Vi afprøver værdierne 5 (standardværdien) 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 opnåede en ret god nøjagtighed! Med en 1-nærmeste nabo er nøjagtigheden endda perfekt.

Men bør vi stole på disse resultater? Nej, fordi vi evaluerede modellen på træningssættet—de samme data, som den blev trænet på. Naturligvis vil den forudsige de eksempler, den allerede har set, godt.

For virkelig at forstå, hvor godt modellen præsterer, bør vi evaluere den på eksempler, som modellen aldrig har set før.

question mark

Hvordan laver KNeighborsClassifier forudsigelser for en ny instans?

Select the correct answer

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 4. Kapitel 2

Spørg AI

expand

Spørg AI

ChatGPT

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

bookKNeighborsClassifier

Stryg for at vise menuen

Når vi bygger en endelig estimator til en pipeline, brugte vi modellen KNeighborsClassifier. Dette kapitel vil kort forklare, hvordan den fungerer.

k-Nærmeste Naboer

k-nærmeste naboer er en ML-algoritme, der baserer sig på at finde de mest lignende eksempler i træningssættet for at lave en forudsigelse.

KNeighborsClassifier er en scikit-learn-implementering af denne algoritme til klassifikationsopgaver. Sådan foretager den en forudsigelse:

  1. For et nyt eksempel findes de k nærmeste (baseret på features) eksempler fra træningssættet. Disse k eksempler kaldes naboer;
  2. Find den mest hyppige klasse blandt de k naboer. Denne klasse bliver forudsigelsen for det nye eksempel.

k er antallet af naboer, du ønsker at tage i betragtning. Dette tal skal angives, når modellen initialiseres. Som standard er k sat til 5.

Med forskellige værdier af k giver modellen forskellige forudsigelser. Dette kaldes en hyperparameter — en parameter, der skal angives på forhånd, og som kan ændre modellens forudsigelser.

Du kan prøve at angive forskellige k-værdier og finde den optimale for din opgave. Denne proces med at justere hyperparametre kaldes hyperparametertuning, og den kan hjælpe dig med at optimere modellens ydeevne.

KNeighborsClassifier under .fit()

I modsætning til de fleste ML-modeller gør KNeighborsClassifier ikke 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()

Under forudsigelse finder KNeighborsClassifier grådigt de k nærmeste naboer for hver ny forekomst.

KNeighborsClassifier kodeeksempel

Opret en KNeighborsClassifier, træn den, og opnå dens nøjagtighed ved hjælp af .score()-metoden. For enkelhedens skyld er dataene i .csv-filen allerede fuldt forbehandlede.

For at angive k bruges argumentet n_neighbors i KNeighborsClassifier-konstruktøren. Vi afprøver værdierne 5 (standardværdien) 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 opnåede en ret god nøjagtighed! Med en 1-nærmeste nabo er nøjagtigheden endda perfekt.

Men bør vi stole på disse resultater? Nej, fordi vi evaluerede modellen på træningssættet—de samme data, som den blev trænet på. Naturligvis vil den forudsige de eksempler, den allerede har set, godt.

For virkelig at forstå, hvor godt modellen præsterer, bør vi evaluere den på eksempler, som modellen aldrig har set før.

question mark

Hvordan laver KNeighborsClassifier forudsigelser for en ny instans?

Select the correct answer

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 4. Kapitel 2
some-alt