diff --git a/projet_knn_feat_denis_le_goat.py b/projet_knn_feat_denis_le_goat.py index 1fae9fb..cceb07c 100644 --- a/projet_knn_feat_denis_le_goat.py +++ b/projet_knn_feat_denis_le_goat.py @@ -46,12 +46,18 @@ et renvoie la distance **euclidienne**""" minJours = min([lst1[0],lst2[0]]) maxJours = max([lst1[0],lst2[0]]) 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): """prend en parametre 2 tuples avec (numero du jour, Valeur1, Valeur2) 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 """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 @@ -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): k = len(lstRepre) for i in range(len(lstRepre)): + d = distance(point,lstRepre[i]) lstvoisins.append((d,i)) lstvoisins.sort() @@ -101,7 +108,8 @@ def lancerTest(): ConsoMoy = round(puissanceMoyenne(listeVoisins,fichier),2) affichageResultats.configure(text="La consommation électrique devrait être d'environ " + str(ConsoMoy) +"MW") - +def changeDistance(): + print("e") fenetre = tk.Tk() fenetre['bg'] = "lavender" @@ -112,46 +120,50 @@ fenetre.resizable(False,False) canva = tk.Canvas(fenetre, bg = "lavender", highlightthickness = 0, width = 10, height = 13.5) -canva.grid() +canva.grid( columnspan = 2) # Boutons valeur de k valeurk = tk.StringVar() labelk = tk.Label(fenetre, text = "choisir le nombre de k plus proches voisin voulus : ", 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.grid(row = 2, column = 0) +entreek.grid(row = 2, column = 0, columnspan = 2) # Boutons date canvadate = tk.Canvas(fenetre, bg = "lavender", width = 350, height = 20, highlightthickness = 0) canvadate.create_line(0, 10, 350, 10, fill = "black") -canvadate.grid(row = 3) +canvadate.grid(row = 3, columnspan = 2) valeurdate = tk.StringVar() 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.grid(row = 5, column = 0) +entreedate.grid(row = 5, column = 0, columnspan = 2) # Boutons température canvatemp = tk.Canvas(fenetre, bg = "lavender", width = 350, height = 20, highlightthickness = 0) canvatemp.create_line(0, 10, 350, 10, fill = "black") -canvatemp.grid(row = 6) +canvatemp.grid(row = 6, columnspan = 2) valeurtemp = tk.StringVar() labeltemp = tk.Label(fenetre, text = "La température moyenne et de référence avec un espace: ", 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.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.grid(row = 9) +canvaRecup.grid(row = 9, columnspan = 2) boutonRecup = tk.Button(fenetre, command = lancerTest, bg = 'lavender',text='Valider', cursor='hand2') 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.grid() +affichageResultats.grid(row=11) fenetre.mainloop() \ No newline at end of file