openstef 3.2.74__tar.gz → 3.2.76__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (98) hide show
  1. {openstef-3.2.74 → openstef-3.2.76}/PKG-INFO +1 -1
  2. {openstef-3.2.74 → openstef-3.2.76}/openstef/pipeline/optimize_hyperparameters.py +3 -6
  3. {openstef-3.2.74 → openstef-3.2.76}/openstef/pipeline/train_model.py +1 -1
  4. {openstef-3.2.74 → openstef-3.2.76}/openstef/tasks/train_model.py +25 -2
  5. {openstef-3.2.74 → openstef-3.2.76}/openstef.egg-info/PKG-INFO +1 -1
  6. {openstef-3.2.74 → openstef-3.2.76}/setup.py +1 -1
  7. {openstef-3.2.74 → openstef-3.2.76}/LICENSE +0 -0
  8. {openstef-3.2.74 → openstef-3.2.76}/README.md +0 -0
  9. {openstef-3.2.74 → openstef-3.2.76}/openstef/__init__.py +0 -0
  10. {openstef-3.2.74 → openstef-3.2.76}/openstef/__main__.py +0 -0
  11. {openstef-3.2.74 → openstef-3.2.76}/openstef/data/dazls_stored.sav +0 -0
  12. {openstef-3.2.74 → openstef-3.2.76}/openstef/data/dazls_stored.sav.license +0 -0
  13. {openstef-3.2.74 → openstef-3.2.76}/openstef/data/dazls_stored_3.2.49.sav +0 -0
  14. {openstef-3.2.74 → openstef-3.2.76}/openstef/data/dazls_stored_3.2.49.sav.license +0 -0
  15. {openstef-3.2.74 → openstef-3.2.76}/openstef/data/dutch_holidays_2020-2022.csv +0 -0
  16. {openstef-3.2.74 → openstef-3.2.76}/openstef/data/dutch_holidays_2020-2022.csv.license +0 -0
  17. {openstef-3.2.74 → openstef-3.2.76}/openstef/data/pv_single_coefs.csv +0 -0
  18. {openstef-3.2.74 → openstef-3.2.76}/openstef/data/pv_single_coefs.csv.license +0 -0
  19. {openstef-3.2.74 → openstef-3.2.76}/openstef/data_classes/__init__.py +0 -0
  20. {openstef-3.2.74 → openstef-3.2.76}/openstef/data_classes/data_prep.py +0 -0
  21. {openstef-3.2.74 → openstef-3.2.76}/openstef/data_classes/model_specifications.py +0 -0
  22. {openstef-3.2.74 → openstef-3.2.76}/openstef/data_classes/prediction_job.py +0 -0
  23. {openstef-3.2.74 → openstef-3.2.76}/openstef/data_classes/split_function.py +0 -0
  24. {openstef-3.2.74 → openstef-3.2.76}/openstef/enums.py +0 -0
  25. {openstef-3.2.74 → openstef-3.2.76}/openstef/exceptions.py +0 -0
  26. {openstef-3.2.74 → openstef-3.2.76}/openstef/feature_engineering/__init__.py +0 -0
  27. {openstef-3.2.74 → openstef-3.2.76}/openstef/feature_engineering/apply_features.py +0 -0
  28. {openstef-3.2.74 → openstef-3.2.76}/openstef/feature_engineering/data_preparation.py +0 -0
  29. {openstef-3.2.74 → openstef-3.2.76}/openstef/feature_engineering/feature_adder.py +0 -0
  30. {openstef-3.2.74 → openstef-3.2.76}/openstef/feature_engineering/feature_applicator.py +0 -0
  31. {openstef-3.2.74 → openstef-3.2.76}/openstef/feature_engineering/general.py +0 -0
  32. {openstef-3.2.74 → openstef-3.2.76}/openstef/feature_engineering/historic_features.py +0 -0
  33. {openstef-3.2.74 → openstef-3.2.76}/openstef/feature_engineering/holiday_features.py +0 -0
  34. {openstef-3.2.74 → openstef-3.2.76}/openstef/feature_engineering/lag_features.py +0 -0
  35. {openstef-3.2.74 → openstef-3.2.76}/openstef/feature_engineering/weather_features.py +0 -0
  36. {openstef-3.2.74 → openstef-3.2.76}/openstef/metrics/__init__.py +0 -0
  37. {openstef-3.2.74 → openstef-3.2.76}/openstef/metrics/figure.py +0 -0
  38. {openstef-3.2.74 → openstef-3.2.76}/openstef/metrics/metrics.py +0 -0
  39. {openstef-3.2.74 → openstef-3.2.76}/openstef/metrics/reporter.py +0 -0
  40. {openstef-3.2.74 → openstef-3.2.76}/openstef/model/__init__.py +0 -0
  41. {openstef-3.2.74 → openstef-3.2.76}/openstef/model/basecase.py +0 -0
  42. {openstef-3.2.74 → openstef-3.2.76}/openstef/model/confidence_interval_applicator.py +0 -0
  43. {openstef-3.2.74 → openstef-3.2.76}/openstef/model/fallback.py +0 -0
  44. {openstef-3.2.74 → openstef-3.2.76}/openstef/model/metamodels/__init__.py +0 -0
  45. {openstef-3.2.74 → openstef-3.2.76}/openstef/model/metamodels/grouped_regressor.py +0 -0
  46. {openstef-3.2.74 → openstef-3.2.76}/openstef/model/metamodels/missing_values_handler.py +0 -0
  47. {openstef-3.2.74 → openstef-3.2.76}/openstef/model/model_creator.py +0 -0
  48. {openstef-3.2.74 → openstef-3.2.76}/openstef/model/objective.py +0 -0
  49. {openstef-3.2.74 → openstef-3.2.76}/openstef/model/objective_creator.py +0 -0
  50. {openstef-3.2.74 → openstef-3.2.76}/openstef/model/regressors/__init__.py +0 -0
  51. {openstef-3.2.74 → openstef-3.2.76}/openstef/model/regressors/arima.py +0 -0
  52. {openstef-3.2.74 → openstef-3.2.76}/openstef/model/regressors/custom_regressor.py +0 -0
  53. {openstef-3.2.74 → openstef-3.2.76}/openstef/model/regressors/dazls.py +0 -0
  54. {openstef-3.2.74 → openstef-3.2.76}/openstef/model/regressors/lgbm.py +0 -0
  55. {openstef-3.2.74 → openstef-3.2.76}/openstef/model/regressors/linear.py +0 -0
  56. {openstef-3.2.74 → openstef-3.2.76}/openstef/model/regressors/proloaf.py +0 -0
  57. {openstef-3.2.74 → openstef-3.2.76}/openstef/model/regressors/regressor.py +0 -0
  58. {openstef-3.2.74 → openstef-3.2.76}/openstef/model/regressors/xgb.py +0 -0
  59. {openstef-3.2.74 → openstef-3.2.76}/openstef/model/regressors/xgb_quantile.py +0 -0
  60. {openstef-3.2.74 → openstef-3.2.76}/openstef/model/serializer.py +0 -0
  61. {openstef-3.2.74 → openstef-3.2.76}/openstef/model/standard_deviation_generator.py +0 -0
  62. {openstef-3.2.74 → openstef-3.2.76}/openstef/model_selection/__init__.py +0 -0
  63. {openstef-3.2.74 → openstef-3.2.76}/openstef/model_selection/model_selection.py +0 -0
  64. {openstef-3.2.74 → openstef-3.2.76}/openstef/monitoring/__init__.py +0 -0
  65. {openstef-3.2.74 → openstef-3.2.76}/openstef/monitoring/performance_meter.py +0 -0
  66. {openstef-3.2.74 → openstef-3.2.76}/openstef/monitoring/teams.py +0 -0
  67. {openstef-3.2.74 → openstef-3.2.76}/openstef/pipeline/__init__.py +0 -0
  68. {openstef-3.2.74 → openstef-3.2.76}/openstef/pipeline/create_basecase_forecast.py +0 -0
  69. {openstef-3.2.74 → openstef-3.2.76}/openstef/pipeline/create_component_forecast.py +0 -0
  70. {openstef-3.2.74 → openstef-3.2.76}/openstef/pipeline/create_forecast.py +0 -0
  71. {openstef-3.2.74 → openstef-3.2.76}/openstef/pipeline/train_create_forecast_backtest.py +0 -0
  72. {openstef-3.2.74 → openstef-3.2.76}/openstef/pipeline/utils.py +0 -0
  73. {openstef-3.2.74 → openstef-3.2.76}/openstef/postprocessing/__init__.py +0 -0
  74. {openstef-3.2.74 → openstef-3.2.76}/openstef/postprocessing/postprocessing.py +0 -0
  75. {openstef-3.2.74 → openstef-3.2.76}/openstef/preprocessing/__init__.py +0 -0
  76. {openstef-3.2.74 → openstef-3.2.76}/openstef/preprocessing/preprocessing.py +0 -0
  77. {openstef-3.2.74 → openstef-3.2.76}/openstef/tasks/__init__.py +0 -0
  78. {openstef-3.2.74 → openstef-3.2.76}/openstef/tasks/calculate_kpi.py +0 -0
  79. {openstef-3.2.74 → openstef-3.2.76}/openstef/tasks/create_basecase_forecast.py +0 -0
  80. {openstef-3.2.74 → openstef-3.2.76}/openstef/tasks/create_components_forecast.py +0 -0
  81. {openstef-3.2.74 → openstef-3.2.76}/openstef/tasks/create_forecast.py +0 -0
  82. {openstef-3.2.74 → openstef-3.2.76}/openstef/tasks/create_solar_forecast.py +0 -0
  83. {openstef-3.2.74 → openstef-3.2.76}/openstef/tasks/create_wind_forecast.py +0 -0
  84. {openstef-3.2.74 → openstef-3.2.76}/openstef/tasks/optimize_hyperparameters.py +0 -0
  85. {openstef-3.2.74 → openstef-3.2.76}/openstef/tasks/run_tracy.py +0 -0
  86. {openstef-3.2.74 → openstef-3.2.76}/openstef/tasks/split_forecast.py +0 -0
  87. {openstef-3.2.74 → openstef-3.2.76}/openstef/tasks/utils/__init__.py +0 -0
  88. {openstef-3.2.74 → openstef-3.2.76}/openstef/tasks/utils/dependencies.py +0 -0
  89. {openstef-3.2.74 → openstef-3.2.76}/openstef/tasks/utils/predictionjobloop.py +0 -0
  90. {openstef-3.2.74 → openstef-3.2.76}/openstef/tasks/utils/taskcontext.py +0 -0
  91. {openstef-3.2.74 → openstef-3.2.76}/openstef/validation/__init__.py +0 -0
  92. {openstef-3.2.74 → openstef-3.2.76}/openstef/validation/validation.py +0 -0
  93. {openstef-3.2.74 → openstef-3.2.76}/openstef.egg-info/SOURCES.txt +0 -0
  94. {openstef-3.2.74 → openstef-3.2.76}/openstef.egg-info/dependency_links.txt +0 -0
  95. {openstef-3.2.74 → openstef-3.2.76}/openstef.egg-info/requires.txt +0 -0
  96. {openstef-3.2.74 → openstef-3.2.76}/openstef.egg-info/top_level.txt +0 -0
  97. {openstef-3.2.74 → openstef-3.2.76}/pyproject.toml +0 -0
  98. {openstef-3.2.74 → openstef-3.2.76}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: openstef
