Explication simple du programme KNN
Algorithme des k plus proches voisins en Python
Ce document explique facilement un programme Python qui utilise la méthode des k plus proches
voisins, aussi appelée KNN. Le but est de classer un nouveau point en regardant les points connus
les plus proches de lui.
1. Idée générale du programme
Le programme reçoit une liste de points déjà connus. Chaque point possède une coordonnée et une
classe. Ensuite, pour un nouveau point, le programme cherche les k points les plus proches et choisit
la classe qui revient le plus souvent.
2. Calculer la distance entre deux points
La première fonction calcule la distance entre deux points dans un plan. Elle utilise la formule de
distance entre deux coordonnées.
from math import sqrt
def distance(p1, p2):
return sqrt((p1[0] - p2[0])**2 + (p1[1] - p2[1])**2)
Exemple : si p1 = (1, 2) et p2 = (4, 6), la fonction mesure l’écart entre ces deux points.
3. La fonction principale
La fonction principale s’appelle k_plus_proches_voisins. Elle prend trois informations :
donnees : les points déjà connus avec leur classe.
point : le nouveau point que l’on veut classer.
k : le nombre de voisins les plus proches à regarder.
def k_plus_proches_voisins(donnees, point, k):
4. Calculer les distances
Le programme parcourt tous les points connus. Pour chaque point, il calcule la distance avec le
nouveau point, puis il stocke la distance avec la classe correspondante.
distances = []
for coord, classe in donnees:
d = distance(coord, point)
[Link]((d, classe))
5. Trier les voisins
Après avoir calculé toutes les distances, le programme trie la liste. Les points les plus proches se
retrouvent au début.
[Link]()
6. Garder les k plus proches classes
Ensuite, le programme récupère seulement les classes des k premiers voisins. Le symbole _ signifie
que la distance est ignorée, car on veut garder uniquement la classe.
k_classes = [classe for _, classe in distances[:k]]
7. Choisir la classe majoritaire
Enfin, le programme regarde quelle classe apparaît le plus souvent parmi les k voisins. Cette classe
est retournée comme résultat.
return max(set(k_classes), key=k_classes.count)
8. Exemple complet
donnees = [
((1, 2), "A"),
((2, 3), "A"),
((8, 9), "B"),
((9, 8), "B")
]
point = (2, 2)
resultat = k_plus_proches_voisins(donnees, point, 3)
print(resultat)
Dans cet exemple, le point (2, 2) est proche des points de classe A. Le programme affichera donc
probablement A.
Résumé
En résumé : pour classer un nouveau point, le programme regarde les k points connus les plus
proches de lui, puis choisit la classe la plus fréquente parmi ces voisins.