KNeighborsClassifier
Bij het creëren van de uiteindelijke estimator in een pipeline is gekozen voor het model KNeighborsClassifier
. Dit hoofdstuk geeft een korte uitleg over hoe het algoritme werkt.
Hoe modellen werken is geen hoofdonderwerp van deze cursus, dus het is niet erg als iets onduidelijk voor je is. Dit wordt uitgebreider uitgelegd in andere cursussen zoals Linear Regression with Python of Classification with Python.
k-Nearest Neighbors
k-nearest neighbors (k-NN) is een machine learning-algoritme dat uitkomsten voorspelt door de meest vergelijkbare voorbeelden in de trainingsset te identificeren.
KNeighborsClassifier
is de Scikit-learn-implementatie van dit algoritme voor classificatietaken. Het voorspellingsproces werkt als volgt:
- Voor een nieuw voorbeeld worden de k dichtstbijzijnde trainingsvoorbeelden geïdentificeerd op basis van gelijkenis in kenmerken. Deze worden de buren genoemd.
- Bepaal de meest voorkomende klasse onder de k buren. Die klasse wordt de voorspelling voor het nieuwe voorbeeld.
De parameter k geeft het aantal te beschouwen buren aan. Standaard is deze ingesteld op 5. Verschillende waarden van k kunnen tot verschillende voorspellingen leiden, waardoor het een hyperparameter is — een parameter die vóór de training wordt gekozen en direct het gedrag van het model beïnvloedt.
Experimenteren met verschillende waarden van k en het selecteren van de waarde die de beste prestaties oplevert, wordt hyperparameter tuning genoemd. Dit proces is essentieel voor het optimaliseren van het model.
KNeighborsClassifier tijdens .fit()
In tegenstelling tot de meeste ML-modellen doet de KNeighborsClassifier
niets anders dan de trainingsset opslaan tijdens het trainen. Hoewel het trainen geen tijd kost, is het aanroepen van .fit(X, y)
verplicht zodat het model de trainingsset kan onthouden.
KNeighborsClassifier tijdens .predict()
Tijdens het voorspellen zoekt de KNeighborsClassifier
op een gulzige manier de k dichtstbijzijnde buren voor elk nieuw voorbeeld.
In de bovenstaande gifs worden slechts twee features, 'body_mass_g'
en 'culmen_depth_mm'
, gebruikt omdat het visualiseren van plots met meer dimensies lastig is. Het toevoegen van extra features zal het model waarschijnlijk helpen om de groene en rode datapunten beter te scheiden, waardoor de KNeighborsClassifier
nauwkeurigere voorspellingen kan doen.
KNeighborsClassifier Codevoorbeeld
Maak een KNeighborsClassifier
aan, train deze en evalueer de nauwkeurigheid met de .score()
-methode. De dataset in het .csv
-bestand is al voorbewerkt.
Het aantal buren (k) wordt opgegeven met het argument n_neighbors
bij het initialiseren van KNeighborsClassifier
. Probeer zowel de standaardwaarde 5 als 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))
De resultaten tonen een hoge nauwkeurigheid, zelfs perfect bij 1-naaste buur.
Deze scores zijn echter niet betrouwbaar omdat de evaluatie is uitgevoerd op de trainingsset—dezelfde data waarop het model is getraind. In dit geval voorspelt het model simpelweg voorbeelden die het al heeft gezien.
Om de prestaties correct te beoordelen, moet het model worden geëvalueerd op data die het niet eerder heeft gezien.
Bedankt voor je feedback!
Vraag AI
Vraag AI
Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.
Awesome!
Completion rate improved to 3.13
KNeighborsClassifier
Veeg om het menu te tonen
Bij het creëren van de uiteindelijke estimator in een pipeline is gekozen voor het model KNeighborsClassifier
. Dit hoofdstuk geeft een korte uitleg over hoe het algoritme werkt.
Hoe modellen werken is geen hoofdonderwerp van deze cursus, dus het is niet erg als iets onduidelijk voor je is. Dit wordt uitgebreider uitgelegd in andere cursussen zoals Linear Regression with Python of Classification with Python.
k-Nearest Neighbors
k-nearest neighbors (k-NN) is een machine learning-algoritme dat uitkomsten voorspelt door de meest vergelijkbare voorbeelden in de trainingsset te identificeren.
KNeighborsClassifier
is de Scikit-learn-implementatie van dit algoritme voor classificatietaken. Het voorspellingsproces werkt als volgt:
- Voor een nieuw voorbeeld worden de k dichtstbijzijnde trainingsvoorbeelden geïdentificeerd op basis van gelijkenis in kenmerken. Deze worden de buren genoemd.
- Bepaal de meest voorkomende klasse onder de k buren. Die klasse wordt de voorspelling voor het nieuwe voorbeeld.
De parameter k geeft het aantal te beschouwen buren aan. Standaard is deze ingesteld op 5. Verschillende waarden van k kunnen tot verschillende voorspellingen leiden, waardoor het een hyperparameter is — een parameter die vóór de training wordt gekozen en direct het gedrag van het model beïnvloedt.
Experimenteren met verschillende waarden van k en het selecteren van de waarde die de beste prestaties oplevert, wordt hyperparameter tuning genoemd. Dit proces is essentieel voor het optimaliseren van het model.
KNeighborsClassifier tijdens .fit()
In tegenstelling tot de meeste ML-modellen doet de KNeighborsClassifier
niets anders dan de trainingsset opslaan tijdens het trainen. Hoewel het trainen geen tijd kost, is het aanroepen van .fit(X, y)
verplicht zodat het model de trainingsset kan onthouden.
KNeighborsClassifier tijdens .predict()
Tijdens het voorspellen zoekt de KNeighborsClassifier
op een gulzige manier de k dichtstbijzijnde buren voor elk nieuw voorbeeld.
In de bovenstaande gifs worden slechts twee features, 'body_mass_g'
en 'culmen_depth_mm'
, gebruikt omdat het visualiseren van plots met meer dimensies lastig is. Het toevoegen van extra features zal het model waarschijnlijk helpen om de groene en rode datapunten beter te scheiden, waardoor de KNeighborsClassifier
nauwkeurigere voorspellingen kan doen.
KNeighborsClassifier Codevoorbeeld
Maak een KNeighborsClassifier
aan, train deze en evalueer de nauwkeurigheid met de .score()
-methode. De dataset in het .csv
-bestand is al voorbewerkt.
Het aantal buren (k) wordt opgegeven met het argument n_neighbors
bij het initialiseren van KNeighborsClassifier
. Probeer zowel de standaardwaarde 5 als 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))
De resultaten tonen een hoge nauwkeurigheid, zelfs perfect bij 1-naaste buur.
Deze scores zijn echter niet betrouwbaar omdat de evaluatie is uitgevoerd op de trainingsset—dezelfde data waarop het model is getraind. In dit geval voorspelt het model simpelweg voorbeelden die het al heeft gezien.
Om de prestaties correct te beoordelen, moet het model worden geëvalueerd op data die het niet eerder heeft gezien.
Bedankt voor je feedback!