openstef 3.4.31__tar.gz → 3.4.33__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 (101) hide show
  1. {openstef-3.4.31 → openstef-3.4.33}/PKG-INFO +1 -1
  2. openstef-3.4.33/openstef/data/dazls_model_3.4.24/dazls_stored_3.4.24_baseline_model.z +0 -0
  3. openstef-3.4.33/openstef/data/dazls_model_3.4.24/dazls_stored_3.4.24_model_card.md +18 -0
  4. openstef-3.4.33/openstef/data/dutch_holidays_2020-2022.csv.license +3 -0
  5. openstef-3.4.33/openstef/data/pv_single_coefs.csv.license +3 -0
  6. {openstef-3.4.31 → openstef-3.4.33}/openstef/feature_engineering/missing_values_transformer.py +18 -14
  7. {openstef-3.4.31 → openstef-3.4.33}/openstef/model/regressors/linear_quantile.py +1 -1
  8. {openstef-3.4.31 → openstef-3.4.33}/openstef/model/regressors/xgb.py +23 -0
  9. {openstef-3.4.31 → openstef-3.4.33}/openstef/tasks/create_basecase_forecast.py +2 -2
  10. {openstef-3.4.31 → openstef-3.4.33}/openstef/tasks/create_components_forecast.py +2 -2
  11. {openstef-3.4.31 → openstef-3.4.33}/openstef/tasks/create_forecast.py +2 -2
  12. {openstef-3.4.31 → openstef-3.4.33}/openstef/tasks/create_solar_forecast.py +2 -2
  13. {openstef-3.4.31 → openstef-3.4.33}/openstef.egg-info/PKG-INFO +1 -1
  14. {openstef-3.4.31 → openstef-3.4.33}/openstef.egg-info/SOURCES.txt +4 -0
  15. {openstef-3.4.31 → openstef-3.4.33}/setup.py +2 -2
  16. {openstef-3.4.31 → openstef-3.4.33}/LICENSE +0 -0
  17. {openstef-3.4.31 → openstef-3.4.33}/README.md +0 -0
  18. {openstef-3.4.31 → openstef-3.4.33}/openstef/__init__.py +0 -0
  19. {openstef-3.4.31 → openstef-3.4.33}/openstef/__main__.py +0 -0
  20. {openstef-3.4.31 → openstef-3.4.33}/openstef/app_settings.py +0 -0
  21. /openstef-3.4.31/openstef/data/dutch_holidays_2020-2022.csv.license → /openstef-3.4.33/openstef/data/dazls_model_3.4.24/dazls_stored_3.4.24_baseline_model.z.license +0 -0
  22. /openstef-3.4.31/openstef/data/pv_single_coefs.csv.license → /openstef-3.4.33/openstef/data/dazls_model_3.4.24/dazls_stored_3.4.24_model_card.md.license +0 -0
  23. {openstef-3.4.31 → openstef-3.4.33}/openstef/data/dutch_holidays_2020-2022.csv +0 -0
  24. {openstef-3.4.31 → openstef-3.4.33}/openstef/data/pv_single_coefs.csv +0 -0
  25. {openstef-3.4.31 → openstef-3.4.33}/openstef/data_classes/__init__.py +0 -0
  26. {openstef-3.4.31 → openstef-3.4.33}/openstef/data_classes/data_prep.py +0 -0
  27. {openstef-3.4.31 → openstef-3.4.33}/openstef/data_classes/model_specifications.py +0 -0
  28. {openstef-3.4.31 → openstef-3.4.33}/openstef/data_classes/prediction_job.py +0 -0
  29. {openstef-3.4.31 → openstef-3.4.33}/openstef/data_classes/split_function.py +0 -0
  30. {openstef-3.4.31 → openstef-3.4.33}/openstef/enums.py +0 -0
  31. {openstef-3.4.31 → openstef-3.4.33}/openstef/exceptions.py +0 -0
  32. {openstef-3.4.31 → openstef-3.4.33}/openstef/feature_engineering/__init__.py +0 -0
  33. {openstef-3.4.31 → openstef-3.4.33}/openstef/feature_engineering/apply_features.py +0 -0
  34. {openstef-3.4.31 → openstef-3.4.33}/openstef/feature_engineering/data_preparation.py +0 -0
  35. {openstef-3.4.31 → openstef-3.4.33}/openstef/feature_engineering/feature_adder.py +0 -0
  36. {openstef-3.4.31 → openstef-3.4.33}/openstef/feature_engineering/feature_applicator.py +0 -0
  37. {openstef-3.4.31 → openstef-3.4.33}/openstef/feature_engineering/general.py +0 -0
  38. {openstef-3.4.31 → openstef-3.4.33}/openstef/feature_engineering/holiday_features.py +0 -0
  39. {openstef-3.4.31 → openstef-3.4.33}/openstef/feature_engineering/lag_features.py +0 -0
  40. {openstef-3.4.31 → openstef-3.4.33}/openstef/feature_engineering/weather_features.py +0 -0
  41. {openstef-3.4.31 → openstef-3.4.33}/openstef/metrics/__init__.py +0 -0
  42. {openstef-3.4.31 → openstef-3.4.33}/openstef/metrics/figure.py +0 -0
  43. {openstef-3.4.31 → openstef-3.4.33}/openstef/metrics/metrics.py +0 -0
  44. {openstef-3.4.31 → openstef-3.4.33}/openstef/metrics/reporter.py +0 -0
  45. {openstef-3.4.31 → openstef-3.4.33}/openstef/model/__init__.py +0 -0
  46. {openstef-3.4.31 → openstef-3.4.33}/openstef/model/basecase.py +0 -0
  47. {openstef-3.4.31 → openstef-3.4.33}/openstef/model/confidence_interval_applicator.py +0 -0
  48. {openstef-3.4.31 → openstef-3.4.33}/openstef/model/fallback.py +0 -0
  49. {openstef-3.4.31 → openstef-3.4.33}/openstef/model/metamodels/__init__.py +0 -0
  50. {openstef-3.4.31 → openstef-3.4.33}/openstef/model/metamodels/grouped_regressor.py +0 -0
  51. {openstef-3.4.31 → openstef-3.4.33}/openstef/model/metamodels/missing_values_handler.py +0 -0
  52. {openstef-3.4.31 → openstef-3.4.33}/openstef/model/model_creator.py +0 -0
  53. {openstef-3.4.31 → openstef-3.4.33}/openstef/model/objective.py +0 -0
  54. {openstef-3.4.31 → openstef-3.4.33}/openstef/model/objective_creator.py +0 -0
  55. {openstef-3.4.31 → openstef-3.4.33}/openstef/model/regressors/__init__.py +0 -0
  56. {openstef-3.4.31 → openstef-3.4.33}/openstef/model/regressors/arima.py +0 -0
  57. {openstef-3.4.31 → openstef-3.4.33}/openstef/model/regressors/custom_regressor.py +0 -0
  58. {openstef-3.4.31 → openstef-3.4.33}/openstef/model/regressors/dazls.py +0 -0
  59. {openstef-3.4.31 → openstef-3.4.33}/openstef/model/regressors/flatliner.py +0 -0
  60. {openstef-3.4.31 → openstef-3.4.33}/openstef/model/regressors/lgbm.py +0 -0
  61. {openstef-3.4.31 → openstef-3.4.33}/openstef/model/regressors/linear.py +0 -0
  62. {openstef-3.4.31 → openstef-3.4.33}/openstef/model/regressors/regressor.py +0 -0
  63. {openstef-3.4.31 → openstef-3.4.33}/openstef/model/regressors/xgb_multioutput_quantile.py +0 -0
  64. {openstef-3.4.31 → openstef-3.4.33}/openstef/model/regressors/xgb_quantile.py +0 -0
  65. {openstef-3.4.31 → openstef-3.4.33}/openstef/model/serializer.py +0 -0
  66. {openstef-3.4.31 → openstef-3.4.33}/openstef/model/standard_deviation_generator.py +0 -0
  67. {openstef-3.4.31 → openstef-3.4.33}/openstef/model_selection/__init__.py +0 -0
  68. {openstef-3.4.31 → openstef-3.4.33}/openstef/model_selection/model_selection.py +0 -0
  69. {openstef-3.4.31 → openstef-3.4.33}/openstef/monitoring/__init__.py +0 -0
  70. {openstef-3.4.31 → openstef-3.4.33}/openstef/monitoring/performance_meter.py +0 -0
  71. {openstef-3.4.31 → openstef-3.4.33}/openstef/monitoring/teams.py +0 -0
  72. {openstef-3.4.31 → openstef-3.4.33}/openstef/pipeline/__init__.py +0 -0
  73. {openstef-3.4.31 → openstef-3.4.33}/openstef/pipeline/create_basecase_forecast.py +0 -0
  74. {openstef-3.4.31 → openstef-3.4.33}/openstef/pipeline/create_component_forecast.py +0 -0
  75. {openstef-3.4.31 → openstef-3.4.33}/openstef/pipeline/create_forecast.py +0 -0
  76. {openstef-3.4.31 → openstef-3.4.33}/openstef/pipeline/optimize_hyperparameters.py +0 -0
  77. {openstef-3.4.31 → openstef-3.4.33}/openstef/pipeline/train_create_forecast_backtest.py +0 -0
  78. {openstef-3.4.31 → openstef-3.4.33}/openstef/pipeline/train_model.py +0 -0
  79. {openstef-3.4.31 → openstef-3.4.33}/openstef/pipeline/utils.py +0 -0
  80. {openstef-3.4.31 → openstef-3.4.33}/openstef/postprocessing/__init__.py +0 -0
  81. {openstef-3.4.31 → openstef-3.4.33}/openstef/postprocessing/postprocessing.py +0 -0
  82. {openstef-3.4.31 → openstef-3.4.33}/openstef/preprocessing/__init__.py +0 -0
  83. {openstef-3.4.31 → openstef-3.4.33}/openstef/preprocessing/preprocessing.py +0 -0
  84. {openstef-3.4.31 → openstef-3.4.33}/openstef/settings.py +0 -0
  85. {openstef-3.4.31 → openstef-3.4.33}/openstef/tasks/__init__.py +0 -0
  86. {openstef-3.4.31 → openstef-3.4.33}/openstef/tasks/calculate_kpi.py +0 -0
  87. {openstef-3.4.31 → openstef-3.4.33}/openstef/tasks/create_wind_forecast.py +0 -0
  88. {openstef-3.4.31 → openstef-3.4.33}/openstef/tasks/optimize_hyperparameters.py +0 -0
  89. {openstef-3.4.31 → openstef-3.4.33}/openstef/tasks/split_forecast.py +0 -0
  90. {openstef-3.4.31 → openstef-3.4.33}/openstef/tasks/train_model.py +0 -0
  91. {openstef-3.4.31 → openstef-3.4.33}/openstef/tasks/utils/__init__.py +0 -0
  92. {openstef-3.4.31 → openstef-3.4.33}/openstef/tasks/utils/dependencies.py +0 -0
  93. {openstef-3.4.31 → openstef-3.4.33}/openstef/tasks/utils/predictionjobloop.py +0 -0
  94. {openstef-3.4.31 → openstef-3.4.33}/openstef/tasks/utils/taskcontext.py +0 -0
  95. {openstef-3.4.31 → openstef-3.4.33}/openstef/validation/__init__.py +0 -0
  96. {openstef-3.4.31 → openstef-3.4.33}/openstef/validation/validation.py +0 -0
  97. {openstef-3.4.31 → openstef-3.4.33}/openstef.egg-info/dependency_links.txt +0 -0
  98. {openstef-3.4.31 → openstef-3.4.33}/openstef.egg-info/requires.txt +0 -0
  99. {openstef-3.4.31 → openstef-3.4.33}/openstef.egg-info/top_level.txt +0 -0
  100. {openstef-3.4.31 → openstef-3.4.33}/pyproject.toml +0 -0
  101. {openstef-3.4.31 → openstef-3.4.33}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: openstef
3
- Version: 3.4.31
3
+ Version: 3.4.33
4
4
  Summary: Open short term energy forecaster
5
5
  Home-page: https://github.com/OpenSTEF/openstef
6
6
  Author: Alliander N.V
@@ -0,0 +1,18 @@
1
+
2
+ # Model details : dazls\_model\_baseline\_model
3
+
4
+ ## Description
5
+ **Model Name**: dazls\_model\_baseline\_model
6
+
7
+ **Author**: KTP, Alliander
8
+
9
+ **Model type**: Energy splitting model
10
+
11
+ **Model Architecture**: LinearRegression
12
+
13
+ **Date**: 2024-04-26
14
+
15
+ ## Intended use
16
+ This is a DAZLs model aimed at determining the energy splits for substations.
17
+ Each of these splits are determined based on a set of features that are available in production,
18
+ and in this case have their origin in the Dutch energy grid.********************
@@ -0,0 +1,3 @@
1
+ SPDX-FileCopyrightText: 2017-2023 Contributors to the OpenSTEF project <korte.termijn.prognoses@alliander.com>
2
+
3
+ SPDX-License-Identifier: MPL-2.0
@@ -0,0 +1,3 @@
1
+ SPDX-FileCopyrightText: 2017-2023 Contributors to the OpenSTEF project <korte.termijn.prognoses@alliander.com>
2
+
3
+ SPDX-License-Identifier: MPL-2.0
@@ -7,7 +7,7 @@ import numpy as np
7
7
  import pandas as pd
