WeightsCombiner#

class openstef_meta.models.forecast_combiners.learned_weights_combiner.WeightsCombiner(**data: Any) None[source]

Bases: ForecastCombiner

Combines base forecaster predictions with a classification approach.

A classifier predicts per-timestep model weights. Depending on hard_selection, the combiner either picks the best forecaster (hard) or blends using predicted probabilities (soft).

Parameters:

data (Any)

hyperparams: HyperParams
property hparams: HyperParams

Combiner hyperparameters.

Concrete combiners implement this by returning their narrowed hyperparams field, giving callers a polymorphic read-only view while each subclass keeps full type safety on its own field.

hard_selection: bool
model_post_init(_context: object, /) None[source]

Validate hyperparams and initialize per-quantile classifiers.

Raises:

TypeError – If hyperparams does not have a get_classifier() method.

Parameters:

_context (object)

Return type:

None

property is_fitted: bool

Whether the combiner has been fitted.

fit(data: EnsembleForecastDataset, data_val: EnsembleForecastDataset | None = None, additional_features: ForecastInputDataset | None = None) None[source]

Fit the combiner using base forecaster predictions.

Parameters:
Return type:

None

predict(data: EnsembleForecastDataset, additional_features: ForecastInputDataset | None = None) ForecastDataset[source]

Generate final predictions based on base forecaster predictions.

Parameters:
Returns:

Combined forecast dataset.

Return type:

ForecastDataset

predict_contributions(data: EnsembleForecastDataset, additional_features: ForecastInputDataset | None = None) TimeSeriesDataset[source]

Per-sample feature/model contributions for the combined prediction.

Parameters:
Returns:

TimeSeriesDataset where columns are features/models and rows are timesteps.

Return type:

TimeSeriesDataset

property feature_importances: DataFrame

Feature importances from the internal classifiers, per quantile.

model_config: ClassVar[ConfigDict] = {'arbitrary_types_allowed': True, 'extra': 'ignore', 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

quantiles: list[Quantile]
horizons: list[LeadTime]