openstef 3.4.70__tar.gz → 3.4.72__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 (116) hide show
  1. {openstef-3.4.70 → openstef-3.4.72}/PKG-INFO +2 -2
  2. {openstef-3.4.70 → openstef-3.4.72}/openstef/model/model_creator.py +0 -1
  3. {openstef-3.4.70 → openstef-3.4.72}/openstef/model/objective.py +40 -10
  4. {openstef-3.4.70 → openstef-3.4.72}/openstef/model/regressors/arima.py +1 -1
  5. {openstef-3.4.70 → openstef-3.4.72}/openstef/model/regressors/regressor.py +2 -2
  6. {openstef-3.4.70 → openstef-3.4.72}/openstef/model/regressors/xgb.py +0 -3
  7. {openstef-3.4.70 → openstef-3.4.72}/openstef/pipeline/train_model.py +1 -2
  8. {openstef-3.4.70 → openstef-3.4.72}/openstef.egg-info/PKG-INFO +2 -2
  9. {openstef-3.4.70 → openstef-3.4.72}/openstef.egg-info/requires.txt +1 -1
  10. {openstef-3.4.70 → openstef-3.4.72}/setup.py +1 -1
  11. {openstef-3.4.70 → openstef-3.4.72}/LICENSE +0 -0
  12. {openstef-3.4.70 → openstef-3.4.72}/README.md +0 -0
  13. {openstef-3.4.70 → openstef-3.4.72}/openstef/__init__.py +0 -0
  14. {openstef-3.4.70 → openstef-3.4.72}/openstef/__main__.py +0 -0
  15. {openstef-3.4.70 → openstef-3.4.72}/openstef/app_settings.py +0 -0
  16. {openstef-3.4.70 → openstef-3.4.72}/openstef/data/NL_terrestrial_radiation.csv +0 -0
  17. {openstef-3.4.70 → openstef-3.4.72}/openstef/data/NL_terrestrial_radiation.csv.license +0 -0
  18. {openstef-3.4.70 → openstef-3.4.72}/openstef/data/dazls_model_3.4.24/dazls_stored_3.4.24_baseline_model.z +0 -0
  19. {openstef-3.4.70 → openstef-3.4.72}/openstef/data/dazls_model_3.4.24/dazls_stored_3.4.24_baseline_model.z.license +0 -0
  20. {openstef-3.4.70 → openstef-3.4.72}/openstef/data/dazls_model_3.4.24/dazls_stored_3.4.24_model_card.md +0 -0
  21. {openstef-3.4.70 → openstef-3.4.72}/openstef/data/dazls_model_3.4.24/dazls_stored_3.4.24_model_card.md.license +0 -0
  22. {openstef-3.4.70 → openstef-3.4.72}/openstef/data/dutch_holidays.csv +0 -0
  23. {openstef-3.4.70 → openstef-3.4.72}/openstef/data/dutch_holidays.csv.license +0 -0
  24. {openstef-3.4.70 → openstef-3.4.72}/openstef/data/pv_single_coefs.csv +0 -0
  25. {openstef-3.4.70 → openstef-3.4.72}/openstef/data/pv_single_coefs.csv.license +0 -0
  26. {openstef-3.4.70 → openstef-3.4.72}/openstef/data_classes/__init__.py +0 -0
  27. {openstef-3.4.70 → openstef-3.4.72}/openstef/data_classes/data_prep.py +0 -0
  28. {openstef-3.4.70 → openstef-3.4.72}/openstef/data_classes/model_specifications.py +0 -0
  29. {openstef-3.4.70 → openstef-3.4.72}/openstef/data_classes/prediction_job.py +0 -0
  30. {openstef-3.4.70 → openstef-3.4.72}/openstef/data_classes/split_function.py +0 -0
  31. {openstef-3.4.70 → openstef-3.4.72}/openstef/enums.py +0 -0
  32. {openstef-3.4.70 → openstef-3.4.72}/openstef/exceptions.py +0 -0
  33. {openstef-3.4.70 → openstef-3.4.72}/openstef/feature_engineering/__init__.py +0 -0
  34. {openstef-3.4.70 → openstef-3.4.72}/openstef/feature_engineering/apply_features.py +0 -0
  35. {openstef-3.4.70 → openstef-3.4.72}/openstef/feature_engineering/bidding_zone_to_country_mapping.py +0 -0
  36. {openstef-3.4.70 → openstef-3.4.72}/openstef/feature_engineering/cyclic_features.py +0 -0
  37. {openstef-3.4.70 → openstef-3.4.72}/openstef/feature_engineering/data_preparation.py +0 -0
  38. {openstef-3.4.70 → openstef-3.4.72}/openstef/feature_engineering/feature_adder.py +0 -0
  39. {openstef-3.4.70 → openstef-3.4.72}/openstef/feature_engineering/feature_applicator.py +0 -0
  40. {openstef-3.4.70 → openstef-3.4.72}/openstef/feature_engineering/general.py +0 -0
  41. {openstef-3.4.70 → openstef-3.4.72}/openstef/feature_engineering/holiday_features.py +0 -0
  42. {openstef-3.4.70 → openstef-3.4.72}/openstef/feature_engineering/lag_features.py +0 -0
  43. {openstef-3.4.70 → openstef-3.4.72}/openstef/feature_engineering/missing_values_transformer.py +0 -0
  44. {openstef-3.4.70 → openstef-3.4.72}/openstef/feature_engineering/rolling_features.py +0 -0
  45. {openstef-3.4.70 → openstef-3.4.72}/openstef/feature_engineering/weather_features.py +0 -0
  46. {openstef-3.4.70 → openstef-3.4.72}/openstef/logging/__init__.py +0 -0
  47. {openstef-3.4.70 → openstef-3.4.72}/openstef/logging/base_logger.py +0 -0
  48. {openstef-3.4.70 → openstef-3.4.72}/openstef/logging/logger_factory.py +0 -0
  49. {openstef-3.4.70 → openstef-3.4.72}/openstef/logging/logger_types.py +0 -0
  50. {openstef-3.4.70 → openstef-3.4.72}/openstef/logging/standard_logger.py +0 -0
  51. {openstef-3.4.70 → openstef-3.4.72}/openstef/logging/structlog_logger.py +0 -0
  52. {openstef-3.4.70 → openstef-3.4.72}/openstef/metrics/__init__.py +0 -0
  53. {openstef-3.4.70 → openstef-3.4.72}/openstef/metrics/figure.py +0 -0
  54. {openstef-3.4.70 → openstef-3.4.72}/openstef/metrics/metrics.py +0 -0
  55. {openstef-3.4.70 → openstef-3.4.72}/openstef/metrics/reporter.py +0 -0
  56. {openstef-3.4.70 → openstef-3.4.72}/openstef/model/__init__.py +0 -0
  57. {openstef-3.4.70 → openstef-3.4.72}/openstef/model/basecase.py +0 -0
  58. {openstef-3.4.70 → openstef-3.4.72}/openstef/model/confidence_interval_applicator.py +0 -0
  59. {openstef-3.4.70 → openstef-3.4.72}/openstef/model/fallback.py +0 -0
  60. {openstef-3.4.70 → openstef-3.4.72}/openstef/model/metamodels/__init__.py +0 -0
  61. {openstef-3.4.70 → openstef-3.4.72}/openstef/model/metamodels/feature_clipper.py +0 -0
  62. {openstef-3.4.70 → openstef-3.4.72}/openstef/model/metamodels/grouped_regressor.py +0 -0
  63. {openstef-3.4.70 → openstef-3.4.72}/openstef/model/metamodels/missing_values_handler.py +0 -0
  64. {openstef-3.4.70 → openstef-3.4.72}/openstef/model/objective_creator.py +0 -0
  65. {openstef-3.4.70 → openstef-3.4.72}/openstef/model/regressors/__init__.py +0 -0
  66. {openstef-3.4.70 → openstef-3.4.72}/openstef/model/regressors/custom_regressor.py +0 -0
  67. {openstef-3.4.70 → openstef-3.4.72}/openstef/model/regressors/dazls.py +0 -0
  68. {openstef-3.4.70 → openstef-3.4.72}/openstef/model/regressors/flatliner.py +0 -0
  69. {openstef-3.4.70 → openstef-3.4.72}/openstef/model/regressors/gblinear_quantile.py +0 -0
  70. {openstef-3.4.70 → openstef-3.4.72}/openstef/model/regressors/lgbm.py +0 -0
  71. {openstef-3.4.70 → openstef-3.4.72}/openstef/model/regressors/linear.py +0 -0
  72. {openstef-3.4.70 → openstef-3.4.72}/openstef/model/regressors/linear_quantile.py +0 -0
  73. {openstef-3.4.70 → openstef-3.4.72}/openstef/model/regressors/xgb_multioutput_quantile.py +0 -0
  74. {openstef-3.4.70 → openstef-3.4.72}/openstef/model/regressors/xgb_quantile.py +0 -0
  75. {openstef-3.4.70 → openstef-3.4.72}/openstef/model/serializer.py +0 -0
  76. {openstef-3.4.70 → openstef-3.4.72}/openstef/model/standard_deviation_generator.py +0 -0
  77. {openstef-3.4.70 → openstef-3.4.72}/openstef/model_selection/__init__.py +0 -0
  78. {openstef-3.4.70 → openstef-3.4.72}/openstef/model_selection/model_selection.py +0 -0
  79. {openstef-3.4.70 → openstef-3.4.72}/openstef/monitoring/__init__.py +0 -0
  80. {openstef-3.4.70 → openstef-3.4.72}/openstef/monitoring/performance_meter.py +0 -0
  81. {openstef-3.4.70 → openstef-3.4.72}/openstef/monitoring/teams.py +0 -0
  82. {openstef-3.4.70 → openstef-3.4.72}/openstef/pipeline/__init__.py +0 -0
  83. {openstef-3.4.70 → openstef-3.4.72}/openstef/pipeline/create_basecase_forecast.py +0 -0
  84. {openstef-3.4.70 → openstef-3.4.72}/openstef/pipeline/create_component_forecast.py +0 -0
  85. {openstef-3.4.70 → openstef-3.4.72}/openstef/pipeline/create_forecast.py +0 -0
  86. {openstef-3.4.70 → openstef-3.4.72}/openstef/pipeline/optimize_hyperparameters.py +0 -0
  87. {openstef-3.4.70 → openstef-3.4.72}/openstef/pipeline/train_create_forecast_backtest.py +0 -0
  88. {openstef-3.4.70 → openstef-3.4.72}/openstef/pipeline/utils.py +0 -0
  89. {openstef-3.4.70 → openstef-3.4.72}/openstef/plotting/__init__.py +0 -0
  90. {openstef-3.4.70 → openstef-3.4.72}/openstef/plotting/load_forecast_plotter.py +0 -0
  91. {openstef-3.4.70 → openstef-3.4.72}/openstef/postprocessing/__init__.py +0 -0
  92. {openstef-3.4.70 → openstef-3.4.72}/openstef/postprocessing/postprocessing.py +0 -0
  93. {openstef-3.4.70 → openstef-3.4.72}/openstef/preprocessing/__init__.py +0 -0
  94. {openstef-3.4.70 → openstef-3.4.72}/openstef/preprocessing/preprocessing.py +0 -0
  95. {openstef-3.4.70 → openstef-3.4.72}/openstef/settings.py +0 -0
  96. {openstef-3.4.70 → openstef-3.4.72}/openstef/tasks/__init__.py +0 -0
  97. {openstef-3.4.70 → openstef-3.4.72}/openstef/tasks/calculate_kpi.py +0 -0
  98. {openstef-3.4.70 → openstef-3.4.72}/openstef/tasks/create_basecase_forecast.py +0 -0
  99. {openstef-3.4.70 → openstef-3.4.72}/openstef/tasks/create_components_forecast.py +0 -0
  100. {openstef-3.4.70 → openstef-3.4.72}/openstef/tasks/create_forecast.py +0 -0
  101. {openstef-3.4.70 → openstef-3.4.72}/openstef/tasks/create_solar_forecast.py +0 -0
  102. {openstef-3.4.70 → openstef-3.4.72}/openstef/tasks/create_wind_forecast.py +0 -0
  103. {openstef-3.4.70 → openstef-3.4.72}/openstef/tasks/optimize_hyperparameters.py +0 -0
  104. {openstef-3.4.70 → openstef-3.4.72}/openstef/tasks/split_forecast.py +0 -0
  105. {openstef-3.4.70 → openstef-3.4.72}/openstef/tasks/train_model.py +0 -0
  106. {openstef-3.4.70 → openstef-3.4.72}/openstef/tasks/utils/__init__.py +0 -0
  107. {openstef-3.4.70 → openstef-3.4.72}/openstef/tasks/utils/dependencies.py +0 -0
  108. {openstef-3.4.70 → openstef-3.4.72}/openstef/tasks/utils/predictionjobloop.py +0 -0
  109. {openstef-3.4.70 → openstef-3.4.72}/openstef/tasks/utils/taskcontext.py +0 -0
  110. {openstef-3.4.70 → openstef-3.4.72}/openstef/validation/__init__.py +0 -0
  111. {openstef-3.4.70 → openstef-3.4.72}/openstef/validation/validation.py +0 -0
  112. {openstef-3.4.70 → openstef-3.4.72}/openstef.egg-info/SOURCES.txt +0 -0
  113. {openstef-3.4.70 → openstef-3.4.72}/openstef.egg-info/dependency_links.txt +0 -0
  114. {openstef-3.4.70 → openstef-3.4.72}/openstef.egg-info/top_level.txt +0 -0
  115. {openstef-3.4.70 → openstef-3.4.72}/pyproject.toml +0 -0
  116. {openstef-3.4.70 → openstef-3.4.72}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: openstef
