Aller au contenu

Numérique et sciences informatiques (spécialité) · Première

Algorithme des k plus proches voisins : cours de NSI Première

Publié le 6 novembre 2026 · Mis à jour le 6 novembre 2026 · Signaler une erreur

L'essentiel

  • L'algorithme des k plus proches voisins prédit la classe d'une donnée nouvelle en regardant les k données connues les plus proches d'elle. 3
  • C'est un algorithme d'apprentissage supervisé : il faut des exemples déjà labellisés, c'est-à-dire dont la classe est connue. 2
  • Il n'y a pas de véritable phase d'apprentissage : on conserve le jeu de données, puis on calcule les distances au moment de la prédiction. 2
  • En classification, on retient la classe majoritaire parmi les k voisins ; en régression, on calcule la moyenne de leurs valeurs. 3
  • Le choix de k change le résultat : avec k = 1 seul le plus proche voisin décide, un k trop grand mélange des voisins lointains. 3

À quoi sert cet algorithme ?

Imagine que tu aies mesuré la longueur et la largeur des pétales de plusieurs fleurs, et que tu connaisses l'espèce de chacune. Un jour, tu trouves une fleur nouvelle : tu mesures ses pétales, mais tu ne connais pas son espèce. Comment deviner ? Une idée naturelle consiste à chercher, parmi les fleurs déjà connues, celles qui ressemblent le plus à la nouvelle, puis à copier leur espèce. C'est exactement ce que fait l'algorithme des k plus proches voisins, que l'on abrège souvent en k-NN (de l'anglais k-nearest neighbors). 3

Cet algorithme appartient à la famille des algorithmes d'apprentissage automatique (en anglais machine learning). 2 Au programme de Première, il figure dans la partie « Algorithmique » : il permet à un programme de prendre une décision à partir d'exemples plutôt qu'à partir de règles écrites à la main. 1

Dans ce cours, tu vas voir :

  • ce que veut dire « apprentissage supervisé » et pourquoi il faut des données labellisées ;
  • comment mesurer la proximité entre deux données grâce à une distance ;
  • le déroulement précis de l'algorithme ;
  • un exemple entièrement calculé à la main ;
  • l'influence du paramètre k ;
  • une écriture en Python et ses limites.

Apprentissage supervisé et données labellisées

Pour comprendre l'algorithme, il faut d'abord comprendre le vocabulaire de l'apprentissage automatique.

Les k plus proches voisins relèvent de l'apprentissage supervisé : on doit posséder des exemples labellisés. 2 Une donnée labellisée est une donnée dont on connaît déjà la réponse attendue, appelée label ou classe. Concrètement, on dispose d'un jeu d'apprentissage composé de couples « entrée-sortie ». 3

Prenons un exemple concret :

Entrée (ce qu'on mesure) Sortie (la classe)
longueur et largeur des pétales d'une fleur espèce de la fleur
coordonnées d'un point dans le plan couleur du point (rouge ou bleu)
paramètres chiffrés d'un objet catégorie de l'objet

Le travail de l'algorithme consiste alors à prédire la sortie pour une entrée dont on ne connaît pas la sortie.

Une démonstration classique de l'algorithme utilise trois espèces d'iris (Iris setosa, Iris virginica et Iris versicolor). Quand on représente les mesures de ces fleurs sur un graphique, les trois classes apparaissent relativement bien séparées. 2 C'est une bonne situation pour les k plus proches voisins : si les classes forment des groupes assez distincts, les voisins d'une nouvelle fleur ont de grandes chances d'appartenir à la même classe qu'elle.

Mesurer la proximité : la distance

Pour parler de « plus proches voisins », il faut savoir mesurer la proximité entre deux données. La méthode s'appuie donc sur une distance à définir selon le problème. 3 Comme l'algorithme est basé sur la distance, une normalisation des données peut améliorer sa précision. 3

Le choix usuel pour des variables continues, c'est-à-dire des mesures qui peuvent prendre n'importe quelle valeur dans un intervalle, est la distance euclidienne. 3 C'est la distance « à vol d'oiseau » que tu connais depuis le collège.

Quand une donnée est décrite par plus de deux nombres, on ajoute simplement un terme de plus sous la racine par mesure supplémentaire. Pour deux données à trois mesures, la distance vaut (a1−b1)2+(a2−b2)2+(a3−b3)2\sqrt{(a_1-b_1)^2+(a_2-b_2)^2+(a_3-b_3)^2}. Il est même possible de représenter un objet décrit par mm paramètres chiffrés comme un point d'un espace à mm dimensions. 4

La distance euclidienne n'est pas la seule possible. Pour des variables discrètes, comme en classification de texte, on peut utiliser une autre distance, par exemple la distance de Hamming. 3 Au programme de Première, tu travailleras presque toujours avec la distance euclidienne.

Le principe de l'algorithme

On dispose d'un jeu de données de nn éléments, chacun avec sa classe, et d'une nouvelle donnée xx à classer. On se donne aussi un entier kk inférieur ou égal à nn. 2

Il n'y a pas d'étape d'apprentissage au sens strict : on se contente de conserver le jeu de données. 2 Tout le travail a lieu au moment où l'on veut classer une nouvelle donnée.

Le déroulement de l'algorithmeCinq étapes successives : choisir k, calculer les distances, retenir les k plus proches, compter les classes, affecter la classe majoritaire.1Choisir kFixer le nombre de voisins et la distance à utiliser.2CalculerDistance entre la donnée à classer et chaque exemple.3RetenirGarder les k exemples les plus proches.4CompterDénombrer les classes parmi ces k voisins.5DéciderAffecter la classe majoritaire à la donnée.
  1. Choisir kFixer le nombre de voisins et la distance à utiliser.
  2. CalculerDistance entre la donnée à classer et chaque exemple.
  3. RetenirGarder les k exemples les plus proches.
  4. CompterDénombrer les classes parmi ces k voisins.
  5. DéciderAffecter la classe majoritaire à la donnée.
Le déroulement de l'algorithme · Du choix de k à la décision finale.

Pour trouver les kk plus proches voisins, une méthode directe consiste à parcourir tous les points du jeu de données. Pour chaque point, on regarde s'il est plus proche que l'un des voisins déjà retenus ; si oui, on l'insère dans la liste des voisins et on supprime le plus éloigné pour garder exactement kk points. 4 Tu reconnais là un parcours séquentiel, comme tu en as déjà écrit pour chercher un minimum dans un tableau.

Un exemple entièrement calculé

Plaçons-nous dans le plan. Notre jeu de données contient sept points, répartis en deux classes, A et B :

  • classe A : A1(1;2)A_1(1 ; 2), A2(2;1)A_2(2 ; 1), A3(1;3)A_3(1 ; 3) ;
  • classe B : B1(3;3)B_1(3 ; 3), B2(5;4)B_2(5 ; 4), B3(6;5)B_3(6 ; 5), B4(5;6)B_4(5 ; 6).

On veut classer le point nouveau P(3;2)P(3 ; 2).

Points classés selon leur distance à P(3 ; 2)
RangPointClasseDistance à P
1B1 (3 ; 3)B1
2A2 (2 ; 1)A1,41
3A1 (1 ; 2)A2
4A3 (1 ; 3)A2,24
5B2 (5 ; 4)B2,83
6B3 (6 ; 5)B4,24
7B4 (5 ; 6)B4,47
Points classés selon leur distance à P(3 ; 2) · Distances arrondies au centième.

Cet exemple montre une chose capitale : le résultat dépend de k. Pour le même point PP et les mêmes données, on obtient B avec k=1k=1, A avec k=3k=3 et k=5k=5, puis B de nouveau avec k=7k=7. Le dernier cas est extrême : avec k=nk = n, la prédiction ne dépend plus du tout de la position de PP, on obtient toujours la classe la plus fréquente du jeu de données. Cela n'a plus aucun intérêt.

Choisir k et affiner la décision

L'algorithme a besoin de connaître le nombre kk de voisins à considérer. 3 Il n'existe pas de valeur universelle. Une méthode classique pour la choisir est la validation croisée. 3 Elle consiste, en gros, à essayer plusieurs valeurs de kk sur des données dont on connaît déjà les classes et à garder celle qui se trompe le moins. Elle dépasse le programme de Première, mais l'idée est utile pour comprendre qu'on teste k plutôt que de le deviner.

Que faire en cas d'égalité ? Le principe de base ne le précise pas : c'est un choix à faire dans le programme. On peut par exemple choisir la classe du voisin le plus proche parmi les classes à égalité, ou augmenter ou diminuer kk d'une unité. L'essentiel est de décider une règle claire, de la documenter et de l'appliquer toujours de la même façon.

Pondérer les voisins. Dans la version de base, les kk voisins comptent à égalité. Il existe une technique efficace qui donne plus de poids aux voisins proches qu'aux voisins éloignés. Un schéma courant donne à chaque voisin le poids 1/d1/d, où dd est sa distance à la donnée à classer. 3 Dans notre exemple, B1B_1 (à distance 1) compterait alors deux fois plus que A1A_1 (à distance 2).

Programmer l'algorithme en Python

On représente le jeu de données par une liste de couples (point, classe), où point est un tuple de coordonnées. Pour la donnée à classer, on utilise aussi un tuple.

from math import sqrt

def distance(p, q):
    return sqrt((p[0] - q[0]) ** 2 + (p[1] - q[1]) ** 2)

def k_plus_proches(donnees, x, k):
    couples = [(distance(p, x), classe) for (p, classe) in donnees]
    couples.sort()
    return couples[:k]

def classe_majoritaire(voisins):
    effectifs = {}
    for (d, classe) in voisins:
        effectifs[classe] = effectifs.get(classe, 0) + 1
    meilleure = None
    for classe in effectifs:
        if meilleure is None or effectifs[classe] > effectifs[meilleure]:
            meilleure = classe
    return meilleure

def knn(donnees, x, k):
    return classe_majoritaire(k_plus_proches(donnees, x, k))

Avec notre exemple, knn(donnees, (3, 2), 3) renvoie 'A', comme dans le calcul à la main.

Analysons ce code :

  • distance applique la formule de la distance euclidienne ;
  • k_plus_proches associe à chaque point du jeu de données sa distance à x, trie les couples par distance croissante, puis garde les k premiers ;
  • classe_majoritaire compte les classes avec un dictionnaire et renvoie celle dont l'effectif est le plus grand. En cas d'égalité, elle garde la première rencontrée, ce qui constitue une règle de départage parmi d'autres ;
  • knn assemble les deux fonctions précédentes.

Le tri complet n'est pas indispensable : le parcours séquentiel avec une liste de kk voisins, évoqué plus haut, suffit. 4 Le tri a l'avantage d'être court à écrire, ce qui est pratique pour s'entraîner.

Coût et limites de l'algorithme

Un avantage : pas d'entraînement. Puisqu'il suffit de conserver le jeu de données, on peut ajouter de nouveaux exemples à tout moment sans « réapprendre » quoi que ce soit. 2

Un coût au moment de la prédiction. Chaque nouvelle prédiction oblige à comparer la donnée à classer avec les nn éléments du jeu de données. La recherche séquentielle, qui parcourt tous les points, a un temps de calcul linéaire en la taille de l'ensemble, noté O(n)O(n), tant que kk reste très petit devant nn. 4 Si ton jeu de données double de taille, la recherche prend environ deux fois plus de temps. Tu as déjà rencontré cette notion de coût d'un algorithme en étudiant les tris.

Des limites à connaître.

  • Le résultat dépend de la distance et de la valeur de kk, deux choix qui ne sont pas imposés par les données. 3
  • Sans normalisation, une mesure à grande échelle peut dominer les autres. 3
  • La qualité de la prédiction dépend de la qualité des données labellisées : si les classes se mélangent beaucoup dans l'espace des mesures, les voisins ne suffisent pas à trancher.
  • On peut améliorer la précision en apprenant la distance avec des algorithmes spécialisés, ce qui dépasse le niveau de la classe de Première. 3

Les erreurs fréquentes

Exercices corrigés

Exercice 1 Calculer une distance euclidienne

★☆☆Environ 5 min

Dans un repère orthonormé, on considère le point U(2;5)U(2 ; 5) du jeu de données et le point V(6;8)V(6 ; 8) à classer. Calcule la distance UVUV.

Indice 1

Écris les différences des abscisses et des ordonnées, puis élève-les au carré.

Indice 2

Additionne les deux carrés avant de prendre la racine.

Voir la correction pas à pas
  1. On applique la formule d=(xV−xU)2+(yV−yU)2d=\sqrt{(x_V-x_U)^2+(y_V-y_U)^2}.

  2. Différence des abscisses : 6−2=46-2=4, dont le carré vaut 1616.

  3. Différence des ordonnées : 8−5=38-5=3, dont le carré vaut 99.

  4. Somme : 16+9=2516+9=25.

  5. Racine : 25=5\sqrt{25}=5.

La distance UVUV vaut 55. C'est un triplet pythagoricien (3, 4, 5), ce qui permet de vérifier le résultat de tête.

Exercice 2 Classer un point avec k = 3

★★☆Environ 12 min

Le jeu de données contient cinq points :

Point Coordonnées Classe
E1E_1 (3;3)(3 ; 3) A
E2E_2 (0;2)(0 ; 2) A
E3E_3 (2;5)(2 ; 5) B
E4E_4 (6;2)(6 ; 2) B
E5E_5 (6;6)(6 ; 6) B

On veut classer le point N(2;2)N(2 ; 2) avec k=3k=3.

  1. Calcule les distances de NN à chaque point.
  2. Détermine les trois plus proches voisins et la classe de NN.
  3. Donne la distance de NN à son troisième plus proche voisin.
Indice 1

Calcule d'abord les cinq distances, sous forme exacte avec une racine si besoin.

Indice 2

Range-les par ordre croissant avant de choisir les trois premières.

Voir la correction pas à pas
  1. Distance à E1E_1 : (3−2)2+(3−2)2=2≈1,41\sqrt{(3-2)^2+(3-2)^2}=\sqrt{2}\approx 1{,}41.

  2. Distance à E2E_2 : (0−2)2+(2−2)2=2\sqrt{(0-2)^2+(2-2)^2}=2.

  3. Distance à E3E_3 : (2−2)2+(5−2)2=3\sqrt{(2-2)^2+(5-2)^2}=3.

  4. Distance à E4E_4 : (6−2)2+(2−2)2=4\sqrt{(6-2)^2+(2-2)^2}=4.

  5. Distance à E5E_5 : (6−2)2+(6−2)2=32≈5,66\sqrt{(6-2)^2+(6-2)^2}=\sqrt{32}\approx 5{,}66.

  6. Classement : E1E_1, E2E_2, E3E_3, E4E_4, E5E_5. Les trois plus proches sont E1E_1 (A), E2E_2 (A) et E3E_3 (B).

  7. Vote : deux A contre un B, donc NN est classé en A.

  8. Le troisième voisin est E3E_3, à la distance 33.

Le point NN est de classe A, avec un vote de 2 contre 1. Le troisième voisin est à la distance 33. Avec k=1k=1, le résultat aurait été A aussi ; avec k=5k=5, les trois points de B l'emporteraient (trois B contre deux A).

Exercice 3 Prédire une valeur par régression

★★★Environ 15 min

Une agence connaît le prix de cinq logements selon leur surface :

Surface (m²) Prix (k€)
30 90
44 130
48 140
55 150
70 200

On veut estimer le prix d'un logement de 5050 m² avec l'algorithme des k plus proches voisins en régression, avec k=3k=3. Ici, la distance entre deux surfaces ss et s′s' est ∣s−s′∣|s-s'|.

  1. Calcule la distance de 5050 à chaque surface.
  2. Détermine les trois plus proches voisins.
  3. Donne le prix estimé en k€.
Indice 1

La distance entre deux nombres est la valeur absolue de leur différence.

Indice 2

En régression, on ne vote pas : on fait une moyenne.

Voir la correction pas à pas
  1. Distances à 5050 : ∣30−50∣=20|30-50|=20 ; ∣44−50∣=6|44-50|=6 ; ∣48−50∣=2|48-50|=2 ; ∣55−50∣=5|55-50|=5 ; ∣70−50∣=20|70-50|=20.

  2. Classement croissant : 48 (distance 2), 55 (distance 5), 44 (distance 6), puis 30 et 70 (distance 20).

  3. Les trois plus proches voisins sont donc les logements de 48, 55 et 44 m², de prix 140, 150 et 130 k€.

  4. En régression, le résultat est la moyenne de leurs valeurs : 140+150+1303=4203=140\dfrac{140+150+130}{3}=\dfrac{420}{3}=140.

Le prix estimé pour 50 m² est de 140140 k€. Le logement de 30 m² et celui de 70 m², trop éloignés, n'ont pas influencé le résultat : c'est tout l'intérêt de ne retenir que les voisins proches.

Quiz

8 questions · correction immédiate · ton score reste sur ton appareil.

  1. L'algorithme des k plus proches voisins est un algorithme :

  2. En classification avec k=1k=1, la classe attribuée à une nouvelle donnée est :

  3. Quelle distance est couramment utilisée pour des variables continues ?

  4. On classe un point avec k=5k=5. Parmi ses voisins, il y a 2 points de classe A et 3 points de classe B. La classe prédite est :

  5. Calcule la distance euclidienne entre M(1;2)M(1 ; 2) et N(4;6)N(4 ; 6).

  6. En régression, la valeur prédite par l'algorithme des k plus proches voisins est :

  7. L'algorithme des k plus proches voisins comporte une phase d'apprentissage longue, qui doit être refaite à chaque nouvelle donnée.

  8. Une recherche séquentielle des kk plus proches voisins dans un jeu de nn points, avec kk très petit devant nn, a un temps de calcul :

Les questions qu'on se pose

À quoi sert l'algorithme des k plus proches voisins ?

Il sert à prédire une classe ou une valeur pour une donnée nouvelle, à partir d'exemples dont on connaît le résultat. Il fait partie des algorithmes d'apprentissage automatique. 2 La recherche de voisinage est utilisée dans de nombreux domaines, comme la reconnaissance de formes ou la prédiction de séries temporelles. 4 Au programme de Première, il illustre comment un programme peut décider à partir de données plutôt que de règles écrites à la main.

Comment choisir la valeur de k ?

Il n'y a pas de valeur imposée. L'algorithme a besoin que l'on fixe kk, et une méthode classique pour le choisir est la validation croisée, qui consiste à tester plusieurs valeurs. 3 En pratique, on prend un petit entier. 3 Pour deux classes, un kk impair évite les égalités de vote. Un kk égal à 1 rend la décision sensible à un point isolé, un kk trop grand mélange des voisins lointains.

Que se passe-t-il quand plusieurs classes arrivent à égalité ?

Le principe ne tranche pas : c'est une règle à choisir et à écrire dans ton programme. Tu peux par exemple prendre la classe du voisin le plus proche parmi les classes à égalité, ou modifier kk. L'important est d'appliquer la même règle à chaque prédiction. Avec deux classes et un kk impair, le problème ne se pose pas.

Pourquoi faut-il parfois normaliser les données ?

Parce que l'algorithme repose sur la distance. 3 Si une mesure a de grandes valeurs et une autre de petites valeurs, la première domine le calcul de la distance. La normalisation ramène les mesures à des échelles comparables et peut améliorer la précision. 3

Quelle est la différence entre classification et régression avec cet algorithme ?

En classification, le résultat est une classe, obtenue par vote majoritaire des kk voisins. En régression, le résultat est une valeur, obtenue en calculant la moyenne des valeurs des kk voisins. 3 La méthode de recherche des voisins est la même dans les deux cas : seule la façon de combiner leurs réponses change.

Sources

Programme visé : Programme de numérique et sciences informatiques de première générale — Algorithmique · Ministère de l'Éducation nationale

  1. Programme de numérique et sciences informatiques de première générale — Algorithmique, Ministère de l'Éducation nationale. Consulté le 6 novembre 2026.
  2. Algorithme des k plus proches voisins — Ressource Éduscol, Éduscol. Consulté le 6 novembre 2026.
  3. Méthode des k plus proches voisins, Wikipédia. Consulté le 6 novembre 2026.
  4. Recherche des plus proches voisins, Wikipédia. Consulté le 6 novembre 2026.

Les numéros dans le texte renvoient à ces sources. Une source qui ne dit pas ce qu'on lui fait dire ? Signale-le.

Signaler une erreur sur cette page

Je suis en…

Primaire

  • CP Bientôt
  • CE1 Bientôt
  • CE2 Bientôt
  • CM1 Bientôt
  • CM2 Bientôt

Collège

Lycée

Supérieur

  • BTS Bientôt
  • BUT Bientôt
  • Licence Bientôt
  • Prépas Bientôt

Sur cette page