test model
continuous-integration/drone/push Build is passing Details

master
Enzo 1 year ago
parent 120fc5704d
commit df1b7ae011

@ -1,18 +1,28 @@
from sklearn.linear_model import LinearRegression
import pandas as pd
import numpy as np
import json
from datetime import datetime
import requests
def generateModele(dataJson:dict[str,str]):
def generateModele(dataJson):
# -- Préparation des données
arrayBpm = []
arrayStartTime = []
arrayTimeOfActivity = []
for data in dataJson["Data"]:
arrayBpm.append(data["BpmAvg"])
arrayTimeOfActivity.append(data["TimeOfActivity"])
for data in dataJson:
info = json.loads(data["json"])
arrayStartTime.append(data["StartTime"])
arrayBpm.append(int(info["bpmAvg"]))
arrayTimeOfActivity.append(float(info["timeOfActivity"]))
# Convertir la chaîne en objet datetime
dt_object = datetime.strptime(info["startTime"], "%Y-%m-%dT%H:%M:%S.%f")
# Convertir l'objet datetime en millisecondes depuis l'époque
milliseconds_since_epoch = int(dt_object.timestamp() * 1000)
arrayStartTime.append(milliseconds_since_epoch)
# -- DataFrame
data = pd.DataFrame({
"Bpm": arrayBpm,
@ -21,4 +31,31 @@ def generateModele(dataJson:dict[str,str]):
# -- Régression linéaire
model = LinearRegression()
model.fit(np.array(arrayStartTime).reshape(-1,1),data)
return model
return model
def generateJsonModel(model:LinearRegression):
listCoef = []
listIntercept = []
for i in range(0,len(model.coef_)):
listCoef.append(model.coef_[i][0])
listIntercept.append(model.intercept_[i])
json = {"coef":listCoef,"intercept":listIntercept}
return json
def getUserWithData(url:str):
response = requests.get(url)
if ( response.status_code != 200):
print('problème lors de l extraction des données avec l api !! -> "getUserWithData" (status_code != 200)')
exit()
return response.json()
def sendJsonToApi(url,json):
header = {"Content-type": "application/json"}
response = requests.post(url,json,headers=header)
if ( response.status_code != 200):
print('Problème lors de l envoi des données avec l api !! -> "sendJsonToApi" (status_code != 200)')
exit()
return

@ -3,68 +3,13 @@
from sklearn.linear_model import LinearRegression
import pandas as pd
import numpy as np
import requests
import logging
import json
from datetime import datetime
from fonction import getUserWithData,generateJsonModel,generateModele,sendJsonToApi
# --------------- Fonction ----------------- #
def generateJsonModel(model:LinearRegression):
listCoef = []
listIntercept = []
for i in range(0,len(model.coef_)):
listCoef.append(model.coef_[i][0])
listIntercept.append(model.intercept_[i])
json = {"coef":listCoef,"intercept":listIntercept}
return json
def generateModele(dataJson):
# -- Préparation des données
arrayBpm = []
arrayStartTime = []
arrayTimeOfActivity = []
for data in dataJson:
info = json.loads(data["json"])
arrayBpm.append(int(info["bpmAvg"]))
arrayTimeOfActivity.append(float(info["timeOfActivity"]))
# Convertir la chaîne en objet datetime
dt_object = datetime.strptime(info["startTime"], "%Y-%m-%dT%H:%M:%S.%f")
# Convertir l'objet datetime en millisecondes depuis l'époque
milliseconds_since_epoch = int(dt_object.timestamp() * 1000)
arrayStartTime.append(milliseconds_since_epoch)
# -- DataFrame
data = pd.DataFrame({
"Bpm": arrayBpm,
"TimeOfActivity": arrayTimeOfActivity
})
# -- Régression linéaire
model = LinearRegression()
model.fit(np.array(arrayStartTime).reshape(-1,1),data)
return model
def getUserWithData(url:str):
response = requests.get(urlGetAllData)
if ( response.status_code != 200):
print('problème lors de l extraction des données avec l api !! -> "getUserWithData" (status_code != 200)')
exit()
return response.json()
def sendJsonToApi(url,json):
header = {"Content-type": "application/json"}
response = requests.post(url,json,headers=header)
if ( response.status_code != 200):
print('Problème lors de l envoi des données avec l api !! -> "sendJsonToApi" (status_code != 200)')
exit()
return
# ---------------- Main ------------------- #
logging.error("RUNNNNNNNN !")
urlGetAllData = "https://codefirst.iut.uca.fr/containers/SmartFit-smartfit_api/ai/data"
# --- Call Api
@ -96,14 +41,13 @@ dataUser = [{
logging.error("Nombre de User : "+str(len(dataUser)))
i = 0
for user in dataUser:
userUUID = user["uuid"]
for category in user["categories"]:
jsonTmp = {}
#Mettre la condition longueur ici
model = generateModele(category["infos"])
jsonTmp["uuid"] = userUUID

@ -1,9 +1,16 @@
import unittest
from fonction import generateModele
from fonction import generateModele,generateJsonModel
class Testing(unittest.TestCase):
def test_model(self):
self.assertEqual(generateModele(),1)
data = [{'json': '{"bpmAvg":114,"bpmMax":145,"bpmMin":79,"denivelePositif":449.00000000000114,"deniveleNegatif":70.00000000000114,"altitudeMax":402.4,"altitudeMin":369.20000000000005,"altitudeAvg":382.2932358318101,"temperatureMax":22,"temperatureMin":18,"temperatureAvg":20,"vitesseMax":4.62,"vitesseMin":0.0,"vitesseAvg":1.3393414634146392,"startTime":"2023-12-10T03:12:54.000","timeOfActivity":2061.82,"distance":2131.0,"calories":215,"steps":1168}'}, {'json': '{"bpmAvg":118,"bpmMax":146,"bpmMin":102,"denivelePositif":448.80000000000007,"deniveleNegatif":55.80000000000007,"altitudeMax":406.6,"altitudeMin":375.4,"altitudeAvg":386.7921763869132,"temperatureMax":24,"temperatureMin":21,"temperatureAvg":22,"vitesseMax":2.3,"vitesseMin":0.0,"vitesseAvg":1.7642135231316907,"startTime":"2023-12-12T17:17:43.000","timeOfActivity":1445.47,"distance":2449.0,"calories":170,"steps":1368}'}, {'json': '{"bpmAvg":111,"bpmMax":122,"bpmMin":103,"denivelePositif":395.19999999999993,"deniveleNegatif":23.799999999999955,"altitudeMax":375.20000000000005,"altitudeMin":369.79999999999995,"altitudeAvg":372.7532258064513,"temperatureMax":30,"temperatureMin":23,"temperatureAvg":25,"vitesseMax":2.56,"vitesseMin":0.0,"vitesseAvg":1.7127125506072893,"startTime":"2023-12-09T19:16:43.000","timeOfActivity":255.62,"distance":466.0,"calories":30,"steps":255}'}]
model = generateJsonModel(generateModele(data))
self.assertEqual(model["coef"][0],2.4008223334695094e-08)
self.assertEqual(model["coef"][1],1.8702979299828552e-06)
self.assertEqual(model["intercept"][0],-40753.409070545466)
self.assertEqual(model["intercept"][1],-3182440.4230727013)
if __name__ == '__main__':
unittest.main()
unittest.main()
#python -m unittest testUnitaire.py
Loading…
Cancel
Save