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 is. Dit wordt uitgebreider uitgelegd in andere cursussen zoals Linear Regression with Python of Classification with Python.
k-Nearest Neighbors
k-NN voorspelt de klasse van een nieuw voorbeeld door te kijken naar de k meest vergelijkbare trainingsvoorbeelden.
KNeighborsClassifier implementeert dit in Scikit-learn.
- Voor een nieuw punt worden de k dichtstbijzijnde buren gevonden op basis van gelijkenis in kenmerken.
- De meest voorkomende klasse onder deze buren wordt de voorspelling.
k is een hyperparameter (standaard = 5). Verschillende waarden veranderen het gedrag van het model, dus het afstemmen van k is belangrijk.
KNeighborsClassifier tijdens .fit()
In tegenstelling tot veel algoritmen slaat KNeighborsClassifier de trainingsgegevens alleen op.
Toch is het aanroepen van .fit(X, y) vereist zodat het model weet naar welke dataset verwezen moet worden tijdens het voorspellen.
KNeighborsClassifier tijdens .predict()
Tijdens het voorspellen zoekt de classifier voor elk geval naar de k dichtstbijzijnde buren. In het visuele voorbeeld worden slechts twee kenmerken getoond; het toevoegen van meer kenmerken verbetert meestal de klassenonderscheiding en de nauwkeurigheid van de voorspelling.
In de bovenstaande gifs worden slechts twee kenmerken, 'body_mass_g' en 'culmen_depth_mm', gebruikt omdat het visualiseren van plots 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
Een classifier aanmaken, trainen en de nauwkeurigheid controleren met .score().
Het argument n_neighbors bepaalt k—probeer zowel 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))
Het gebruik van k=1 kan een perfecte nauwkeurigheid opleveren, maar dit is misleidend omdat de evaluatie is uitgevoerd op de trainingset.
Om de werkelijke prestaties te meten, test het model altijd op onbekende data.
Bedankt voor je feedback!
Vraag AI
Vraag AI
Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.