Python

Tutoriel Python & Scikit-learn : KNN (k-nearest neighbors)

×

Recommandés

CSV en Python — du téléchargement au...
Le CSV paraît simple, jusqu’au...
En savoir plus
Python : pandas.to_csv — Exporter propre, fiable...
DataFrame.to_csv devient un contrat d’échange :...
En savoir plus
Python : pandas.read_csv — Guide pratique enrichi
Pourquoi read_csv reste incontournable Parce qu’il transforme...
En savoir plus
Pratique de l’apprentissage automatique avec scikit-learn et...
Cet article vous guide, pas à...
En savoir plus
Python & finance PME — un kit...
Pour une PME, la finance est...
En savoir plus
Python pour la finance — les fonctions...
Python est devenu l’outil “couteau suisse”...
En savoir plus

Dans ce tutoriel, nous allons explorer l’algorithme des k-plus proches voisins (KNN) en utilisant Python et la bibliothèque Scikit-learn. KNN est un algorithme d’apprentissage supervisé utilisé pour la classification et la régression.

Comprendre KNN

L’algorithme des k-plus proches voisins est basé sur le principe que les points de données similaires tendent à être proches les uns des autres. Dans la classification KNN, lorsque nous devons attribuer une classe à un nouvel échantillon, nous regardons les k échantillons les plus proches (en termes de distance) et attribuons la classe majoritaire parmi ces voisins.

Implémentation en Python

Nous utiliserons la bibliothèque Scikit-learn pour implémenter KNN.

Tout d’abord, assurez-vous d’installer Scikit-learn s’il n’est pas déjà installé :

pip install scikit-learn

Ensuite, voici un exemple simple d’implémentation KNN pour la classification :

# Import des bibliothèques nécessaires
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
from sklearn import metrics

# Charger l'ensemble de données Iris
iris = load_iris()
X = iris.data
y = iris.target

# Diviser l'ensemble de données en ensembles de formation et de test
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# Initialiser le classificateur KNN avec k=3
knn = KNeighborsClassifier(n_neighbors=3)

# Entraîner le classificateur sur l'ensemble de formation
knn.fit(X_train, y_train)

# Prédire les classes pour l'ensemble de test
y_pred = knn.predict(X_test)

# Calculer la précision
accuracy = metrics.accuracy_score(y_test, y_pred)
print("Précision :", accuracy)

Dans cet exemple, nous utilisons l’ensemble de données Iris, divisons les données en ensembles de formation et de test, initialisons un classificateur KNN avec k=3, entraînons le modèle sur l’ensemble de formation et évaluons la précision sur l’ensemble de test.

Voici comment ces cas particuliers peuvent être accompagnés de code Python utilisant l’algorithme KNN :

1. Jeu de données non linéairement séparables :
from sklearn.datasets import make_moons
from sklearn.neighbors import KNeighborsClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score

# Générer un jeu de données non linéairement séparables
X, y = make_moons(n_samples=1000, noise=0.3, random_state=42)

# Diviser l'ensemble de données en ensembles de formation et de test
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# Initialiser le classificateur KNN
knn = KNeighborsClassifier(n_neighbors=5)

# Entraîner le classificateur sur l'ensemble de formation
knn.fit(X_train, y_train)

# Prédire les classes pour l'ensemble de test
y_pred = knn.predict(X_test)

# Calculer la précision
accuracy = accuracy_score(y_test, y_pred)
print("Précision :", accuracy)
2. Classification de données déséquilibrées :
from sklearn.datasets import make_classification
from sklearn.neighbors import KNeighborsClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score

# Générer un jeu de données déséquilibré
X, y = make_classification(n_samples=1000, n_features=20, weights=[0.1, 0.9], random_state=42)

# Diviser l'ensemble de données en ensembles de formation et de test
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# Initialiser le classificateur KNN
knn = KNeighborsClassifier(n_neighbors=5)

# Entraîner le classificateur sur l'ensemble de formation
knn.fit(X_train, y_train)

# Prédire les classes pour l'ensemble de test
y_pred = knn.predict(X_test)

# Calculer la précision
accuracy = accuracy_score(y_test, y_pred)
print("Précision :", accuracy)
3. Données à haute dimensionnalité :
from sklearn.datasets import make_classification
from sklearn.neighbors import KNeighborsClassifier
from sklearn.model_selection import train_test_split
from sklearn.decomposition import PCA
from sklearn.metrics import accuracy_score

