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, 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 :
- 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.
- 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.
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.
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))
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.
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, 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 :
- 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.
- 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.
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.
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))
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.
Merci pour vos commentaires !