From 2b26f21dcdac97620606ec3a05818b7022f0ba14 Mon Sep 17 00:00:00 2001 From: Florian Mathieu Date: Fri, 12 Apr 2024 10:51:32 +0200 Subject: [PATCH] edit code python dans le tp choixpeau, ajout sources, typo et suppression lignes inutiles --- knn/TP_KNN.md | 85 ++++++++++++++++----------- knn/{poke.py => exemple_pokemons.py} | 0 representation_base/.DS_Store | Bin 10244 -> 10244 bytes 3 files changed, 51 insertions(+), 34 deletions(-) rename knn/{poke.py => exemple_pokemons.py} (100%) diff --git a/knn/TP_KNN.md b/knn/TP_KNN.md index f36ad1f..ed7025b 100644 --- a/knn/TP_KNN.md +++ b/knn/TP_KNN.md @@ -1,6 +1,6 @@ -## Aidons le Choixpeau magique +## Choixpeau Magique et KNN -## Durée estimée : 70 min +## ### Contexte @@ -8,7 +8,7 @@ ### Données disponibles -Le Choixpeau magique dispose d'un fichier CSV avec les données d'un échantillon d'élèves. Les 6 premières lignes du fichier sont les suivantes : +Le Choixpeau magique dispose d'un [fichier csv](choixpeauMagique.csv) avec les données d'un échantillon d'élèves. Les 6 premières lignes du fichier sont les suivantes : | Nom | Courage | Loyauté | Sagesse | Malice | Maison | | -------- | ------- | ------- | ------- | ------ | ---------- | @@ -59,29 +59,33 @@ $$ + + ```python +import csv def charger_table(nom_fichier): -""" -Permet de charger une liste d'élèves à partir d'un fichier CSV -Paramètre : le nom d'un fichier CSV -Résultat : la liste des élèves + """ +: fonction charger_table : Permet de charger une liste d'élèves à partir d'un fichier CSV +: param nom_fichier : le nom d'un fichier CSV +: return table : la liste des élèves """ - table= [] - with open(nom_fichier, 'r',newline="",encoding="utf-8") as csvfile: - eleve_reader = csv. reader(csvfile, delimiter=";") - eleve_reader.__next__() - for eleve in eleve_reader: - table.append({ "nom": eleve[0], - "courage": int(eleve[1]), - "loyauté": int(eleve[2]), - "sagesse":int(eleve[3]), - "malice":int(eleve[4]), - "maison" : eleve[5]}) - return table + table= [] + with open(nom_fichier, 'r',newline="",encoding="utf-8") as csvfile: + eleve_reader = csv. reader(csvfile, delimiter=";") + eleve_reader.__next__() + for eleve in eleve_reader: + table.append({ "nom": eleve[0], + "courage": int(eleve[1]), + "loyauté": int(eleve[2]), + "sagesse":int(eleve[3]), + "malicez":int(eleve[4]), + "maison" : eleve[5]}) + return table + ``` -L'instruction suivante permet de charger les informations dans une variable poudlard à partir d'un fichier choixpeauMagique. csv qui se trouve dans le**répertoire courant : +L'instruction suivante permet de charger les informations dans une variable **poudlard** à partir d'un fichier choixpeauMagique. csv qui se trouve dans le répertoire courant (n'oubliez pas de l'y déposer ! ) : ```python poudlard = charger_table("choixpeauMagique.csv") @@ -89,7 +93,7 @@ poudlard = charger_table("choixpeauMagique.csv") 1. Dans le code de la fonction charger _table, à la ligne 14, quel est le type de la variable eleve[0] ? -2. Quel est le type de int ( eleve [ 0]) ? Pourquoi a-t-on besoin de la fonction int() ici? +2. Quel est le type de int ( eleve [ 0] ) ? Pourquoi a-t-on besoin de la fonction int() ici? 3. Quel est le type de la variable poudlard ? @@ -106,24 +110,21 @@ On souhaite écrire le code d'une fonction qui prend en paramètre une liste d' ```python def frequence_des_maisons(table): - """ - Paramètre: une liste d'élèves, chaque élève étant modélisé par un dictionnaire - Résultat: un dictionnaire dont les clés sont les maisons et les valeurs, le nombre de fois où cette maison apparaît. - - """ - frequences={} + """ +Paramètre: une liste d'élèves, chaque élève étant modélisé par un dictionnaire +Résultat: un dictionnaire dont les clés sont les maisons et les valeurs, le nombre de fois où cette maison apparaît. +""" + frequences={} for eleve in table: - maison= eleve["maison"] + maison = eleve["maison"] if maison in frequences.keys(): - frequences[maison] frequences[maison] + 1 + frequences[maison] = frequences[maison] + 1 else: frequences[maison] = 1 return frequences -assert frequence_des_maisons(poudlard) == {'Serpentard': 12,'Gryffondor': 17, 'Serdaigle': 11, 'Poufsouffie': 10} ``` -1. Quelle est la signification du nombre 12 qui apparait ligne 17 ? -2. Écrire le code de la fonction rnaison_majoritaire qui prend une liste d'élèves en paramètre et qui renvoie le nom de la maison la plus représentée. +1. Écrire le code de la fonction *maison_majoritaire* qui prend une liste d'élèves en paramètre et qui renvoie le nom de la maison la plus représentée. @@ -135,7 +136,7 @@ assert frequence_des_maisons(poudlard) == {'Serpentard': 12,'Gryffondor': 17, 'S -1. Compléter la formulation de l'algorithme suivant. +1. Écrire et compléter en pseudo code l'algorithme qui suit : Données: @@ -143,6 +144,12 @@ assert frequence_des_maisons(poudlard) == {'Serpentard': 12,'Gryffondor': 17, 'S - nouveau: un nouvel élève qui n'a pas encore de maison. - Résultat : les 7 plus proches voisins du nouveau. + Algorithme : + + - à compléter + - à compléter + - à compléter + 2. Implémenter cet algorithme en Python ------- @@ -166,4 +173,14 @@ Algorithme : - Trouver dans la table les 7 plus proches voisins du nouvel élève. - Parmi ces proches_voisins, trouver la maison majoritaire. - Renvoyer la maison_majoritaire. -- Implémenter cet algorithme en Python \ No newline at end of file +- Implémenter cet algorithme en Python + + + +---------- + +Sources : + +- Prépabac NSI (Édition Hatier) +- [Site de l'académie de Nantes](https://www.pedagogie.ac-nantes.fr/enseignements-informatiques/enseignement/nsi/mini-projet-choixpeau-magique-1447870.kjsp?RH=1158678510343) +- [Gitlab de David Landry](https://gitlab.com/david_landry/nsi) \ No newline at end of file diff --git a/knn/poke.py b/knn/exemple_pokemons.py similarity index 100% rename from knn/poke.py rename to knn/exemple_pokemons.py diff --git a/representation_base/.DS_Store b/representation_base/.DS_Store index be2f620a41fb34f5665e300946e092e99fa99344..59bbf278eb56d01182558f9c8282f59b465d5020 100644 GIT binary patch delta 37 scmZn(XbITxTtdXe#8gMY*vz6