Choixpeau

Image sans description

Introduction

Dans Harry Potter, le Choixpeau détermine la « maison » de chaque nouvel arrivant. Nous allons tenter d’émuler le Choixpeau avec un algorithme des k plus proches voisins.

Présentation

Nous allons supposer que les élèves sont caractérisés par leur courage, loyauté, sagesse et malice. Nous disposons d’une liste d’élèves avec toutes leurs caractéristiques : http://kxs.fr/cours/algorithmes- premiere/choixpeau.csv. On donne le code pour importer les données sous forme de tuples :

import pandas
import matplotlib.pyplot as plt

eleve=pandas.read_csv("choixpeau.csv", sep=";")
nom=eleve.loc[:,"Nom"].to_list()
courage=eleve.loc[:,"Courage"].to_list()
loyaute=eleve.loc[:,"Loyauté"].to_list()
sagesse=eleve.loc[:,"Sagesse"].to_list()
malice=eleve.loc[:,"Malice"].to_list()
maison=eleve.loc[:,"Maison"].to_list()

# tab contient tous des tuples de
# la forme (nom, courage, loyaute, sagesse, malice, maison)
tab = []

for i in range(len(nom)):
    tab.append((nom[i], courage[i], loyaute[i], sagesse[i], malice[i], maison[i]))

Et nous cherchons à attribuer une maison aux nouveaus élèves suivants :

NomCourageLoyautéSagesseMalice
Hermione8666
Drago6658
Chlo7696
Cédric71056

Travail

  1. Modifiez le code d’importation ci-dessus pour que les données importées soient sous forme de dictionnaire :
    {'Nom': 'Bellatrix', 'Courage': 10, 'Loyauté': 4, 'Sagesse': 9, 'Malice': 9, 'Maison': 'Serpentard'}
  1. Créez une fonction distance(eleve1, eleve2) qui donne la distance euclidienne entre deux élèves.

  2. Implémentez en Python l’algorithme des 7 plus proches voisins. L’algorithme doit retourner la maison du nouvel élève.

  3. Déterminez alors les maisons affectées par le Choixpeau aux quatre nouveaux élèves.

Source

Cette activité est librement inspirée de l’activité sur le choixpeau de Philippe Boddaert.

Retour