# Générer un jeu de données à haute dimensionnalité
X, y = make_classification(n_samples=1000, n_features=100, random_state=42)

# Réduire la dimensionnalité avec l'analyse en composantes principales (PCA)
pca = PCA(n_components=10)
X_pca = pca.fit_transform(X)

# Diviser l'ensemble de données en ensembles de formation et de test
X_train, X_test, y_train, y_test = train_test_split(X_pca, y, test_size=0.2, random_state=42)

# Initialiser le classificateur KNN
knn = KNeighborsClassifier(n_neighbors=5)

# Entraîner le classificateur sur l'ensemble de formation
knn.fit(X_train, y_train)

# Prédire les classes pour l'ensemble de test
y_pred = knn.predict(X_test)

# Calculer la précision
accuracy = accuracy_score(y_test, y_pred)
print("Précision :", accuracy)
4. Peu de données d’entraînement :
from sklearn.datasets import load_iris
from sklearn.neighbors import KNeighborsClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score

# Charger l'ensemble de données Iris
iris = load_iris()
X = iris.data
y = iris.target

# Diviser l'ensemble de données en ensembles de formation et de test
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.9, random_state=42)

# Initialiser le classificateur KNN
knn = KNeighborsClassifier(n_neighbors=5)

# Entraîner le classificateur sur l'ensemble de formation
knn.fit(X_train, y_train)

# Prédire les classes pour l'ensemble de test
y_pred = knn.predict(X_test)

# Calculer la précision
accuracy = accuracy_score(y_test, y_pred)
print("Précision :", accuracy)
5. Changements fréquents dans les données :

KNN peut être adapté pour prendre en compte les changements fréquents en réentraînant simplement le modèle avec les nouvelles données.

Ces exemples illustrent comment l’algorithme KNN peut être utilisé dans différents cas particuliers avec du code Python.

Conclusion

KNN est un algorithme simple mais puissant pour la classification et la régression. En utilisant Python et Scikit-learn, nous pouvons facilement implémenter et expérimenter avec cet algorithme sur divers ensembles de données. N’hésitez pas à ajuster la valeur de k et à explorer d’autres fonctionnalités de Scikit-learn pour approfondir votre compréhension de KNN et de l’apprentissage automatique en général.

Recommandés

CSV en Python — du téléchargement au...
Le CSV paraît simple, jusqu’au...
En savoir plus
Python : pandas.to_csv — Exporter propre, fiable...
DataFrame.to_csv devient un contrat d’échange :...
En savoir plus
Python : pandas.read_csv — Guide pratique enrichi
Pourquoi read_csv reste incontournable Parce qu’il transforme...
En savoir plus
Pratique de l’apprentissage automatique avec scikit-learn et...
Cet article vous guide, pas à...
En savoir plus
Python & finance PME — un kit...
Pour une PME, la finance est...
En savoir plus
Python pour la finance — les fonctions...
Python est devenu l’outil “couteau suisse”...
En savoir plus
AZ

Recent Posts

Fiche de révision nature des mots en PDF

Quand on parle de nature des mots, beaucoup d’élèves ont l’impression d’entrer dans un chapitre…

7 heures ago

Fiche de révision Trigonométrie 3ème PDF — comprendre, retenir et réussir

Si la trigonométrie te paraît floue, rassure-toi : en 3ème, elle repose sur quelques réflexes…

8 heures ago

Calculer son signe chinois avec un outil en ligne

Si vous voulez connaître votre signe chinois sans passer par des tableaux interminables, vous êtes…

17 heures ago

Simulateur LOA Matériel Pro — Estimer le leasing d’un équipement sans se raconter d’histoires

Quand on finance une voiture, tout le monde voit à peu près de quoi il…

1 jour ago

Simulateur LOA Auto — Estimer son leasing voiture sans se tromper

On connaît tous ce moment : on tombe sur une offre de leasing “à partir…

1 jour ago

Différence maintenance niveau 1, niveau 2 et niveau 3 en industrie

Dans l’industrie, parler de maintenance sans préciser le niveau d’intervention revient souvent à créer de…

1 jour ago

This website uses cookies.