Browse Source

ajout du bouton distance de manhattan

master
Denis Leenaerts 2 weeks ago
parent
commit
77e57c28fc
  1. 40
      projet_knn_feat_denis_le_goat.py

40
projet_knn_feat_denis_le_goat.py

@ -46,12 +46,18 @@ et renvoie la distance **euclidienne**"""
minJours = min([lst1[0],lst2[0]]) minJours = min([lst1[0],lst2[0]])
maxJours = max([lst1[0],lst2[0]]) maxJours = max([lst1[0],lst2[0]])
DiffJours = min([maxJours-minJours,365-maxJours+minJours]) DiffJours = min([maxJours-minJours,365-maxJours+minJours])
return sqrt(DiffJours**2 + (lst1[1]-lst2[1])**2+(lst1[2]-lst2[2])**2)
def distanceManhattan(Tuple1, Tuple2): def distanceManhattan(Tuple1, Tuple2):
"""prend en parametre 2 tuples avec (numero du jour, Valeur1, Valeur2) """prend en parametre 2 tuples avec (numero du jour, Valeur1, Valeur2)
et renvoie la distance de manhattan""" et renvoie la distance de manhattan"""
lst1 = transfoEnFloat(Tuple1)
lst2 = transfoEnFloat(Tuple2)
minJours = min([lst1[0],lst2[0]])
maxJours = max([lst1[0],lst2[0]])
DiffJours = min([maxJours-minJours,365-maxJours+minJours])
return DiffJours + abs(lst1[1]-lst2[1]) + abs(lst1[2]-lst2[2])
return sqrt(DiffJours**2 + (lst1[1]-lst2[1])**2+(lst1[2]-lst2[2])**2)
def kPlusProches(point,lstRepre,k): #je ne sais pas si il faut mettre k ce n'est pas demandé dans l'ennoncé mais cela ne servirait à rien d'en mettre plus def kPlusProches(point,lstRepre,k): #je ne sais pas si il faut mettre k ce n'est pas demandé dans l'ennoncé mais cela ne servirait à rien d'en mettre plus
"""Prend en parametre un tuple avec (Numéro du jour, Température moyenne, """Prend en parametre un tuple avec (Numéro du jour, Température moyenne,
température de référence) correspondant au point à verifier, une liste de température de référence) correspondant au point à verifier, une liste de
@ -62,6 +68,7 @@ def kPlusProches(point,lstRepre,k): #je ne sais pas si il faut mettre k ce n'est
if k > len(lstRepre): if k > len(lstRepre):
k = len(lstRepre) k = len(lstRepre)
for i in range(len(lstRepre)): for i in range(len(lstRepre)):
d = distance(point,lstRepre[i]) d = distance(point,lstRepre[i])
lstvoisins.append((d,i)) lstvoisins.append((d,i))
lstvoisins.sort() lstvoisins.sort()
@ -101,7 +108,8 @@ def lancerTest():
ConsoMoy = round(puissanceMoyenne(listeVoisins,fichier),2) ConsoMoy = round(puissanceMoyenne(listeVoisins,fichier),2)
affichageResultats.configure(text="La consommation électrique devrait être d'environ " + str(ConsoMoy) +"MW") affichageResultats.configure(text="La consommation électrique devrait être d'environ " + str(ConsoMoy) +"MW")
def changeDistance():
print("e")
fenetre = tk.Tk() fenetre = tk.Tk()
fenetre['bg'] = "lavender" fenetre['bg'] = "lavender"
@ -112,46 +120,50 @@ fenetre.resizable(False,False)
canva = tk.Canvas(fenetre, bg = "lavender", highlightthickness = 0, width = 10, canva = tk.Canvas(fenetre, bg = "lavender", highlightthickness = 0, width = 10,
height = 13.5) height = 13.5)
canva.grid() canva.grid( columnspan = 2)
# Boutons valeur de k # Boutons valeur de k
valeurk = tk.StringVar() valeurk = tk.StringVar()
labelk = tk.Label(fenetre, text = "choisir le nombre de k plus proches voisin voulus : ", labelk = tk.Label(fenetre, text = "choisir le nombre de k plus proches voisin voulus : ",
width = 50, bg = "lavender") width = 50, bg = "lavender")
labelk.grid(row = 1, column = 0) labelk.grid(row = 1, column = 0, columnspan = 2)
entreek = tk.Entry(fenetre, textvariable = valeurk, width = 30) entreek = tk.Entry(fenetre, textvariable = valeurk, width = 30)
entreek.grid(row = 2, column = 0) entreek.grid(row = 2, column = 0, columnspan = 2)
# Boutons date # Boutons date
canvadate = tk.Canvas(fenetre, bg = "lavender", width = 350, height = 20, canvadate = tk.Canvas(fenetre, bg = "lavender", width = 350, height = 20,
highlightthickness = 0) highlightthickness = 0)
canvadate.create_line(0, 10, 350, 10, fill = "black") canvadate.create_line(0, 10, 350, 10, fill = "black")
canvadate.grid(row = 3) canvadate.grid(row = 3, columnspan = 2)
valeurdate = tk.StringVar() valeurdate = tk.StringVar()
labeldate = tk.Label(fenetre, text = "choisir la date au format aaaa-mm-jj : ", width = 50, bg = "lavender") labeldate = tk.Label(fenetre, text = "choisir la date au format aaaa-mm-jj : ", width = 50, bg = "lavender")
labeldate.grid(row = 4, column = 0) labeldate.grid(row = 4, column = 0, columnspan = 2)
entreedate=tk.Entry(fenetre, textvariable = valeurdate, width = 30) entreedate=tk.Entry(fenetre, textvariable = valeurdate, width = 30)
entreedate.grid(row = 5, column = 0) entreedate.grid(row = 5, column = 0, columnspan = 2)
# Boutons température # Boutons température
canvatemp = tk.Canvas(fenetre, bg = "lavender", width = 350, height = 20, canvatemp = tk.Canvas(fenetre, bg = "lavender", width = 350, height = 20,
highlightthickness = 0) highlightthickness = 0)
canvatemp.create_line(0, 10, 350, 10, fill = "black") canvatemp.create_line(0, 10, 350, 10, fill = "black")
canvatemp.grid(row = 6) canvatemp.grid(row = 6, columnspan = 2)
valeurtemp = tk.StringVar() valeurtemp = tk.StringVar()
labeltemp = tk.Label(fenetre, text = "La température moyenne et de référence avec un espace: ", labeltemp = tk.Label(fenetre, text = "La température moyenne et de référence avec un espace: ",
width = 50, bg = "lavender") width = 50, bg = "lavender")
labeltemp.grid(row = 7, column = 0) labeltemp.grid(row = 7, column = 0, columnspan = 2)
entreetemp=tk.Entry(fenetre, textvariable = valeurtemp, width = 30) entreetemp=tk.Entry(fenetre, textvariable = valeurtemp, width = 30)
entreetemp.grid(row = 8, column = 0) entreetemp.grid(row = 8, column = 0, columnspan = 2)
canvaRecup = tk.Canvas(fenetre, bg='lavender', width = 1, height = 10, highlightthickness = 0) canvaRecup = tk.Canvas(fenetre, bg='lavender', width = 1, height = 10, highlightthickness = 0)
canvaRecup.grid(row = 9) canvaRecup.grid(row = 9, columnspan = 2)
boutonRecup = tk.Button(fenetre, command = lancerTest, bg = 'lavender',text='Valider', boutonRecup = tk.Button(fenetre, command = lancerTest, bg = 'lavender',text='Valider',
cursor='hand2') cursor='hand2')
boutonRecup.grid(row = 10) boutonRecup.grid(row = 10)
boutonDistance = tk.Button(fenetre, command = changeDistance, text="Distance de Manhattan"
,bg='snow')
boutonDistance.grid(row=10, column=1)
affichageResultats = tk.Label(fenetre, bg='lavender', text='',font='TkDefaultFont 8 bold') #J'ai du chercher parce qu'on ne peut affichageResultats = tk.Label(fenetre, bg='lavender', text='',font='TkDefaultFont 8 bold') #J'ai du chercher parce qu'on ne peut
affichageResultats.grid() affichageResultats.grid(row=11)
fenetre.mainloop() fenetre.mainloop()
Loading…
Cancel
Save