diff --git a/IA/data/data_emple.csv b/IA/data/data_emple.csv index 39d4d4d..906a535 100644 --- a/IA/data/data_emple.csv +++ b/IA/data/data_emple.csv @@ -1,6 +1,6 @@ -category,distance,timeOfActivity,denivelePositif,speedAvg,bpmAvg -walking,2147.0,1716.5,471.5999999999999,1.2740575455079353,114 -walking,1013.0,933.24,393.2000000000004,1.2849015317286667,122 -walking,225.0,228.49,346.6000000000006,1.1007253886010366,99 -cycling,20525.4,6770.675,597.8000000000001,3.5130617816091947,143 +category,distance,timeOfActivity,denivelePositif,speedAvg,bpmAvg,startTime +walking,2147.0,1716.5,471.5999999999999,1.2740575455079353,114,1234 +walking,1013.0,933.24,393.2000000000004,1.2849015317286667,122,1245 +walking,225.0,228.49,346.6000000000006,1.1007253886010366,99,1270 +walking,20525.4,6770.675,597.8000000000001,3.5130617816091947,143,1300 diff --git a/IA/test.py b/IA/test.py new file mode 100644 index 0000000..f7205e9 --- /dev/null +++ b/IA/test.py @@ -0,0 +1,57 @@ +import pandas as pd +import numpy as np +from sklearn.linear_model import LinearRegression +from sklearn.preprocessing import LabelEncoder +import pickle +import sklearn_json as skljson + + + + +def generateJson(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 + + + + +# Load data from CSV +df = pd.read_csv("data\\data_emple.csv") + +startTime = df.iloc[0:len(df),6].values.reshape(-1,1) + +category = df.iloc[0:len(df),0].values +#print("Category : ",category) + +data = pd.DataFrame({ + "Distance": df.iloc[:, 1].values, + "Time": df.iloc[:, 2].values, + "Denivele": df.iloc[:, 3].values, + "Speed": df.iloc[:, 4].values, + "Bpm": df.iloc[:, 5].values +}) + +model = LinearRegression() + +model.fit(startTime,data) + +datePredict = np.array([[1271]]) +prediction = model.predict(datePredict) + +print("Prédiction -> ") +#print(prediction) +print("Distance : ",float(prediction[0][0])) +print("Time : ",float(prediction[0][1])) +print("Denivele : ",float(prediction[0][2])) +print("Speed : ",float(prediction[0][3])) +print("BPM : ",float(prediction[0][4])) + + +generateJson(model=model) + + diff --git a/lib/modele/user.dart b/lib/modele/user.dart index d2129d8..3869a9a 100644 --- a/lib/modele/user.dart +++ b/lib/modele/user.dart @@ -1,5 +1,8 @@ +import 'dart:convert'; + import 'package:flutter/material.dart'; import 'package:smartfit_app_mobile/modele/activity.dart'; +import 'package:smartfit_app_mobile/modele/activity_info/activity_info.dart'; import 'package:smartfit_app_mobile/modele/manager_selected_activity.dart'; class User extends ChangeNotifier { @@ -83,4 +86,27 @@ class User extends ChangeNotifier { map["durationActiviy"] = selected.getTimeAllActivitySelected(); return map; } + + ActivityInfo predictActivity(DateTime date) { + // Appel pour avoir le model + String jsonString = + '{"coef": [270.63861280635473, 74.69699263779908, 1.9946527172333637, 0.03215810401413792, 0.3256805192289063], "intercept": [-335635.9890148213, -91874.0527070619, -2065.450392327813, -38.79838022998388, -291.590235396687]}'; + Map jsonMap = json.decode(jsonString); + // Transformer la date + int dateMilli = date.millisecondsSinceEpoch; + + ActivityInfo activityInfo = ActivityInfo(); + activityInfo.distance = + jsonMap["coef"][0] * dateMilli + jsonMap["intercept"][0]; + activityInfo.timeOfActivity = + jsonMap["coef"][1] * dateMilli + jsonMap["intercept"][1]; + activityInfo.denivelePositif = + jsonMap["coef"][2] * dateMilli + jsonMap["intercept"][2]; + activityInfo.vitesseAvg = + jsonMap["coef"][3] * dateMilli + jsonMap["intercept"][3]; + activityInfo.bpmAvg = + jsonMap["coef"][4] * dateMilli + jsonMap["intercept"][4]; + + return activityInfo; + } }