KNeighborsClassifier
Svep för att visa menyn
Vid skapandet av den slutliga estimatormodellen i en pipeline valdes modellen KNeighborsClassifier. Detta kapitel ger en kort förklaring av hur algoritmen fungerar.
Hur modeller fungerar är inte huvudämnet i denna kurs, så det är okej om något känns oklart. Det förklaras mer ingående i andra kurser som Linear Regression with Python eller Classification with Python.
k-Nearest Neighbors
k-NN förutspår klassen för en ny instans genom att titta på dess k mest liknande träningsprover.
KNeighborsClassifier implementerar detta i Scikit-learn.
- För en ny punkt, hitta de k närmaste grannarna med hjälp av likhet i egenskaper.
- Den vanligaste klassen bland dessa blir förutsägelsen.
k är en hyperparameter (standard = 5). Olika värden förändrar modellens beteende, så det är viktigt att justera k.
KNeighborsClassifier under .fit()
Till skillnad från många algoritmer lagrar KNeighborsClassifier helt enkelt träningsdatan.
Det är ändå nödvändigt att anropa .fit(X, y) så att modellen vet vilket dataset som ska refereras vid prediktion.
KNeighborsClassifier under .predict()
Vid prediktion söker klassificeraren efter varje instans k närmaste grannar. I det visuella exemplet visas endast två egenskaper; att lägga till fler egenskaper förbättrar vanligtvis klass-separation och prediktionsnoggrannhet.
I gifarna ovan används endast två egenskaper, 'body_mass_g' och 'culmen_depth_mm', eftersom det är svårt att visualisera diagram med fler dimensioner. Att inkludera fler egenskaper kommer sannolikt att hjälpa modellen att bättre separera de gröna och röda datapunkterna, vilket gör att KNeighborsClassifier kan göra mer träffsäkra förutsägelser.
KNeighborsClassifier-kodexempel
Du kan skapa en klassificerare, träna den och kontrollera dess noggrannhet med .score().
Argumentet n_neighbors styr k—prova både 5 och 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))
Att använda k=1 kan ge perfekt noggrannhet, men detta är missvisande eftersom utvärderingen gjordes på träningsdata.
För att mäta verklig prestanda, testa alltid modellen på osedd data.
Tack för dina kommentarer!
Fråga AI
Fråga AI
Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal