StackingCombiner#

class openstef_meta.models.forecast_combiners.stacking_combiner.StackingCombiner(**data: Any) None[source]

Bases: ForecastCombiner

Stacking combiner: one meta-regressor per quantile on top of base forecaster outputs.

Accepts a template meta_forecaster (a fully-configured Forecaster instance). During initialisation the template is cloned once per quantile — each clone receives a single quantile while horizons are taken from the combiner’s own configuration.

Parameters:

data (Any)

meta_forecaster: Forecaster
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.

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

Clone the template forecaster once per quantile.

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

Get feature importance scores for this model.

Returns DataFrame with feature names as index and quantiles as columns. Each quantile represents the importance distribution across multiple model training runs or folds.

Returns:

DataFrame with feature names as index and quantile columns. Values represent normalized importance scores summing to 1.0.

Note

The returned DataFrame must have feature names as index and quantile columns in format ‘quantile_PXX’ (e.g., ‘quantile_P50’, ‘quantile_P95’). All quantile values must be between 0 and 1.

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]