Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre KNeighborsClassifier | Modélisation
Introduction au ML Avec Scikit-Learn

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, il est donc normal que certains points vous paraissent flous. Ce sujet est expliqué plus en détail dans d'autres cours tels que Linear Regression with Python ou Classification with Python.

k-plus proches voisins

k-plus proches voisins (k-NN) est un algorithme d'apprentissage automatique qui prédit les résultats en identifiant les instances les plus similaires dans l'ensemble d'entraînement.

KNeighborsClassifier est l'implémentation de cet algorithme par Scikit-learn pour les tâches de classification. Le processus de prédiction fonctionne comme suit :

  1. Pour une nouvelle instance, identifier les k instances d'entraînement les plus proches en fonction de la similarité des caractéristiques. Celles-ci sont appelées les voisins.
  2. Déterminer la classe la plus fréquente parmi les k voisins. Cette classe devient la prédiction pour la nouvelle instance.

Le paramètre k spécifie le nombre de voisins à considérer. Par défaut, il est fixé à 5. Différentes valeurs de k peuvent conduire à des prédictions différentes, ce qui en fait un hyperparamètre — un paramètre choisi avant l'entraînement qui influence directement le comportement du modèle.

Expérimenter différentes valeurs de k et sélectionner celle qui offre les meilleures performances s'appelle l'optimisation des hyperparamètres. Ce processus est essentiel pour optimiser le modèle.

KNeighborsClassifier pendant .fit()

Contrairement à la plupart des modèles d'apprentissage automatique, le KNeighborsClassifier ne fait rien d'autre que stocker l'ensemble d'entraînement lors de l'apprentissage. Cependant, même si l'entraînement ne prend pas de temps, l'appel à .fit(X, y) est obligatoire pour qu'il mémorise l'ensemble d'entraînement.

KNeighborsClassifier pendant .predict()

Lors de la prédiction, le KNeighborsClassifier recherche de manière gloutonne les k plus proches voisins pour chaque nouvelle instance.

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 en 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 faire des prédictions plus précises.

Exemple de codage avec KNeighborsClassifier

Créer un KNeighborsClassifier, l'entraîner et évaluer sa précision à l'aide de la méthode .score(). Le jeu de données dans le fichier .csv est déjà prétraité.

Le nombre de voisins (k) est spécifié avec l'argument n_neighbors lors de l'initialisation de KNeighborsClassifier. Tester à la fois la valeur par défaut 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

Les résultats montrent une grande précision, voire parfaite avec 1 plus proche voisin.

Cependant, ces scores ne sont pas fiables car l'évaluation a été réalisée sur l'ensemble d'entraînement—les mêmes données utilisées pour entraîner le modèle. Dans ce cas, le modèle prédit simplement des instances qu'il a déjà vues.

Pour évaluer correctement la performance, le modèle doit être testé sur des données qu'il n'a jamais rencontrées auparavant.

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, il est donc normal que certains points vous paraissent flous. Ce sujet est expliqué plus en détail dans d'autres cours tels que Linear Regression with Python ou Classification with Python.

k-plus proches voisins

k-plus proches voisins (k-NN) est un algorithme d'apprentissage automatique qui prédit les résultats en identifiant les instances les plus similaires dans l'ensemble d'entraînement.

KNeighborsClassifier est l'implémentation de cet algorithme par Scikit-learn pour les tâches de classification. Le processus de prédiction fonctionne comme suit :

  1. Pour une nouvelle instance, identifier les k instances d'entraînement les plus proches en fonction de la similarité des caractéristiques. Celles-ci sont appelées les voisins.
  2. Déterminer la classe la plus fréquente parmi les k voisins. Cette classe devient la prédiction pour la nouvelle instance.

Le paramètre k spécifie le nombre de voisins à considérer. Par défaut, il est fixé à 5. Différentes valeurs de k peuvent conduire à des prédictions différentes, ce qui en fait un hyperparamètre — un paramètre choisi avant l'entraînement qui influence directement le comportement du modèle.

Expérimenter différentes valeurs de k et sélectionner celle qui offre les meilleures performances s'appelle l'optimisation des hyperparamètres. Ce processus est essentiel pour optimiser le modèle.

KNeighborsClassifier pendant .fit()

Contrairement à la plupart des modèles d'apprentissage automatique, le KNeighborsClassifier ne fait rien d'autre que stocker l'ensemble d'entraînement lors de l'apprentissage. Cependant, même si l'entraînement ne prend pas de temps, l'appel à .fit(X, y) est obligatoire pour qu'il mémorise l'ensemble d'entraînement.

KNeighborsClassifier pendant .predict()

Lors de la prédiction, le KNeighborsClassifier recherche de manière gloutonne les k plus proches voisins pour chaque nouvelle instance.

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 en 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 faire des prédictions plus précises.

Exemple de codage avec KNeighborsClassifier

Créer un KNeighborsClassifier, l'entraîner et évaluer sa précision à l'aide de la méthode .score(). Le jeu de données dans le fichier .csv est déjà prétraité.

Le nombre de voisins (k) est spécifié avec l'argument n_neighbors lors de l'initialisation de KNeighborsClassifier. Tester à la fois la valeur par défaut 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

Les résultats montrent une grande précision, voire parfaite avec 1 plus proche voisin.

Cependant, ces scores ne sont pas fiables car l'évaluation a été réalisée sur l'ensemble d'entraînement—les mêmes données utilisées pour entraîner le modèle. Dans ce cas, le modèle prédit simplement des instances qu'il a déjà vues.

Pour évaluer correctement la performance, le modèle doit être testé sur des données qu'il n'a jamais rencontrées auparavant.

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