Browse Source

enzo

# tout
master
DAUDET Paul 2 years ago
parent
commit
da29ebac47
  1. 373
      KNN_Mark1.py

373
KNN_Mark1.py

@ -1,175 +1,198 @@
from tkinter import * from tkinter import *
def lancer(k, date, temp_moy, temp_ref, donnees): def lancer():
donnees, lst_conso = moyenne_liste() lecture("pic-journalier-consommation.csv")
donnees_point = [date, temp_moy, temp_ref] kPlusProches(value1, donnees_point,temp_jour)
print(k) estBissextile(an)
print(donnees_point)
print(donnees) def lecture(fichier):
lst_k_plus_proches = kPlusProches(k, donnees_point, donnees) temp_jour = []
PuissanceMoyenne(lst_k_plus_proches) with open(fichier, "r") as menu:
menu.readline()
def lecture(fichier): for ligne in menu:
temp_jour = [] ligne_net = ligne.strip()
with open(fichier, "r") as menu: lst_ligne = list(ligne_net.split(";"))
menu.readline() temp_jour.append(lst_ligne)
for ligne in menu: for i in range(len(temp_jour)):
ligne_net = ligne.strip() temp_jour[i][1] = float(temp_jour[i][1])
lst_ligne = list(ligne_net.split(";")) temp_jour[i][2] = float(temp_jour[i][2])
temp_jour.append(lst_ligne) temp_jour[i][3] = float(temp_jour[i][3])
for i in range(len(temp_jour)): return temp_jour
temp_jour[i][1] = float(temp_jour[i][1])
temp_jour[i][2] = float(temp_jour[i][2]) def estBissextile(an):
temp_jour[i][3] = float(temp_jour[i][3]) """Fonction estBissextile qui prend en paramètre l’année à vérifier et qui renvoie True si elle est bissextile, False sinon"""
return temp_jour an_base = an
an = an//4
def estBissextile(an): if an*4 == an_base:
"""Fonction estBissextile qui prend en paramètre l’année à vérifier et qui renvoie True si elle est bissextile, False sinon""" return True
return an % 4 == 0 else:
return False
def kPlusProches(k,donnees_point,donnees):
"""Fonction qui prend en paramètre un tuple correspondant au point à vérifier, def kPlusProches(k,donnees_point,temp_jour):
une liste du jeu de données et la conso électrique. Renvoie une liste triée """Fonction qui prend en paramètre un tuple correspondant au point à vérifier,
en fonction de la distance dont les éléments sont des tuples.""" une liste du jeu de données et la conso électrique. Renvoie une liste triée
if k > len(donnees): #par sécurité on réduit k en fonction de la distance dont les éléments sont des tuples."""
k = len(donnees) voisins = []
voisin=[] if k > len(temp_jour[0]):
for i in range(len(donnees)): k = len(temp_jour[0])
voisin.append(distance(donnees, donnees_point, i)) energy = temp_jour.pop()
voisin.sort() energy.sort
return [voisin[i] for i in range(k)] for i in range(len(temp_jour[0])):
d = distance(temp_jour[i],donnees_point)
voisins.append((d, i))
def numeroJour(date): voisins.sort()
an_mois_jour = list(date.split("-")) return [voisins[i][1] for i in range(k)]
an = int(an_mois_jour[0]) def numeroJour(date):
mois = int(an_mois_jour[1]) an_mois_jour = list(date.split("-"))
jour = int(an_mois_jour[2])
an = int(an_mois_jour[0])
if mois == 1: mois = int(an_mois_jour[1])
j_en_plus = 0 jour = int(an_mois_jour[2])
elif mois == 2:
j_en_plus = 31 if mois == 1:
elif mois == 3: j_en_plus = 0
j_en_plus = 59 elif mois == 2:
elif mois == 4: j_en_plus = 31
j_en_plus = 90 elif mois == 3:
elif mois == 5: j_en_plus = 59
j_en_plus = 120 elif mois == 4:
elif mois == 6: j_en_plus = 90
j_en_plus = 151 elif mois == 5:
elif mois == 7: j_en_plus = 120
j_en_plus = 181 elif mois == 6:
elif mois == 8: j_en_plus = 151
j_en_plus = 212 elif mois == 7:
elif mois == 9: j_en_plus = 181
j_en_plus = 243 elif mois == 8:
elif mois == 10: j_en_plus = 212
j_en_plus = 273 elif mois == 9:
elif mois == 11: j_en_plus = 243
j_en_plus = 304 elif mois == 10:
elif mois == 12: j_en_plus = 273
j_en_plus = 334 elif mois == 11:
j_en_plus = 304
if estBissextile(an) and mois > 2: elif mois == 12:
j_en_plus += 1 j_en_plus = 334
num_jour = j_en_plus + jour if estBissextile(an) and mois > 2:
if num_jour > 365: j_en_plus += 1
num_jour = 365
return num_jour num_jour = j_en_plus + jour
if num_jour > 365:
def moyenne_liste(): num_jour = 365
temp_jour = lecture("pic-journalier-consommation.csv") return num_jour
donnees= []
lst_conso = [] def moyenne_liste():
for i in range(len(temp_jour)): temp_jour, = lecture("pic-journalier-consommation.csv")
temp_jour[i][0] = numeroJour(temp_jour[i][0]) temp_num_jour = []
donnees.append([temp_jour[i][0], temp_jour[i][2], temp_jour[i][3]]) for i in range(365):
lst_conso.append(temp_jour[i][1]) temp_jour[i][0] = numeroJour(temp_jour[i][0])
return donnees, lst_conso for l in range(len(temp_jour)):
lst_conso = []
def distance(donnees, donneespoint, i): lst_temp_moy = []
"""Fonction qui dit qu'en prenant des points et ben on peut trouver une distance entre 2 point""" lst_temp_ref = []
x1 = donnees[i][0] moy_conso = 0
x2 = donneespoint[0] moy_temp_moy = 0
d1 = x1-x2 moy_temp_ref = 0
d2 = 365 - d1 for m in range(len(temp_jour)):
d_final = d1 if temp_jour[l][0] == i+1:
if d1 > d2: lst_conso.append(temp_jour[l][1])
d_final = d2 lst_temp_moy.append(temp_jour[l][2])
y1 = donnees[i][1] lst_temp_ref.append(temp_jour[l][3])
y2 = donneespoint[1] for n in range(len(lst_conso)):
z1 = donnees[i][2] moy_conso += lst_conso[n]
z2 = donneespoint[2] moy_temp_moy += lst_temp_moy[n]
return ((d_final)**2)+((y1-y2)**2)+((z1-z2)**2) moy_temp_ref += lst_temp_ref[n]
moy_conso = moy_conso / len(lst_conso)
def PuissanceMoyenne(lst_k_plus_proches): moy_temp_moy = moy_temp_moy / len(lst_temp_moy)
"""Calcule la moyenne de distances entre les points """ moy_temp_ref = moy_temp_ref / len(lst_temp_ref)
lecture("pic-journalier-consommation.csv") temp_num_jour.append([i, moy_conso, moy_temp_moy, moy_temp_ref])
conso_moy =0 # sum() / len(lst_k_plus_proches)
return conso_moy def distance(temp_jour, donneespoint):
"""Fonction qui dit qu'en prenant des points et ben on peut trouver une distance entre 2 point"""
def recup1(): x1 = temp_jour[0]
k = 5 #value1.get() x2 = donneespoint[0]
return k y1 = temp_jour[1]
y2 = donneespoint[1]
def recup2(): z1 = temp_jour[2]
date = value2.get() z2 = donneespoint[2]
return date dist = ((x1-x2)**2)+((y1-y2)**2)+((z1-z2)**2)
return dist
def recup3():
temp_moy = value3.get() def PuissanceMoyenne(lst,distance):
return temp_moy """Fonction qui calcule la moyenne de distances entre les points """
lecture("pic-journalier-consommation.csv")
def recup4(): moy = sum() / len()
temp_ref = value4.get()
return temp_ref def recup1():
voisins = value1.get()
#def calc_conso(): label5.configure(text=voisins)
# Conso =
# label8.configure(text=Conso) def recup2():
date = value2.get()
fenetre = Tk() label6.configure(text=date)
canvas1 = Canvas(fenetre) def recup3():
temp_moy = value3.get()
label1 = Label(fenetre, text="Choisissez le nombre de voisins (k) :") label6.configure(text=temp_moy)
value1 = IntVar()
entree1 = Entry(fenetre, textvariable=value1, width=45) def recup4():
temp_ref = value4.get()
label2 = Label(fenetre, text="Veuillez entrez la date (format 'aaaa-mm-jj'):", width=45) label6.configure(text=temp_ref)
value2 = IntVar()
entree2 = Entry(fenetre, textvariable=value2, width=45) #def calc_conso():
# Conso =
label3 = Label(fenetre, text="Veuillez entrez la température moyenne (en °C):", width=45) # label8.configure(text=Conso)
value3 = IntVar()
entree3 = Entry(fenetre, textvariable=value3, width=45)
label4 = Label(fenetre, text="Veuillez entrez la température de référence (en °C) :", width=45) fenetre = Tk()
value4 = IntVar() txt_design = font = ('Helvetica', 12, 'bold', 'underline','italic')
entree4 = Entry(fenetre, textvariable=value4, width=45) canvas1 = Canvas(fenetre)
label1.grid(pady=10) label1 = Label(fenetre, text="Choisissez le nombre de voisins (k) :",font =
entree1.grid() txt_design,bg ='#005dff',foreground="#ff5733")
value1 = IntVar()
label2.grid(pady=10) entree1 = Entry(fenetre, textvariable=value1)
entree2.grid()
label2 = Label(fenetre, text="Veuillez entrez la date (format 'aaaa-mm-jj'):",font =
label3.grid(pady=10) txt_design,bg ='#005dff',foreground="#ff5733")
entree3.grid() value2 = IntVar()
entree2 = Entry(fenetre, textvariable=value2)
label4.grid(pady=10)
entree4.grid() label3 = Label(fenetre, text="Veuillez entrez la température moyenne (en °C):",font =
txt_design,bg ='#005dff',foreground="#ff5733")
label9 = Label(fenetre, text="Conso", bg="yellow") value3 = IntVar()
entree3 = Entry(fenetre, textvariable=value3)
bouton1 = Button(canvas1, text="Tester", command=lancer(recup1(), recup2(), recup3(), recup4(), moyenne_liste()), width=15, height=2, bg="cyan").grid(pady=10)
label4 = Label(fenetre, text="Veuillez entrez la température de référence (en °C) :",font =
canvas1.grid() txt_design,bg ='#005dff',foreground="#FF5733")
label9.grid(pady=10) value4 = IntVar()
entree4 = Entry(fenetre, textvariable=value4)
fenetre.title("IHM KNN")
fenetre.iconbitmap('icon.ico') label1.grid(pady=10)
fenetre.mainloop() entree1.grid()
label2.grid(pady=10)
entree2.grid()
label3.grid(pady=10)
entree3.grid()
label4.grid(pady=10)
entree4.grid()
label9= Label(fenetre,width=8, text="Conso", bg="#b054da",fg='#fbff7a',font =('calibri',9,'bold') ,relief ='groove')
bouton1 = Button(canvas1, text="Tester", command=fenetre.destroy,height=2,width=8 ,bg="#e7374c",fg='#fbff7a', font =
('colibri',13,'bold')).grid()
canvas1.grid(pady = 15)
label9.grid()
fenetre.title("IHM KNN")
fenetre.iconbitmap('icon.ico')
fenetre['bg'] = '#005dff'
fenetre.geometry('400x360')
fenetre.mainloop()

Loading…
Cancel
Save