8
8
  from sklearn.impute import SimpleImputer
9
9
  from sklearn.preprocessing import FunctionTransformer
10
- from sklearn.utils.validation import check_array
10
+ from sklearn.utils.validation import check_array, check_is_fitted
11
11
 
12
12
 
13
13
  class MissingValuesTransformer:
@@ -42,6 +42,20 @@ class MissingValuesTransformer:
42
42
  self.missing_values = missing_values
43
43
  self.imputation_strategy = imputation_strategy
44
44
  self.fill_value = fill_value
45
+ self.is_fitted_ = False
46
+
47
+ # Build the proper imputation transformer
48
+ # - Identity function if strategy is None
49
+ # - SimpleImputer with the dedicated strategy
50
+ if self.imputation_strategy is None:
51
+ self.imputer_ = FunctionTransformer(func=self._identity)
52
+ else:
53
+ self.imputer_ = SimpleImputer(
54
+ missing_values=self.missing_values,
55
+ strategy=self.imputation_strategy,
56
+ fill_value=self.fill_value,
57
+ ).set_output(transform="pandas")
58
+ self.imputer_._validate_params()
45
59
 
46
60
  def fit(self, x, y=None):
47
61
  """Fit the imputer on the input data."""
@@ -56,23 +70,13 @@ class MissingValuesTransformer:
56
70
  is_column_null = x.isnull().all(axis="index")
