KNeighborsClassifier
Lors de la création de l'estimateur final dans un pipeline, le modèle choisi était KNeighborsClassifier. Ce chapitre fournit une brève explication du fonctionnement de cet algorithme.
Le fonctionnement des modèles n'est pas le sujet principal de ce cours, donc il est normal que certains points vous paraissent flous. Ce sujet est abordé plus en détail dans d'autres cours comme Linear Regression with Python ou Classification with Python.
k-plus proches voisins
k-NN prédit la classe d'une nouvelle instance en examinant ses k échantillons d'entraînement les plus similaires.
KNeighborsClassifier implémente cela dans Scikit-learn.
- Pour un nouveau point, trouver les k plus proches voisins en utilisant la similarité des caractéristiques.
- La classe la plus fréquente parmi eux devient la prédiction.
k est un hyperparamètre (valeur par défaut = 5). Différentes valeurs modifient le comportement du modèle, il est donc important d'ajuster k.
KNeighborsClassifier lors de .fit()
Contrairement à de nombreux algorithmes, KNeighborsClassifier stocke simplement les données d'entraînement.
Cependant, l'appel de .fit(X, y) est nécessaire afin que le modèle sache à quel jeu de données se référer lors de la prédiction.
KNeighborsClassifier lors de .predict()
Lors de la prédiction, le classificateur recherche les k voisins les plus proches de chaque instance. Dans l'exemple visuel, seules deux caractéristiques sont affichées ; l'ajout de caractéristiques supplémentaires améliore généralement la séparation des classes et la précision des prédictions.
Dans les gifs ci-dessus, seules deux caractéristiques, 'body_mass_g' et 'culmen_depth_mm', sont utilisées car il est difficile de visualiser des graphiques de dimensions supérieures. L'ajout de caractéristiques supplémentaires aidera probablement le modèle à mieux séparer les points de données verts et rouges, permettant ainsi au KNeighborsClassifier de réaliser des prédictions plus précises.
Exemple de code KNeighborsClassifier
Il est possible de créer un classificateur, de l'entraîner et de vérifier sa précision à l'aide de .score().
L'argument n_neighbors contrôle la valeur de k—essayez avec 5 et 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))
L'utilisation de k=1 peut donner une précision parfaite, mais cela est trompeur car l'évaluation a été réalisée sur le jeu d'entraînement.
Pour mesurer la performance réelle, il est nécessaire de tester le modèle sur des données inconnues.
Merci pour vos commentaires !
Demandez à l'IA
Demandez à l'IA
Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion
Awesome!
Completion rate improved to 3.13
KNeighborsClassifier
Glissez pour afficher le menu
Lors de la création de l'estimateur final dans un pipeline, le modèle choisi était KNeighborsClassifier. Ce chapitre fournit une brève explication du fonctionnement de cet algorithme.
Le fonctionnement des modèles n'est pas le sujet principal de ce cours, donc il est normal que certains points vous paraissent flous. Ce sujet est abordé plus en détail dans d'autres cours comme Linear Regression with Python ou Classification with Python.
k-plus proches voisins
k-NN prédit la classe d'une nouvelle instance en examinant ses k échantillons d'entraînement les plus similaires.
KNeighborsClassifier implémente cela dans Scikit-learn.
- Pour un nouveau point, trouver les k plus proches voisins en utilisant la similarité des caractéristiques.
- La classe la plus fréquente parmi eux devient la prédiction.
k est un hyperparamètre (valeur par défaut = 5). Différentes valeurs modifient le comportement du modèle, il est donc important d'ajuster k.
KNeighborsClassifier lors de .fit()
Contrairement à de nombreux algorithmes, KNeighborsClassifier stocke simplement les données d'entraînement.
Cependant, l'appel de .fit(X, y) est nécessaire afin que le modèle sache à quel jeu de données se référer lors de la prédiction.
KNeighborsClassifier lors de .predict()
Lors de la prédiction, le classificateur recherche les k voisins les plus proches de chaque instance. Dans l'exemple visuel, seules deux caractéristiques sont affichées ; l'ajout de caractéristiques supplémentaires améliore généralement la séparation des classes et la précision des prédictions.
Dans les gifs ci-dessus, seules deux caractéristiques, 'body_mass_g' et 'culmen_depth_mm', sont utilisées car il est difficile de visualiser des graphiques de dimensions supérieures. L'ajout de caractéristiques supplémentaires aidera probablement le modèle à mieux séparer les points de données verts et rouges, permettant ainsi au KNeighborsClassifier de réaliser des prédictions plus précises.
Exemple de code KNeighborsClassifier
Il est possible de créer un classificateur, de l'entraîner et de vérifier sa précision à l'aide de .score().
L'argument n_neighbors contrôle la valeur de k—essayez avec 5 et 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))
L'utilisation de k=1 peut donner une précision parfaite, mais cela est trompeur car l'évaluation a été réalisée sur le jeu d'entraînement.
Pour mesurer la performance réelle, il est nécessaire de tester le modèle sur des données inconnues.
Merci pour vos commentaires !