Skip to content
Tutoriels
Python
Python KNN: Maîtriser la régression K plus proches voisins avec sklearn

Python KNN: Maîtriser la régression K plus proches voisins avec sklearn

Dans le monde de l'apprentissage automatique, un algorithme qui a gagné une popularité significative est l'algorithme des K plus proches voisins (KNN). Lorsqu'il est appliqué à des problèmes de régression, cet algorithme est souvent appelé régression KNN. Aujourd'hui, nous allons explorer comment implémenter la régression KNN en utilisant sklearn en Python, en nous concentrant spécifiquement sur la classe KNeighborsRegressor.

Vous souhaitez créer rapidement une visualisation de données à partir d'un dataframe Python Pandas sans code ?

PyGWalker est une bibliothèque Python pour l'analyse exploratoire des données avec visualisation. PyGWalker (opens in a new tab) peut simplifier votre workflow d'analyse et de visualisation des données dans Jupyter Notebook, en transformant votre dataframe pandas (et dataframe polars) en une interface utilisateur de style Tableau pour une exploration visuelle.

PyGWalker pour la visualisation de données (opens in a new tab)

Qu'est-ce que la régression KNN ?

La régression des K plus proches voisins est une méthode non paramétrique utilisée pour les problèmes de prédiction. Elle repose sur le principe que des valeurs d'entrée similaires produisent probablement des valeurs de sortie similaires. Dans le contexte de la régression, KNN prend un nombre spécifié (K) des points de données les plus proches (voisins) et fait la moyenne de leurs valeurs pour faire une prédiction.

Le régression KNN avec Sklearn

Sklearn, ou Scikit-learn, est une bibliothèque Python largement utilisée pour l'apprentissage automatique. Elle fournit des implémentations faciles à utiliser de nombreux algorithmes populaires, et le régression KNN ne fait pas exception. Dans Sklearn, la régression KNN est implémentée à travers la classe KNeighborsRegressor.

Pour utiliser KNeighborsRegressor, nous l'importons d'abord :

from sklearn.neighbors import KNeighborsRegressor

Ensuite, nous créons une instance de la classe, en passant le nombre souhaité de voisins en tant qu'argument :

knn_regressor = KNeighborsRegressor(n_neighbors=3)

Enfin, nous pouvons ajuster notre modèle aux données et faire des prédictions :

knn_regressor.fit(X_train, y_train)
predictions = knn_regressor.predict(X_test)

Ajustement du modèle régression KNN avec Sklearn

Un aspect important de l'utilisation de KNN avec sklearn est de choisir le bon nombre de voisins (K). Trop peu de voisins peuvent entraîner un surajustement, tandis que trop nombreux peuvent entraîner un sous-ajustement. Il est souvent préférable d'expérimenter avec différentes valeurs de K et de comparer les résultats.

for k in range(1, 10):
    knn_regressor = KNeighborsRegressor(n_neighbors=k)
    knn_regressor.fit(X_train, y_train)
    print(f'Score pour k={k} : {knn_regressor.score(X_test, y_test)}')

Cela affichera le score de précision pour chaque valeur de K, nous permettant de choisir la meilleure.

Régression KNN avec Sklearn en pratique

Maintenant, voyons un exemple complet de régression KNN en Python avec sklearn. Nous utiliserons l'ensemble de données Boston Housing, un ensemble de données populaire pour les problèmes de régression.

from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split
 
# Charger l'ensemble de données
boston = load_boston()
X = boston.data
y = boston.target
 
# Diviser l'ensemble de données en ensembles d'entraînement et de test
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
 
# Appliquer la régression KNN
knn_regressor = KNeighborsRegressor(n_neighbors=3)
knn_regressor.fit(X_train, y_train)
predictions = knn_regressor.predict(X_test)
 
# Évaluer le modèle
print('Score :', knn_regressor.score(X_test, y_test))

La méthode score() nous donne le coefficient de détermination R^2 de la prédiction.

Conclusion

Comprendre la régression KNN et comment l'implémenter en Python en utilisant le KNeighborsRegressor de sklearn est une compétence précieuse pour tout data scientist. En utilisant cet outil puissant, vous pouvez exploiter la puissance de l'apprentissage basé sur les voisins pour faire des prédictions précises sur vos données.

Bien que nous ayons introduit les bases ici, il y a beaucoup plus à explorer avec sklearn et la régression KNN. Bonnes expériences, et que vos voisins vous guident toujours vers les bonnes prédictions !