57
71
  self.non_null_feature_names = list(x.columns[~is_column_null])
58
72
 
59
- # Build the proper imputation transformer
60
- # - Identity function if strategy is None
61
- # - SimpleImputer with the dedicated strategy
62
- if self.imputation_strategy is None:
63
- self.imputer_ = FunctionTransformer(func=self._identity)
64
- else:
65
- self.imputer_ = SimpleImputer(
66
- missing_values=self.missing_values,
67
- strategy=self.imputation_strategy,
68
- fill_value=self.fill_value,
69
- ).set_output(transform="pandas")
70
-
71
73
  # Imputers do not support labels
72
- self.imputer_.fit(X=x, y=None)
74
+ self.imputer_.fit(X=x[self.non_null_feature_names], y=None)
75
+ self.is_fitted_ = True
73
76
 
74
77
  def transform(self, x) -> pd.DataFrame:
75
78
  """Transform the input data by imputing missing values."""
79
+ check_is_fitted(self)
76
80
  _ = check_array(x, force_all_finite="allow-nan")
77
81
  if not isinstance(x, pd.DataFrame):
78
82
  x = pd.DataFrame(np.asarray(x))
@@ -231,7 +231,7 @@ class LinearQuantileOpenstfRegressor(OpenstfRegressor, RegressorMixin):
231
231
  return np.array(
232
232
  [
233
233
  reg_feature_importances_dict.get(c, 0)
234
- for c in self.imputer_.in_feature_names
234
+ for c in self.imputer_.non_null_feature_names
235
235
  ]
236
236
  )
237
237
 
@@ -1,6 +1,10 @@
1
1
  # SPDX-FileCopyrightText: 2017-2023 Contributors to the OpenSTEF project <korte.termijn.prognoses@alliander.com> # noqa E501>
2
2
  #
3
3
  # SPDX-License-Identifier: MPL-2.0
4
+ from typing import Optional
5
+
6
+ import numpy as np
7
+ from sklearn.base import RegressorMixin
4
8
 
5
9
  from xgboost import XGBRegressor
6
10
 
@@ -27,3 +31,22 @@ class XGBOpenstfRegressor(XGBRegressor, OpenstfRegressor):
27
31
  "gain_importance_name": "total_gain",
28
32
  "weight_importance_name": "weight",
29
33
  }
