KNeighborsClassifier
Sveip for å vise menyen
Når den endelige estimatoren opprettes i en pipeline, ble den valgte modellen KNeighborsClassifier. Dette kapittelet gir en kort forklaring på hvordan algoritmen fungerer.
Hvordan modeller fungerer er ikke hovedtemaet i dette kurset, så det er greit om noe virker uklart. Dette forklares mer detaljert i andre kurs som Linear Regression with Python eller Classification with Python.
k-Nearest Neighbors
k-NN forutsier klassen til en ny instans ved å se på dens k mest like treningsprøver.
KNeighborsClassifier implementerer dette i Scikit-learn.
- For et nytt punkt, finn de k nærmeste naboene ved hjelp av likhet i egenskaper.
- Den mest vanlige klassen blant disse blir prediksjonen.
k er en hyperparameter (standard = 5). Ulike verdier endrer modellens oppførsel, så justering av k er viktig.
KNeighborsClassifier under .fit()
I motsetning til mange algoritmer, lagrer KNeighborsClassifier kun treningsdataene.
Det er likevel nødvendig å kalle .fit(X, y) slik at modellen vet hvilket datasett den skal referere til under prediksjon.
KNeighborsClassifier under .predict()
Under prediksjon søker klassifiseringen etter k nærmeste naboer for hver forekomst. I det visuelle eksempelet vises kun to funksjoner; å legge til flere funksjoner forbedrer vanligvis klasseseparasjon og prediksjonsnøyaktighet.
I gifene ovenfor brukes kun to egenskaper, 'body_mass_g' og 'culmen_depth_mm', fordi det er utfordrende å visualisere plott med høyere dimensjoner. Å inkludere flere egenskaper vil sannsynligvis hjelpe modellen med å skille bedre mellom de grønne og røde datapunktene, noe som gjør at KNeighborsClassifier kan gi mer nøyaktige prediksjoner.
KNeighborsClassifier kodeeksempel
Du kan opprette en klassifiserer, trene den og sjekke nøyaktighet ved å bruke .score().
Argumentet n_neighbors styrer k—prøv både 5 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))
Å bruke k=1 kan gi perfekt nøyaktighet, men dette er misvisende fordi evalueringen ble utført på treningssettet.
For å måle reell ytelse, test alltid modellen på usett data.
Takk for tilbakemeldingene dine!
Spør AI
Spør AI
Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår