KNeighborsClassifier
Bij het aanmaken van de uiteindelijke estimator in een pipeline is het gekozen 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 lijkt. 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 meest nabije 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 de voorspelling zoekt de KNeighborsClassifier op een gulzige manier de k dichtstbijzijnde buren voor elk nieuw voorbeeld.
In de bovenstaande gifs worden slechts twee kenmerken, 'body_mass_g' en 'culmen_depth_mm', gebruikt omdat het visualiseren van grafieken met meer dimensies lastig is. Het toevoegen van extra kenmerken 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, 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.
Can you explain why evaluating on the training set is unreliable?
How should I properly evaluate the performance of a KNeighborsClassifier?
What is the difference between using 1 neighbor and 5 neighbors in k-NN?
Awesome!
Completion rate improved to 3.13
KNeighborsClassifier
Veeg om het menu te tonen
Bij het aanmaken van de uiteindelijke estimator in een pipeline is het gekozen 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 lijkt. 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 meest nabije 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 de voorspelling zoekt de KNeighborsClassifier op een gulzige manier de k dichtstbijzijnde buren voor elk nieuw voorbeeld.
In de bovenstaande gifs worden slechts twee kenmerken, 'body_mass_g' en 'culmen_depth_mm', gebruikt omdat het visualiseren van grafieken met meer dimensies lastig is. Het toevoegen van extra kenmerken 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, 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!