@ -15,29 +15,59 @@ def lecture(name):
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 ) ]
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 = [ ]
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 ( numeroJ our ( 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 ) )