KNeighborsClassifier
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:
- For et nyt eksempel findes de k nærmeste (baseret på features) eksempler fra træningssættet. Disse k eksempler kaldes naboer;
- 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.
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))
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.
Tak for dine kommentarer!
Spørg AI
Spørg AI
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
KNeighborsClassifier
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:
- For et nyt eksempel findes de k nærmeste (baseret på features) eksempler fra træningssættet. Disse k eksempler kaldes naboer;
- 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.
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))
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.
Tak for dine kommentarer!