Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Leer KNeighborsClassifier | Modellering
ML Introductie Met Scikit-learn

bookKNeighborsClassifier

Bij het bouwen van een uiteindelijke estimator voor een pipeline, gebruikten we het KNeighborsClassifier-model. Dit hoofdstuk legt kort uit hoe het werkt.

k-Nearest Neighbors

k-nearest neighbors is een ML-algoritme dat gebaseerd is op het vinden van de meest vergelijkbare instanties in de trainingsset om een voorspelling te doen.

KNeighborsClassifier is een scikit-learn-implementatie van dit algoritme voor een classificatietaak. Zo maakt het een voorspelling:

  1. Voor een nieuwe instantie worden de k dichtstbijzijnde (op basis van kenmerken) instanties uit de trainingsset gevonden. Deze k instanties worden buren genoemd;
  2. De meest voorkomende klasse onder de k buren wordt bepaald. Die klasse wordt de voorspelling voor de nieuwe instantie.

k is het aantal buren dat je wilt overwegen. Dit aantal moet je opgeven bij het initialiseren van het model. Standaard is k ingesteld op 5.

Met verschillende waarden van k geeft het model verschillende voorspellingen. Dit wordt een hyperparameter genoemd — een parameter die je vooraf moet opgeven en die de voorspellingen van het model kan beïnvloeden.

Je kunt verschillende k-waarden proberen en de optimale waarde voor jouw taak vinden. Dit proces van het aanpassen van hyperparameters staat bekend als hyperparameter tuning en kan helpen om de prestaties van je model te optimaliseren.

KNeighborsClassifier tijdens .fit()

In tegenstelling tot de meeste ML-modellen doet de KNeighborsClassifier niets anders dan de trainingsset opslaan tijdens het trainen. Maar hoewel het trainen geen tijd kost, is het verplicht om .fit(X, y) aan te roepen zodat het model de trainingsset onthoudt.

KNeighborsClassifier tijdens .predict()

Tijdens de voorspelling zoekt de KNeighborsClassifier op een gulzige manier de k dichtstbijzijnde buren voor elk nieuw exemplaar.

KNeighborsClassifier codevoorbeeld

Laten we een KNeighborsClassifier aanmaken, trainen en de nauwkeurigheid bepalen met de .score()-methode. Voor de eenvoud is de data in het .csv-bestand al volledig voorbewerkt.

Om de k te specificeren, gebruik je het argument n_neighbors van de KNeighborsClassifier constructor. We proberen de waarden 5 (de standaardwaarde) en 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

We hebben een behoorlijk goede nauwkeurigheid behaald! Met een 1-naaste buur is de nauwkeurigheid zelfs perfect.

Maar moeten we deze scores vertrouwen? Nee, want we hebben het model geëvalueerd op de trainingsset—dezelfde data waarop het getraind is. Het zal natuurlijk de voorbeelden die het al heeft gezien goed voorspellen.

Om echt te begrijpen hoe goed het model presteert, moeten we het evalueren op voorbeelden die het model nog nooit eerder heeft gezien.

question mark

Hoe maakt de KNeighborsClassifier voorspellingen voor een nieuw voorbeeld?

Select the correct answer

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 4. Hoofdstuk 2

Vraag AI

expand

Vraag AI

ChatGPT

Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.

Awesome!

Completion rate improved to 3.13

bookKNeighborsClassifier

Veeg om het menu te tonen

Bij het bouwen van een uiteindelijke estimator voor een pipeline, gebruikten we het KNeighborsClassifier-model. Dit hoofdstuk legt kort uit hoe het werkt.

k-Nearest Neighbors

k-nearest neighbors is een ML-algoritme dat gebaseerd is op het vinden van de meest vergelijkbare instanties in de trainingsset om een voorspelling te doen.

KNeighborsClassifier is een scikit-learn-implementatie van dit algoritme voor een classificatietaak. Zo maakt het een voorspelling:

  1. Voor een nieuwe instantie worden de k dichtstbijzijnde (op basis van kenmerken) instanties uit de trainingsset gevonden. Deze k instanties worden buren genoemd;
  2. De meest voorkomende klasse onder de k buren wordt bepaald. Die klasse wordt de voorspelling voor de nieuwe instantie.

k is het aantal buren dat je wilt overwegen. Dit aantal moet je opgeven bij het initialiseren van het model. Standaard is k ingesteld op 5.

Met verschillende waarden van k geeft het model verschillende voorspellingen. Dit wordt een hyperparameter genoemd — een parameter die je vooraf moet opgeven en die de voorspellingen van het model kan beïnvloeden.

Je kunt verschillende k-waarden proberen en de optimale waarde voor jouw taak vinden. Dit proces van het aanpassen van hyperparameters staat bekend als hyperparameter tuning en kan helpen om de prestaties van je model te optimaliseren.

KNeighborsClassifier tijdens .fit()

In tegenstelling tot de meeste ML-modellen doet de KNeighborsClassifier niets anders dan de trainingsset opslaan tijdens het trainen. Maar hoewel het trainen geen tijd kost, is het verplicht om .fit(X, y) aan te roepen zodat het model de trainingsset onthoudt.

KNeighborsClassifier tijdens .predict()

Tijdens de voorspelling zoekt de KNeighborsClassifier op een gulzige manier de k dichtstbijzijnde buren voor elk nieuw exemplaar.

KNeighborsClassifier codevoorbeeld

Laten we een KNeighborsClassifier aanmaken, trainen en de nauwkeurigheid bepalen met de .score()-methode. Voor de eenvoud is de data in het .csv-bestand al volledig voorbewerkt.

Om de k te specificeren, gebruik je het argument n_neighbors van de KNeighborsClassifier constructor. We proberen de waarden 5 (de standaardwaarde) en 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

We hebben een behoorlijk goede nauwkeurigheid behaald! Met een 1-naaste buur is de nauwkeurigheid zelfs perfect.

Maar moeten we deze scores vertrouwen? Nee, want we hebben het model geëvalueerd op de trainingsset—dezelfde data waarop het getraind is. Het zal natuurlijk de voorbeelden die het al heeft gezien goed voorspellen.

Om echt te begrijpen hoe goed het model presteert, moeten we het evalueren op voorbeelden die het model nog nooit eerder heeft gezien.

question mark

Hoe maakt de KNeighborsClassifier voorspellingen voor een nieuw voorbeeld?

Select the correct answer

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 4. Hoofdstuk 2
some-alt