KNeighborsClassifier
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 ett huvudämne i denna kurs, så det är okej om något känns oklart för dig. Det förklaras mer ingående i andra kurser som Linear Regression with Python eller Classification with Python.
k-Nearest Neighbors
k-nearest neighbors (k-NN) är en maskininlärningsalgoritm som förutsäger utfall genom att identifiera de mest liknande instanserna i träningsmängden.
KNeighborsClassifier
är Scikit-learns implementation av denna algoritm för klassificeringsuppgifter. Förutsägelseprocessen fungerar enligt följande:
- För en ny instans identifieras de k närmaste träningsinstanserna baserat på likhet i egenskaper. Dessa kallas grannar.
- Den mest frekventa klassen bland de k grannarna bestäms. Den klassen blir förutsägelsen för den nya instansen.
Parametern k anger hur många grannar som ska beaktas. Som standard är den satt till 5. Olika värden på k kan leda till olika förutsägelser, vilket gör det till en hyperparameter — en parameter som väljs innan träning och som direkt påverkar modellens beteende.
Att experimentera med olika värden på k och välja det som ger bäst prestanda kallas hyperparametertuning. Denna process är avgörande för att optimera modellen.
KNeighborsClassifier under .fit()
Till skillnad från de flesta ML-modeller gör KNeighborsClassifier
inget annat än att lagra träningsuppsättningen under träningen. Även om träningen inte tar någon tid är det ändå obligatoriskt att anropa .fit(X, y)
för att modellen ska komma ihåg träningsuppsättningen.
KNeighborsClassifier under .predict()
Vid prediktion hittar KNeighborsClassifier
girigt de k närmaste grannarna för varje ny instans.
I gif-bilderna ovan används endast två egenskaper, 'body_mass_g'
och 'culmen_depth_mm'
, eftersom det är utmanande att visualisera högdimensionella diagram. Att inkludera ytterligare 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
Skapa en KNeighborsClassifier
, träna den och utvärdera dess noggrannhet med hjälp av metoden .score()
. Datasettet i .csv
-filen är redan förbehandlat.
Antalet grannar (k) anges med argumentet n_neighbors
vid initiering av KNeighborsClassifier
. Testa både standardvärdet 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))
Resultaten visar hög noggrannhet, till och med perfekt med 1-närmsta granne.
Dessa poäng är dock inte tillförlitliga eftersom utvärderingen gjordes på träningsmängden—samma data som modellen tränades på. I detta fall förutspår modellen helt enkelt instanser den redan har sett.
För att korrekt utvärdera prestandan måste modellen testas på data den inte har stött på tidigare.
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
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
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 ett huvudämne i denna kurs, så det är okej om något känns oklart för dig. Det förklaras mer ingående i andra kurser som Linear Regression with Python eller Classification with Python.
k-Nearest Neighbors
k-nearest neighbors (k-NN) är en maskininlärningsalgoritm som förutsäger utfall genom att identifiera de mest liknande instanserna i träningsmängden.
KNeighborsClassifier
är Scikit-learns implementation av denna algoritm för klassificeringsuppgifter. Förutsägelseprocessen fungerar enligt följande:
- För en ny instans identifieras de k närmaste träningsinstanserna baserat på likhet i egenskaper. Dessa kallas grannar.
- Den mest frekventa klassen bland de k grannarna bestäms. Den klassen blir förutsägelsen för den nya instansen.
Parametern k anger hur många grannar som ska beaktas. Som standard är den satt till 5. Olika värden på k kan leda till olika förutsägelser, vilket gör det till en hyperparameter — en parameter som väljs innan träning och som direkt påverkar modellens beteende.
Att experimentera med olika värden på k och välja det som ger bäst prestanda kallas hyperparametertuning. Denna process är avgörande för att optimera modellen.
KNeighborsClassifier under .fit()
Till skillnad från de flesta ML-modeller gör KNeighborsClassifier
inget annat än att lagra träningsuppsättningen under träningen. Även om träningen inte tar någon tid är det ändå obligatoriskt att anropa .fit(X, y)
för att modellen ska komma ihåg träningsuppsättningen.
KNeighborsClassifier under .predict()
Vid prediktion hittar KNeighborsClassifier
girigt de k närmaste grannarna för varje ny instans.
I gif-bilderna ovan används endast två egenskaper, 'body_mass_g'
och 'culmen_depth_mm'
, eftersom det är utmanande att visualisera högdimensionella diagram. Att inkludera ytterligare 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
Skapa en KNeighborsClassifier
, träna den och utvärdera dess noggrannhet med hjälp av metoden .score()
. Datasettet i .csv
-filen är redan förbehandlat.
Antalet grannar (k) anges med argumentet n_neighbors
vid initiering av KNeighborsClassifier
. Testa både standardvärdet 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))
Resultaten visar hög noggrannhet, till och med perfekt med 1-närmsta granne.
Dessa poäng är dock inte tillförlitliga eftersom utvärderingen gjordes på träningsmängden—samma data som modellen tränades på. I detta fall förutspår modellen helt enkelt instanser den redan har sett.
För att korrekt utvärdera prestandan måste modellen testas på data den inte har stött på tidigare.
Tack för dina kommentarer!