Prépa Code Connexion Inscription

Exercices de programmation pour classes préparatoires

← Retour aux exercices

k plus proches voisins (kNN)

python ★★★☆☆

On dispose d'un jeu de donnees etiquetees : une liste de tuples (x, y, label) ou (x, y) est un point du plan et label son etiquette (un entier). Etant donne un nouveau point (px, py), on souhaite lui attribuer une etiquette grace a la methode des k plus proches voisins.

Ecrire une fonction knn(points_etiquettes, point, k) qui :

  1. calcule la distance euclidienne entre point et chaque point etiquette ;
  2. selectionne les k plus proches ;
  3. renvoie l'etiquette la plus frequente parmi ces k voisins.

En cas d'egalite dans le vote (plusieurs etiquettes a la meme frequence maximale), renvoyer celle qui a ete rencontree la premiere parmi les k voisins (dans l'ordre de proximite croissante).

On supposera k >= 1 et points_etiquettes non vide, avec k <= len(points_etiquettes).

Exemples

AppelRésultat attendu
knn([(0, 0, 1), (1, 0, 2), (2, 2, 1)], (0, 1), 1) 1
knn([(0, 0, 1), (1, 0, 1), (2, 2, 2)], (1, 1), 3) 1

Votre code

Connectez-vous pour soumettre du code.