Browse Source

Update 'py_main.py'

master
SERNY Sacha 3 years ago
parent
commit
eb68827288
  1. 50
      py_main.py

50
py_main.py

@ -14,30 +14,60 @@ def lecture(name):
lst_t_moy.append(float(t_moy)) lst_t_moy.append(float(t_moy))
lst_t_ref.append(float(t_ref)) lst_t_ref.append(float(t_ref))
return(np.array(lst_date), np.array(lst_conso), np.array(lst_t_moy), np.array(lst_t_ref)) return(np.array(lst_date), np.array(lst_conso), np.array(lst_t_moy), np.array(lst_t_ref))
def numero_jour (date): def estBissextile(a):
"""NON FAIT""" """regarde si l'année correspond à une année bissextile"""
return int(date.split("-")[2]) return (a%4==0 and a%100!=0) or a%400==0
def distance (pos1, pos2): 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"""
x1, y1, z1 = pos1 x1, y1, z1 = pos1
x2, y2, z2 = pos2 x2, y2, z2 = pos2
return np.sqrt((x1-x2)**2)+((y1-y2)**2)+((z1-z2)**2) diff_njour1, diff_njour2 = x1-x2, x2-x1
if (x1-x2) <= (x2-x1):
diff = x1-x2
else:
diff = x2-x1
return ((diff)**2)+((y1-y2)**2)+((z1-z2)**2)
def kPlusProches(echantillon, donnees, k): def kPlusProches(echantillon, donnees, k):
""" à reprendre : CHAOS """
voisins = [] voisins = []
for i in range(len(donnees)): for i in range(len(donnees)):
date, conso, t_moy = donnees[i] date, conso, t_moy = donnees[i]
d = distance(echantillon, (date, conso, t_moy)) d = distance(echantillon, (date, conso, t_moy))
print (d)
voisins.append((d, i)) voisins.append((d, i))
voisins = sorted(voisins)
return [voisins[i][1] for i in range(k)] return [voisins[i][1] for i in range(k)]
num_jour = [] def numeroJour(date):
"""Donne 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)
if (estBissextile(int(a))):
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
def PuissanceMoyenne(lst):
"""renvoie la puissance moyenne, prend en entrée une liste triée en fonction de la distance"""
def triAvecIndices(lst):
tab_i= []
tab = []
for i in range(len(lst)):
tab_i.append(i)
tab = list(zip(lst, tab_i))
return tab
num_jour = []
dates, consos, t_moys, t_refs = lecture("pic-journalier-consommation.csv") dates, consos, t_moys, t_refs = lecture("pic-journalier-consommation.csv")
for date in dates: for date in dates:
num_jour.append(numero_jour(date)) num_jour.append(numeroJour(date))
coords = list(zip(num_jour, t_moys, t_refs)) coords = list(zip(num_jour, t_moys, t_refs))
print(kPlusProches((31, 0, 0), coords, 4)) print(coords)
print(kPlusProches((80, 14, 9), coords, 4))
Loading…
Cancel
Save