Skip to content

Commit 2b726c0

Browse files
committed
fix(STEF-2854): handle empty input in combiner predict
_predict_quantile now returns empty Series when input data is empty after inner join, preventing lightgbm from crashing with 'Input data must be 2 dimensional and non empty.' Signed-off-by: Egor Dmitriev <[email protected]> Signed-off-by: Egor Dmitriev <[email protected]>
1 parent a62459a commit 2b726c0

2 files changed

Lines changed: 4 additions & 2 deletions

File tree

packages/openstef-meta/src/openstef_meta/models/ensemble_forecasting_model.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -585,14 +585,14 @@ def _fit_combiner(
585585

586586
if val_ensemble_dataset is not None:
587587
prediction_val = self._predict_combiner(val_ensemble_dataset, features=features_val)
588-
metrics_val = self._calculate_score(prediction=prediction_val)
588+
metrics_val = self._calculate_score(prediction=prediction_val) if not prediction_val.data.empty else None
589589
else:
590590
prediction_val = None
591591
metrics_val = None
592592

593593
if test_ensemble_dataset is not None:
594594
prediction_test = self._predict_combiner(test_ensemble_dataset, features=features_test)
595-
metrics_test = self._calculate_score(prediction=prediction_test)
595+
metrics_test = self._calculate_score(prediction=prediction_test) if not prediction_test.data.empty else None
596596
else:
597597
prediction_test = None
598598
metrics_test = None

packages/openstef-meta/src/openstef_meta/models/forecast_combiners/learned_weights_combiner.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -286,6 +286,8 @@ def _predict_quantile(
286286
quantile: Quantile,
287287
) -> pd.Series:
288288
input_data = self._prepare_input_data(dataset=dataset, additional_features=additional_features)
289+
if input_data.empty:
290+
return pd.Series(dtype=float, index=dataset.index)
289291
weights = self._predict_weights(base_predictions=input_data, quantile=quantile)
290292

291293
if self.hard_selection:

0 commit comments

Comments
 (0)