Entrainement.py 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. from Model.Modele import *
  2. from Model.Portefeuille import *
  3. from Model.Parametre import *
  4. from Model.Donnee import *
  5. from Model.Evaluation import *
  6. from Model.profil import profile
  7. from Config.DEBUG import *
  8. from pathlib import Path
  9. import pickle
  10. import os
  11. @profile
  12. def Entrainement(StartDayEntrainement, NBJoursEntrainement, StartDayValidation, NBJoursValidation):
  13. listeModel = []
  14. Var_listeAction = listeAction()
  15. Parametre = CL_Param()
  16. DonneeEntrainement = CL_Donnee(StartDayEntrainement, NBJoursEntrainement, Parametre)
  17. DonneeValidation = CL_Donnee(StartDayValidation, NBJoursValidation, Parametre)
  18. Model = CL_Model(Parametre)
  19. DossierResultat = f"{Path_run}/"
  20. NumeroTest = fc_NumeroTest(DossierResultat)
  21. DossierResultatModel = f"{DossierResultat}Modele_{NumeroTest}"
  22. if DEBUGpickle == 1:
  23. EntreeEntrainement, targetEntrainement, resGlobalEntrainement, listeJoursEntrainement = DonneeEntrainement.DataPickelData(
  24. StartDayEntrainement, NBJoursEntrainement, Parametre, Var_listeAction)
  25. EntreeValidation, targetValidation, resGlobalValidation, listeJoursValidation = DonneeValidation.DataPickelData(
  26. StartDayValidation, NBJoursValidation, Parametre, Var_listeAction)
  27. else:
  28. EntreeEntrainement, targetEntrainement, resGlobalEntrainement, listeJoursEntrainement = DonneeEntrainement.PreparationJours(
  29. StartDayEntrainement,NBJoursEntrainement, Parametre, Var_listeAction)
  30. EntreeValidation, targetValidation, resGlobalValidation, listeJoursValidation = DonneeValidation.PreparationJours(
  31. StartDayValidation, NBJoursValidation, Parametre, Var_listeAction)
  32. epochs = Model.fit(EntreeEntrainement, targetEntrainement, Parametre, EntreeValidation, targetValidation)
  33. NomModel = xxx(Model, Parametre, EntreeEntrainement, targetEntrainement, listeJoursEntrainement, DonneeEntrainement,
  34. DossierResultatModel, StartDayEntrainement, NBJoursEntrainement, resGlobalEntrainement)
  35. xxx(Model, Parametre, EntreeValidation, targetValidation, listeJoursValidation, DonneeValidation,
  36. DossierResultatModel, StartDayValidation, NBJoursValidation, resGlobalValidation)
  37. return NomModel,epochs
  38. # TODO lui trouvé un vrai nom
  39. def xxx(Model, Parametre, Entree, target, listeJours, Donnee, DossierResultatModel, StartDay, NBJours, resGlobal):
  40. Portefeuille = CL_Achat(Parametre)
  41. resultat = Model.predict(Entree)
  42. AfficheStat(resultat, target)
  43. Portefeuille.MarquetGlobal(resultat, listeJours, Parametre, Donnee)
  44. valeur = Portefeuille.getValueTotal(listeJours[-1], Donnee)
  45. print(f"Debug valeur : {valeur}")
  46. if Path(DossierResultatModel).exists():
  47. nom_Model = next(Path(DossierResultatModel).iterdir()).stem
  48. nom_Model = f"{DossierResultatModel}/{nom_Model}"
  49. nom_res = f"{nom_Model}.res"
  50. else:
  51. nom = Model.EnregistreModel(Parametre, DossierResultatModel, valeur)
  52. nom_Model = f"{DossierResultatModel}/{nom}"
  53. nom_res = f"{DossierResultatModel}/{nom}.res"
  54. ajouter_res(nom_res, StartDay, NBJours, valeur, resGlobal, Portefeuille)
  55. return nom_Model
  56. @profile
  57. def Experimente(ListeDesJourDExperimentation, NBJours, NomModel):
  58. Var_listeAction = listeAction()
  59. PathModel = Path(NomModel).parent
  60. Parametre = CL_Param()
  61. Parametre.RestaureParam(NomModel)
  62. Model = CL_Model(Parametre)
  63. Model.RestaurationModel(NomModel)
  64. for StartDay in ListeDesJourDExperimentation:
  65. Donnee = CL_Donnee(StartDay, NBJours, Parametre)
  66. Entree, target, resGlobal, listeJours = Donnee.DataPickelData( StartDay, NBJours, Parametre, Var_listeAction)
  67. xxx(Model, Parametre, Entree, target, listeJours, Donnee, PathModel, StartDay, NBJours, resGlobal)