Browse Source

Fonction listeTuple et un moyen d'utiliser les fonctions

master
Denis Leenaerts 3 weeks ago
parent
commit
7866155768
  1. 48
      projet_knn_feat_denis_le_goat.py

48
projet_knn_feat_denis_le_goat.py

@ -1,12 +1,12 @@
import tkinter as tk
from math import sqrt
def transfoEnInt(groupe):
def transfoEnFloat(groupe):
"""Prend en parametre un tuple ou une liste de réels de type str
et renvoie une liste de réels de type int"""
et renvoie une liste de réels de type float"""
lst = []
for element in groupe:
lst += [int(element)]
lst.append(float(element))
return lst
def lecture(nomFichier):
@ -28,10 +28,10 @@ True si elle l'est et False sinon"""
def numeroJour(date):
"""Prend en parametre une date au format aaaa-mm-jj et renvoie un entier
correspondant au numero du jour correspondant (de 1 à 365)"""
dateSeparee = transfoEnInt(date.split('-'))
dateSeparee = transfoEnFloat(date.split('-'))
totalJours = 0
JoursMois = [31,28,30,31,30,31,31,30,31,30,31] #Nombre de jours de chaques mois
for i in range(dateSeparee[1]-1):
for i in range(int(dateSeparee[1])-1):
totalJours += JoursMois[i]
if estBissextile(dateSeparee[0]) and totalJours + dateSeparee[2] >= 60 and dateSeparee[1] > 2:
#regarde si on est dans une année bissextile et apres fevrier
@ -40,9 +40,9 @@ correspondant au numero du jour correspondant (de 1 à 365)"""
def distance(Tuple1 , Tuple2):
"""prend en parametre 2 tuples avec (Numéro du jour, Température moyenne, température
de référence) et renvoie la distance **euclidienne**"""
lst1 = transfoEnInt(Tuple1)
lst2 = transfoEnInt(Tuple2)
de référence) et renvoie la distance **euclidienne**"""
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])
@ -58,10 +58,10 @@ 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)
d = distance(point,lstRepre[i])
lstvoisins.append((d,i))
lstvoisins.sort()
return [lstvoisins[i][1] for i in range(k)]
return [lstvoisins[i] for i in range(k)]
def puissanceMoyenne(listeTriee, tableau):
"""Prend une liste triée de tuple avec (distance, indice du tableau initial)
@ -72,18 +72,28 @@ def puissanceMoyenne(listeTriee, tableau):
distance,indice = donnee
PuissanceTotale += tableau[indice][1]
return PuissanceTotale/len(listeTriee)
def listeTuples(fichier):
"""Prend une liste de tuples de type (date,pic journalier consommation,
temperature moyenne, temperature reference) et renvoie une liste de tuples de type
(numero jour, temperature moyenne, temperature de reference)"""
tableau = []
for i in range(1,len(fichier)):
date, picJournalier, tempMoy, tempRef = fichier[i]
tableau.append((numeroJour(date),tempMoy,tempRef))
return tableau
def main():
# nombreK = int(valeurk.get())
#
# date = numeroJour(valeurdate.get())
# temp = valeurtemp.get().split(" ")
# temp = transfoEnInt(temp)
# tempMoy, TempRef = temp
nombreK = int(valeurk.get())
fichier = lecture('pic-journalier-consommation-brute-2023.csv')
date = numeroJour(valeurdate.get())
temp = valeurtemp.get().split(" ")
temp = transfoEnFloat(temp)
tempMoy, tempRef = temp
fichier = lecture('pic-journalier-consommation-brute-2023.csv')
listeVoisins = kPlusProches((date,tempMoy,tempRef),(listeTuples(fichier)),
nombreK)
print(listeVoisins)
fenetre = tk.Tk()

Loading…
Cancel
Save