diff --git a/fonction.py b/fonction.py new file mode 100644 index 0000000..3d6870f --- /dev/null +++ b/fonction.py @@ -0,0 +1,24 @@ +from sklearn.linear_model import LinearRegression +import pandas as pd +import numpy as np + +def generateModele(dataJson:dict[str,str]): + # -- Préparation des données + arrayBpm = [] + arrayStartTime = [] + arrayTimeOfActivity = [] + + for data in dataJson["Data"]: + arrayBpm.append(data["BpmAvg"]) + arrayTimeOfActivity.append(data["TimeOfActivity"]) + + arrayStartTime.append(data["StartTime"]) + # -- 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 \ No newline at end of file diff --git a/generateurModele.py b/generateurModele.py index 39c7407..9d8688e 100644 --- a/generateurModele.py +++ b/generateurModele.py @@ -1,10 +1,11 @@ from sklearn.linear_model import LinearRegression -import pandas as pd -import numpy as np import requests from datetime import datetime, time import time as sleep_time import logging +import json + +from fonction import generateModele print("[INFO] STARTING DAILY USERS MODELS TRAINING") @@ -18,27 +19,6 @@ def generateJsonModel(model:LinearRegression): json = {"coef":listCoef,"intercept":listIntercept} return json -def generateModele(dataJson:dict[str,str]): - # -- Préparation des données - arrayBpm = [] - arrayStartTime = [] - arrayTimeOfActivity = [] - - for data in dataJson["Data"]: - arrayBpm.append(data["BpmAvg"]) - arrayTimeOfActivity.append(data["TimeOfActivity"]) - - arrayStartTime.append(data["StartTime"]) - # -- 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) @@ -59,27 +39,26 @@ def sendJsonToApi(url,json): urlGetAllData = "https://codefirst.iut.uca.fr/containers/SmartFit-smartfit_api/ai/data" while(True): logging.warning("Info - Début de la boucle") - jsonBack = { "Users" : []} heure_actuelle = datetime.now().time() if ( heure_actuelle == time(8, 0)): logging.warning("Info - Procédure de création des modèles ") # --- Call Api dataUser = getUserWithData(url=urlGetAllData) - for user in dataUser["Users"]: - jsonTmp = {} - - jsonTmp["Identifiant"] = user["Identifiant"] - jsonTmp["Info"] = [] + for user in dataUser: + userUUID:any = user["uuid"] - for category in user["Info"]: + for category in user["categories"]: + jsonTmp = {} #Mettre la condition longueur ici - model = generateModele(category) - jsonTmp["Info"].append({"Category": category["Category"],"Model" : generateJsonModel(model)}) + + model = generateModele(category["infos"]) + + jsonTmp["uuid"] = userUUID + jsonTmp["category"] = category["name"] + jsonTmp["model"] = json.dumps(generateJsonModel(model)) - # Add User - jsonBack["Users"].append(jsonTmp) + sendJsonToApi(urlGetAllData,json.dumps(jsonTmp)) # -- Send Api - sendJsonToApi(urlGetAllData,jsonBack) logging.warning("Info - Procédure de création des modèles fini ") else : logging.warning("Info - Début sleep") diff --git a/testUnitaire.py b/testUnitaire.py new file mode 100644 index 0000000..c1679a6 --- /dev/null +++ b/testUnitaire.py @@ -0,0 +1,9 @@ +import unittest +from fonction import generateModele + +class Testing(unittest.TestCase): + def test_model(self): + self.assertEqual(generateModele(),1) + +if __name__ == '__main__': + unittest.main() \ No newline at end of file