ENSAE Ecole Nationale de la Statistique et de l ... - xavierdupre.fr
ENSAE Ecole Nationale de la Statistique et de l ... - xavierdupre.fr
ENSAE Ecole Nationale de la Statistique et de l ... - xavierdupre.fr
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
1. Séances notées 22<strong>de</strong>f n_sous_nuages (n, nb) :# r<strong>et</strong>ourne une liste <strong>de</strong> 2-uples3) Dessiner le nuage avec le module matplotlib pour vérifier que le résultat correspond à vos attentes. Onpourra s’appuyer sur l’extrait qui suit. (1 point)import matplotlib.pyplot as pltx = [ ... ]y = [ ... ]fig = plt.figure()ax = fig.add_subplot(111)ax.plot (x,y, ’o’)plt.savefig ("im1.png") # ou plt.show () pour afficher le graphe4) L’algorithme <strong>de</strong>s nuées dynamiques commence par affecter chaque point à une c<strong>la</strong>sse choisie au hasard.Pour c<strong>et</strong>te tâche, on pourra utiliser <strong>la</strong> fonction randint du module random. On veut créer une fonction quir<strong>et</strong>ourne une c<strong>la</strong>sse aléatoire pour chaque point du nuage. Elle doit prendre comme entrée le nombre <strong>de</strong>c<strong>la</strong>sses souhaité. (2 points)<strong>de</strong>f random_c<strong>la</strong>ss (points, n) :# r<strong>et</strong>ourne une liste d’entiers5) L’algorithme <strong>de</strong>s nuées dynamiques répète ensuite alternativement <strong>de</strong>ux étapes :Etape 1Etape 2On calcule le barycentre <strong>de</strong> chaque c<strong>la</strong>sse.On associe à chaque point <strong>la</strong> c<strong>la</strong>sse dont le barycentre est le plus proche(au sens <strong>de</strong> <strong>la</strong> distance euclidienne).On propose <strong>de</strong> commencer par écrire une fonction qui r<strong>et</strong>ourne pour un point donné le barycentre le plusproche. (2 points)<strong>de</strong>f proche_barycentre (point, barycentres) :# r<strong>et</strong>ourne un entier6) La fonction suivante r<strong>et</strong>ourne le barycentre le plus proche pour chaque point. (2 points)<strong>de</strong>f association_barycentre (points, barycentres) :# r<strong>et</strong>ourne une liste d’entiers7) On découpe <strong>la</strong> première étape <strong>de</strong> <strong>la</strong> même façon :1. Première fonction : calcule le barycentre d’une c<strong>la</strong>sse.2. Secon<strong>de</strong> fonction : calcule le barycentre <strong>de</strong> toutes les c<strong>la</strong>sses.Il faut implémenter ces <strong>de</strong>ux fonctions. (3 points sans utiliser numpy, 4 points avec numpy <strong>et</strong> une fonction).<strong>de</strong>f barycentre_c<strong>la</strong>sse (points, c<strong>la</strong>sses, numero_c<strong>la</strong>ss) : # r<strong>et</strong>ourne un 2-uple<strong>de</strong>f tous_barycentres (points, c<strong>la</strong>sses) : # r<strong>et</strong>ourne une liste <strong>de</strong> 2-uples8) L’algorithme commence par <strong>la</strong> création <strong>de</strong>s c<strong>la</strong>sses (fonction n_sous_nuages) <strong>et</strong> l’attribution d’une c<strong>la</strong>sseau hasard (fonction random_c<strong>la</strong>ss). Il faut ensuite répéter les fonctions tous_barycentres <strong>et</strong> association_barycentre.L’enchaînement <strong>de</strong> ces opérations est effectué par <strong>la</strong> fonction nuees_dynamiques. (2 points)<strong>de</strong>f nuees_dynamiques (points, nombre_c<strong>la</strong>sses) : # r<strong>et</strong>ourne une liste d’entiers