Sur un jeu d'exemples à deux classes que vous construirez, appliquer k…
Exercice de TD · niveau 2 · NSI (première), chapitre 8 — Dichotomie, voisins et gloutons · Les plus proches voisins
Énoncé
Sur un jeu d'exemples à deux classes que vous construirez, appliquer k_plus_proches_voisins avec , , , puis avec égal au nombre total d'exemples. Que se passe-t-il ?
Corrigé
EXEMPLES = [((1, 1), "A"), ((1, 2), "A"), ((2, 1), "A"), ((2, 2), "A"),
((0, 2), "A"), ((0, 1), "A"),
((7, 7), "B"), ((7, 8), "B"), ((8, 7), "B"), ((8, 8), "B"),
((9, 7), "B")]
point = (5, 5)
for k in [1, 3, 5, 7, 9]:
assert k_plus_proches_voisins(EXEMPLES, point, k) == "B"
assert k_plus_proches_voisins(EXEMPLES, point, 11) == "A"
Le point bascule à , et la raison n'a rien à voir avec le point. Le jeu compte six et cinq . Quand vaut le nombre total d'exemples, tous les exemples votent : la distance ne joue plus aucun rôle, et la réponse est la classe majoritaire du jeu de données — quel que soit le point.
for p in [(0, 0), (5, 5), (9, 9), (100, 100)]:
assert k_plus_proches_voisins(EXEMPLES, p, 11) == "A"
Un point situé au beau milieu du groupe , et même à cent unités de tout, reçoit la réponse . trop grand détruit l'algorithme : il ne prédit plus rien, il récite la composition du jeu.
À l'autre bout, suit le voisin le plus proche, donc le moindre point aberrant. Le choix de est un arbitrage entre ces deux excès, et il se fait par l'expérience — c'est l'objet d'un exercice d'entraînement plus loin.
Un détail que la mesure révèle. Parmi les voisins de , deux sont à égale distance : un en et un en . Lequel entre dans les « plus proches » quand la coupure tombe entre eux ? Celui que le tri place en premier — c'est-à-dire, le tri de Python étant stable, celui qui figurait en premier dans EXEMPLES. L'ordre de saisie des données influence la prédiction : cela mérite d'être su.
Les autres exercices de ce chapitre Le cours du chapitre
Un blocage sur cet exercice ? Le tuteur d'Adloun guide par questions, sans donner la réponse.