3
- Version: 3.4.70
3
+ Version: 3.4.72
4
4
  Summary: Open short term energy forecaster
5
5
  Home-page: https://github.com/OpenSTEF/openstef
6
6
  Author: Alliander N.V
@@ -16,7 +16,7 @@ Description-Content-Type: text/markdown
16
16
  License-File: LICENSE
17
17
  Requires-Dist: holidays==0.21
18
18
  Requires-Dist: joblib==1.3.2
19
- Requires-Dist: lightgbm~=3.3
19
+ Requires-Dist: lightgbm>=4.0
20
20
  Requires-Dist: matplotlib~=3.7
21
21
  Requires-Dist: mlflow~=2.3
22
22
  Requires-Dist: networkx~=3.1
@@ -73,7 +73,6 @@ valid_model_kwargs = {
73
73
  "n_jobs",
74
74
  "silent",
75
75
  "importance_type",
76
- "early_stopping_rounds",
77
76
  ],
78
77
  ModelType.XGB_QUANTILE: [
79
78
  "quantiles",
@@ -7,6 +7,8 @@ from typing import Any, Callable, Optional
7
7
 
8
8
  import optuna
9
9
  import pandas as pd
10
+ from lightgbm import early_stopping
11
+ from xgboost.callback import EarlyStopping
10
12
 
11
13
  from openstef.enums import ModelType
12
14
  from openstef.metrics import metrics
@@ -130,31 +132,42 @@ class RegressorObjective:
130
132
  # Configure evals for early stopping
131
133
  eval_set = [(train_x, train_y), (valid_x, valid_y)]
132
134
 
133
- # get the parameters used in this trial
135
+ # Get the parameters used in this trial
134
136
  hyper_params = self.get_params(trial)
135
137
 
136
- # insert parameters into model
138
+ # Insert parameters into model
137
139
  self.model.set_params(**hyper_params)
138
140
 
139
- # create the specific pruning callback
141
+ callbacks = []
142
+
143
+ # Create the early stopping callback
144
+ early_stopping_callback = self.get_early_stopping_callback()
145
+ if early_stopping_callback is not None:
146
+ callbacks.append(early_stopping_callback)
147
+
148
+ # Create the specific pruning callback
140
149
  pruning_callback = self.get_pruning_callback(trial)
141
- if pruning_callback is None:
142
- callbacks = None
143
- else:
144
- callbacks = [pruning_callback]
150
+ if pruning_callback is not None:
151
+ callbacks.append(pruning_callback)
152
+
153
+ # Pass verbose argument to fit call if model is not LGB
154
+ fit_kwargs = {}
155
+ if self.model_type not in [ModelType.XGB, ModelType.LGB]:
156
+ fit_kwargs["early_stopping_rounds"] = EARLY_STOPPING_ROUNDS
157
+ elif self.model_type != ModelType.LGB:
158
+ fit_kwargs["verbose"] = self.verbose
145
159
 
146
160
  # validation_0 and validation_1 are available
147
161
  self.model.fit(
148
162
  train_x,
149
163
  train_y,
150
164
  eval_set=eval_set,
151
- early_stopping_rounds=EARLY_STOPPING_ROUNDS,
152
- verbose=self.verbose,
153
165
  eval_metric=self.eval_metric,
154
166
  callbacks=callbacks,
167
+ **fit_kwargs,
155
168
  )
156
169
 
157
- self.model.feature_importance_dataframe = self.model.set_feature_importance()
170
+ self.model.feature_importance_dataframe = self.model.get_feature_importance()
158
171
 
159
172
  # Do confidence interval determination
160
173
  self.model = StandardDeviationGenerator(
@@ -203,6 +216,9 @@ class RegressorObjective:
203
216
  def get_pruning_callback(self, trial: optuna.trial.FrozenTrial):
204
217
  return None
205
218
 
219
+ def get_early_stopping_callback(self):
220
+ return None
221
+
206
222
  def get_trial_track(self) -> dict:
207
223
  """Get a dictionary of al trials.
208
224
 
@@ -272,6 +288,15 @@ class XGBRegressorObjective(RegressorObjective):
272
288
  trial, observation_key=f"validation_1-{self.eval_metric}"
273
289
  )
274
290
 
291
+ def get_early_stopping_callback(self):
292
+ return EarlyStopping(
293
+ rounds=EARLY_STOPPING_ROUNDS,
294
+ metric_name=self.eval_metric,
295
+ data_name=f"validation_1",
296
+ maximize=False,
297
+ save_best=True,
298
+ )
299
+
275
300
  @classmethod
276
301
  def get_default_values(cls) -> dict:
277
302
  default_parameter_values = super().get_default_values()
@@ -319,6 +344,11 @@ class LGBRegressorObjective(RegressorObjective):
319
344
  trial, metric=metric, valid_name="valid_1"
320
345
  )
321
346
 
347
+ def get_early_stopping_callback(self):
348
+ return early_stopping(
349
+ stopping_rounds=EARLY_STOPPING_ROUNDS, verbose=self.verbose
350
+ )
351
+
322
352
 
323
353
  class XGBQuantileRegressorObjective(RegressorObjective):
324
354
  def __init__(self, *args, **kwargs):
@@ -126,7 +126,7 @@ class ARIMAOpenstfRegressor(OpenstfRegressor):
126
126
  predictions = self.predict_quantile(start, end, exog=x, quantile=quantile)
127
127
  return predictions
128
128
 
129
- def set_feature_importance(self):
129
+ def get_feature_importance(self):
130
130
  """Because report needs 'weight' and 'gain' as importance metrics, we set the values to these names.
131
131
 
132
132
  - 'weight' is corresponding to the coefficients values
@@ -59,7 +59,7 @@ class OpenstfRegressor(BaseEstimator):
59
59
  """
60
60
 
61
61
  @abstractmethod
62
- def fit(self, x: np.array, y: np.array, **kwargs) -> RegressorMixin:
62
+ def fit(self, x: pd.DataFrame, y: pd.DataFrame, **kwargs) -> RegressorMixin:
63
63
  """Fits the regressor.
64
64
 
65
65
  Args:
@@ -72,7 +72,7 @@ class OpenstfRegressor(BaseEstimator):
72
72
 
73
73
  """
74
74
 
75
- def set_feature_importance(self) -> Union[pd.DataFrame, None]:
75
+ def get_feature_importance(self) -> Union[pd.DataFrame, None]:
76
76
  """Get feature importance.
77
77
 
78
78
  Returns:
@@ -36,13 +36,10 @@ class XGBOpenstfRegressor(XGBRegressor, OpenstfRegressor):
36
36
  x: np.array,
37
37
  y: np.array,
38
38
  *,
39
- early_stopping_rounds: Optional[int] = None,
40
39
  callbacks: Optional[list] = None,
41
40
  eval_metric: Optional[str] = None,
42
41
  **kwargs
43
42
  ):
44
- if early_stopping_rounds is not None:
45
- self.set_params(early_stopping_rounds=early_stopping_rounds)
46
43
  if callbacks is not None:
47
44
  self.set_params(callbacks=callbacks)
48
45
  if eval_metric is not None:
@@ -495,10 +495,9 @@ def train_pipeline_step_train_model(
495
495
  train_x,
496
496
  train_y,
497
497
  eval_set=eval_set,
498
- verbose=False,
499
498
  )
500
499
  # Gets the feature importance df or None if we don't have feature importance
501
- model.feature_importance_dataframe = model.set_feature_importance()
500
+ model.feature_importance_dataframe = model.get_feature_importance()
502
501
 
503
502
  logger.info("Fitted a new model, not yet stored")
504
503
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: openstef
3
- Version: 3.4.70
3
+ Version: 3.4.72
4
4
  Summary: Open short term energy forecaster
5
5
  Home-page: https://github.com/OpenSTEF/openstef
6
6
  Author: Alliander N.V
@@ -16,7 +16,7 @@ Description-Content-Type: text/markdown
16
16
  License-File: LICENSE
17
17
  Requires-Dist: holidays==0.21
18
18
  Requires-Dist: joblib==1.3.2
19
- Requires-Dist: lightgbm~=3.3
19
+ Requires-Dist: lightgbm>=4.0
20
20
  Requires-Dist: matplotlib~=3.7
21
21
  Requires-Dist: mlflow~=2.3
22
22
  Requires-Dist: networkx~=3.1
@@ -1,6 +1,6 @@
1
1
  holidays==0.21
2
2
  joblib==1.3.2
3
- lightgbm~=3.3
3
+ lightgbm>=4.0
4
4
  matplotlib~=3.7
5
5
  mlflow~=2.3
6
6
  networkx~=3.1
@@ -33,7 +33,7 @@ def read_long_description_from_readme():
33
33
 
34
34
  setup(
35
35
  name="openstef",
36
- version="3.4.70",
36
+ version="3.4.72",
37
37
  packages=find_packages(include=["openstef", "openstef.*"]),
38
38
  description="Open short term energy forecaster",
39
39
  long_description=read_long_description_from_readme(),
File without changes
File without changes
File without changes
File without changes
File without changes