etna.reconciliation.TopDownReconciliator#
- class TopDownReconciliator(target_level: str, source_level: str, period: int, method: str)[source]#
Bases:
BaseReconciliator
Top-down reconciliation methods.
Notes
Top-down reconciliation methods support only non-negative data.
Create top-down reconciliator from
source_level
totarget_level
.- Parameters:
target_level (str) – Level to be reconciled from the forecasts.
source_level (str) – Level to be forecasted.
period (int) – Period length for calculation reconciliation proportions.
method (str) –
Proportions calculation method. Selects last
period
timestamps for estimation. Currently supported options:AHP - Average historical proportions
PHA - Proportions of the historical averages
Methods
aggregate
(ts)Aggregate the dataset to the
source_level
.fit
(ts)Fit the reconciliator parameters.
reconcile
(ts)Reconcile the forecasts in the dataset.
set_params
(**params)Return new object instance with modified parameters.
to_dict
()Collect all information about etna object in dict.
Attributes
This class stores its
__init__
parameters as attributes.- fit(ts: TSDataset) TopDownReconciliator [source]#
Fit the reconciliator parameters.
- Parameters:
ts (TSDataset) – TSDataset on the level which is lower or equal to
target_level
,source_level
.- Returns:
Fitted instance of reconciliator.
- Return type:
- set_params(**params: dict) Self [source]#
Return new object instance with modified parameters.
Method also allows to change parameters of nested objects within the current object. For example, it is possible to change parameters of a
model
in aPipeline
.Nested parameters are expected to be in a
<component_1>.<...>.<parameter>
form, where components are separated by a dot.- Parameters:
**params (dict) – Estimator parameters
- Returns:
New instance with changed parameters
- Return type:
Self
Examples
>>> from etna.pipeline import Pipeline >>> from etna.models import NaiveModel >>> from etna.transforms import AddConstTransform >>> model = NaiveModel(lag=1) >>> transforms = [AddConstTransform(in_column="target", value=1)] >>> pipeline = Pipeline(model, transforms=transforms, horizon=3) >>> pipeline.set_params(**{"model.lag": 3, "transforms.0.value": 2}) Pipeline(model = NaiveModel(lag = 3, ), transforms = [AddConstTransform(in_column = 'target', value = 2, inplace = True, out_column = None, )], horizon = 3, )