Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre KNeighborsClassifier | Modélisation
Introduction à l'Apprentissage Automatique avec Python

bookKNeighborsClassifier

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.

Note
Note

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.

  1. Pour un nouveau point, trouver les k plus proches voisins en utilisant la similarité des caractéristiques.
  2. 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.

Note
Remarque

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.

12345678910111213
import 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))
copy

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.

question mark

Comment le KNeighborsClassifier effectue-t-il des prédictions pour une nouvelle instance ?

Select the correct answer

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 4. Chapitre 2

Demandez à l'IA

expand

Demandez à l'IA

ChatGPT

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

bookKNeighborsClassifier

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.

Note
Note

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.

  1. Pour un nouveau point, trouver les k plus proches voisins en utilisant la similarité des caractéristiques.
  2. 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.

Note
Remarque

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.

12345678910111213
import 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))
copy

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.

question mark

Comment le KNeighborsClassifier effectue-t-il des prédictions pour une nouvelle instance ?

Select the correct answer

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 4. Chapitre 2
some-alt