From 38eb4585556f509cb3f5fbca0989d90a85bbc656 Mon Sep 17 00:00:00 2001 From: "sacha.serny" Date: Thu, 19 May 2022 08:39:13 +0200 Subject: [PATCH] update python --- py_main.py | 41 +++++++++++++++++++++++++++++------------ 1 file changed, 29 insertions(+), 12 deletions(-) diff --git a/py_main.py b/py_main.py index 0c952ec..1b6db17 100644 --- a/py_main.py +++ b/py_main.py @@ -20,7 +20,8 @@ def estBissextile(a): return (a%4==0 and a%100!=0) or a%400==0 def distance (pos1, pos2): - """Fonction distance qui prend en paramètre 2 tuples (Numéro du jour, Température moyenne, température de référence) et qui renvoie un nombre réel représentant la distance euclidienne""" + + """fonction distance qui prend en paramètre 2 tuples (Numéro du jour, Température moyenne, température de référence) et qui renvoie un nombre réel représentant la distance euclidienne""" x1, y1, z1 = pos1 x2, y2, z2 = pos2 diff_njour1, diff_njour2 = x1-x2, x2-x1 @@ -28,20 +29,22 @@ def distance (pos1, pos2): diff = x1-x2 else: diff = x2-x1 - return ((diff)**2)+((y1-y2)**2)+((z1-z2)**2) + + return np.sqrt((diff)**2)+((y1-y2)**2)+((z1-z2)**2) def kPlusProches(echantillon, donnees, k): - """ à reprendre : CHAOS """ + """ à reprendre -> !! TOTAL CHAOS !! U_u 0w0 *_* """ voisins = [] for i in range(len(donnees)): - date, t_moy, t_ref = donnees[i] + date, t_moy, t_ref, conso = donnees[i] d = distance(echantillon, (date, t_moy, t_ref)) voisins.append((d, i)) voisins = sorted(voisins) return [voisins[i][1] for i in range(k)] def numeroJour(date): - """Donne le numéro du jour dans l'année de la date "2442-04-24" """ + """renvoie le numéro du jour dans l'année de la date "2442-04-24" """ + date = date.split('-') a, m, j = date a, m, j = int(a), int(m), int(j) @@ -49,17 +52,22 @@ def numeroJour(date): mois = (0,31,60,91,121,152,182,213,244,274,305,335,366) else: mois = (0,31,59,90,120,151,181,212,243,273,304,334,365) - return mois[m-1] + j + + return int(mois[m-1] + j) + def PuissanceMoyenne(consos, i_voisins): """renvoie la puissance moyenne, prend en entrée une liste triée en fonction de la distance""" res = 0 for el in i_voisins: - res += consos[i_voisins] + + res += consos[el] return res/(len(i_voisins)) def triAvecIndices(lst): + """J'sais même pas ce que je fais""" + tab_i= [] tab = [] for i in range(len(lst)): @@ -68,10 +76,19 @@ def triAvecIndices(lst): return tab num_jour = [] -dates, consos, t_moys, t_refs = lecture("pic-journalier-consommation.csv") + +dates, consos, t_pics, t_refs = lecture("pic-journalier-consommation.csv") for date in dates: num_jour.append(numeroJour(date)) -coords = list(zip(num_jour, t_moys, t_refs)) -print(coords) -print(kPlusProches((80, 14, 9), coords, 4)) -print(PuissanceMoyenne(consos, kPlusProches((80, 14, 9), coords, 4))) +coords = list(zip(num_jour, t_pics, t_refs, consos)) + +#print(kPlusProches((80, 14, 9), coords, 20) +print(PuissanceMoyenne(consos, kPlusProches((numeroJour("2011-06-24"), 15, 20), coords, 20))) + + +#application du jeu de test +tab = [] +test_dates, test_consos, test_pic, test_ref = lecture("jeuTests.csv") +for i in range (len(test_dates)): + tab.append(PuissanceMoyenne(consos, kPlusProches((numeroJour(test_dates[i]), test_pic[i], test_ref[i]), coords, 20))) +print(tab)