Browse Source

ajout fichier consommation;fx kPlusProches (pas testée);modification mineure de lecture

master
corentin.bollet 5 months ago
parent
commit
6b527928c3
  1. 4405
      data/pic-journalier-consommation.csv
  2. 32
      knn.py
  3. 1
      lecture.py

4405
data/pic-journalier-consommation.csv

File diff suppressed because it is too large

32
knn.py

@ -0,0 +1,32 @@
from datetime import date
def ecartDate(date1, date2):
"""Renvoie le nombre de jours écoulés
entre date1 et date2 (modulo 365)"""
delta_sec = (date.fromisoformat(date2)-date.fromisoformat(date1)).total_seconds()
secParJour = 86400
return delta_sec / secParJour
def distance(point1, point2):
"""Prend en paramètre 2 tuples au format
(Date du jour, Température moyenne, température de référence)
et qui renvoie un nombre réel représentant
la distance euclidienne au carré entre ces deux points"""
duree = ecartDate(point1[0], point2[0])
delta_T_moy = (point1[1]-point2[1])**2
delta_T_ref = (point1[2]-point2[2])**2
return duree**2/100 + delta_T_moy**2 + delta_T_ref**2
def kPlusProches(point_a_verifier, tableau, k):
"""Prend en paramètres un tuple au format
(Date du jour, Température moyenne, température de référence)
et un tableau au format (Numéro du jour, Température moyenne, Température de référence).
Renvoie un tableau trié avec les k plus proches
points de `point_a_verifier`, au format (distance, indice du tableau original)"""
dist = []
for i, point in enumerate(tableau):
dist.append(distance(point_a_verifier, point), i)
sorted(dist, key=lambda t: t[0])
return dist[:k+1]

1
lecture.py

@ -9,3 +9,4 @@ def lecture(fichier):
for ligne in lecteur: for ligne in lecteur:
tableau.append([(ligne[0], ligne[2], ligne[3]), ligne[1]]) tableau.append([(ligne[0], ligne[2], ligne[3]), ligne[1]])
return tableau return tableau

Loading…
Cancel
Save