34
+
35
+ def fit(
36
+ self,
37
+ x: np.array,
38
+ y: np.array,
39
+ *,
40
+ early_stopping_rounds: Optional[int] = None,
41
+ callbacks: Optional[list] = None,
42
+ eval_metric: Optional[str] = None,
43
+ **kwargs
44
+ ):
45
+ if early_stopping_rounds is not None:
46
+ self.set_params(early_stopping_rounds=early_stopping_rounds)
47
+ if callbacks is not None:
48
+ self.set_params(callbacks=callbacks)
49
+ if eval_metric is not None:
50
+ self.set_params(eval_metric=eval_metric)
51
+
52
+ super().fit(x, y, **kwargs)
@@ -97,7 +97,7 @@ def create_basecase_forecast_task(
97
97
  context.database.write_forecast(basecase_forecast, t_ahead_series=True)
98
98
 
99
99
 
100
- def main(config: object = None, database: object = None):
100
+ def main(config: object = None, database: object = None, **kwargs):
101
101
  taskname = Path(__file__).name.replace(".py", "")
102
102
 
103
103
  if database is None or config is None:
@@ -110,7 +110,7 @@ def main(config: object = None, database: object = None):
110
110
  model_type = ["xgb", "xgb_quantile", "lgb"]
111
111
 
112
112
  PredictionJobLoop(context, model_type=model_type).map(
113
- create_basecase_forecast_task, context
113
+ create_basecase_forecast_task, context, **kwargs
114
114
  )
115
115
 
116
116
 
@@ -140,7 +140,7 @@ def create_components_forecast_task(
140
140
  )
141
141
 
142
142
 
143
- def main(config: object = None, database: object = None):
143
+ def main(config: object = None, database: object = None, **kwargs):
144
144
  taskname = Path(__file__).name.replace(".py", "")
145
145
 
146
146
  if database is None or config is None:
@@ -155,7 +155,7 @@ def main(config: object = None, database: object = None):
155
155
  PredictionJobLoop(
156
156
  context,
157
157
  model_type=model_type,
158
- ).map(create_components_forecast_task, context)
158
+ ).map(create_components_forecast_task, context, **kwargs)
159
159
 
160
160
 
161
161
  if __name__ == "__main__":
@@ -118,7 +118,7 @@ def create_forecast_task(
118
118
  context.database.write_forecast(forecast, t_ahead_series=True)
119
119
 
120
120
 
121
- def main(model_type=None, config=None, database=None):
121
+ def main(model_type=None, config=None, database=None, **kwargs):
122
122
  taskname = Path(__file__).name.replace(".py", "")
123
123
 
124
124
  if database is None or config is None:
@@ -132,7 +132,7 @@ def main(model_type=None, config=None, database=None):
132
132
  model_type = [ml.value for ml in MLModelType]
133
133
 
134
134
  PredictionJobLoop(context, model_type=model_type).map(
135
- create_forecast_task, context
135
+ create_forecast_task, context, **kwargs
136
136
  )
137
137
 
138
138
 
@@ -216,7 +216,7 @@ def fides(data: pd.DataFrame, all_forecasts: bool = False):
216
216
  return forecast
217
217
 
218
218
 
219
- def main(config=None, database=None):
219
+ def main(config=None, database=None, **kwargs):
220
220
  taskname = Path(__file__).name.replace(".py", "")
221
221
 
222
222
  if database is None or config is None:
@@ -245,7 +245,7 @@ def main(config=None, database=None):
245
245
  )
246
246
 
247
247
  PredictionJobLoop(context, prediction_jobs=prediction_jobs).map(
248
- make_solar_prediction_pj, context
248
+ make_solar_prediction_pj, context, kwargs=kwargs
249
249
  )
250
250
 
251
251
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: openstef
3
- Version: 3.4.31
3
+ Version: 3.4.33
4
4
  Summary: Open short term energy forecaster
5
5
  Home-page: https://github.com/OpenSTEF/openstef
6
6
  Author: Alliander N.V
@@ -18,6 +18,10 @@ openstef/data/dutch_holidays_2020-2022.csv
18
18
  openstef/data/dutch_holidays_2020-2022.csv.license
19
19
  openstef/data/pv_single_coefs.csv
20
20
  openstef/data/pv_single_coefs.csv.license
21
+ openstef/data/dazls_model_3.4.24/dazls_stored_3.4.24_baseline_model.z
22
+ openstef/data/dazls_model_3.4.24/dazls_stored_3.4.24_baseline_model.z.license
23
+ openstef/data/dazls_model_3.4.24/dazls_stored_3.4.24_model_card.md
24
+ openstef/data/dazls_model_3.4.24/dazls_stored_3.4.24_model_card.md.license
21
25
  openstef/data_classes/__init__.py
22
26
  openstef/data_classes/data_prep.py
23
27
  openstef/data_classes/model_specifications.py
@@ -29,7 +29,7 @@ def read_long_description_from_readme():
29
29
 
30
30
  setup(
31
31
  name="openstef",
32
- version="3.4.31",
32
+ version="3.4.33",
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(),
@@ -43,7 +43,7 @@ setup(
43
43
  # for more information
44
44
  package_data={
45
45
  # Include anything in the data directory
46
- "openstef": ["data/*", "data/dazls_model_3.4.7/*", "*.license"]
46
+ "openstef": ["data/*", "data/**/*", "*.license"]
47
47
  },
48
48
  python_requires=">=3.9.0",
49
49
  install_requires=read_requirements_from_file(),
File without changes
File without changes
File without changes
File without changes
File without changes