3
- Version: 3.2.74
3
+ Version: 3.2.76
4
4
  Summary: Open short term energy forecaster
5
5
  Home-page: https://github.com/OpenSTEF/openstef
6
6
  Author: Alliander N.V
@@ -188,7 +188,7 @@ def optimize_hyperparameters_pipeline_core(
188
188
  )
189
189
 
190
190
  best_hyperparams = study.best_params
191
- best_model = study.user_attrs["best_model"]
191
+ # The best_model could be accessed via study.user_attrs["best_model"]
192
192
 
193
193
  logger.info(
194
194
  f"Finished hyperparameter optimization, error objective {study.best_value} "
@@ -209,17 +209,14 @@ def optimize_hyperparameters_pipeline_core(
209
209
  # Train a model using the regular train pipeline.
210
210
  # The train/validation/test split used in hyperparam optimisation
211
211
  # is less suitable for an operational model.
212
- best_model, report, modelspecs, _ = train_model_pipeline_core(
212
+ model, report, model_specs, _ = train_model_pipeline_core(
213
213
  pj=pj, input_data=input_data, model_specs=model_specs
214
214
  )
215
215
 
216
- # Save model and report. Report is always saved to MLFlow and optionally to disk
217
- report = objective.create_report(model=best_model)
218
-
219
216
  trials = objective.get_trial_track()
220
217
  best_trial_number = study.best_trial.number
221
218
 
222
- return best_model, model_specs, report, trials, best_trial_number, study.best_params
219
+ return model, model_specs, report, trials, best_trial_number, study.best_params
223
220
 
224
221
 
225
222
  def optuna_optimization(
@@ -61,7 +61,7 @@ def train_model_pipeline(
61
61
  - The test dataset with forecasts
62
62
 
63
63
  """
64
- # Initialize logger and serializer
64
+ # Initialize serializer
65
65
  serializer = MLflowSerializer(mlflow_tracking_uri=mlflow_tracking_uri)
66
66
 
67
67
  # Get old model and age
@@ -26,10 +26,16 @@ from openstef.data_classes.prediction_job import PredictionJobDataClass
26
26
 
27
27
  from openstef.enums import MLModelType, PipelineType
28
28
  from openstef.exceptions import SkipSaveTrainingForecasts
29
- from openstef.pipeline.train_model import train_model_pipeline
29
+ from openstef.pipeline.train_model import (
30
+ train_model_pipeline,
31
+ train_pipeline_step_load_model,
32
+ MAXIMUM_MODEL_AGE,
33
+ )
30
34
  from openstef.tasks.utils.predictionjobloop import PredictionJobLoop
31
35
  from openstef.tasks.utils.taskcontext import TaskContext
32
36
 
37
+ from openstef.model.serializer import MLflowSerializer
38
+
33
39
  TRAINING_PERIOD_DAYS: int = 120
34
40
  DEFAULT_CHECK_MODEL_AGE: bool = True
35
41
 
@@ -84,13 +90,30 @@ def train_model_task(
84
90
 
85
91
  context.perf_meter.checkpoint("Added metadata to PredictionJob")
86
92
 
93
+ # Check the model age before retrieving the input data to speed up train job.
94
+ # (The exact same model age check is also part of the "train_model_pipeline".)
95
+
96
+ # Initialize serializer
97
+ serializer = MLflowSerializer(mlflow_tracking_uri=mlflow_tracking_uri)
98
+
99
+ # Get old model and age
100
+ _, _, old_model_age = train_pipeline_step_load_model(pj, serializer)
101
+
102
+ # Check old model age and continue yes/no
103
+ if (old_model_age < MAXIMUM_MODEL_AGE) and check_old_model_age:
104
+ context.perf_meter.checkpoint(
105
+ f"Old model is younger than {MAXIMUM_MODEL_AGE} days, skip training"
106
+ )
107
+ if pj.save_train_forecasts:
108
+ raise SkipSaveTrainingForecasts
109
+ return
110
+
87
111
  # Define start and end of the training input data
88
112
  if datetime_end is None:
89
113
  datetime_end = datetime.utcnow()
90
114
  if datetime_start is None:
91
115
  datetime_start = datetime_end - timedelta(days=TRAINING_PERIOD_DAYS)
92
116
 
93
- # todo: See if we can check model age before getting the data
94
117
  # Get training input data from database
95
118
  input_data = context.database.get_model_input(
96
119
  pid=pj["id"],
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: openstef
3
- Version: 3.2.74
3
+ Version: 3.2.76
4
4
  Summary: Open short term energy forecaster
5
5
  Home-page: https://github.com/OpenSTEF/openstef
6
6
  Author: Alliander N.V
@@ -29,7 +29,7 @@ def read_long_description_from_readme():
29
29
 
30
30
  setup(
31
31
  name="openstef",
32
- version="3.2.74",
32
+ version="3.2.76",
33
33
  packages=find_packages(include=["openstef", "openstef.*"]),
34
34
  description="Open short term energy forecaster",
35
35
  long_description=read_long_description_from_readme(),
File without changes
File without changes
File without changes
File without changes
File without changes