Back to models
Forecaster

TransformedTargetForecaster

Meta-estimator for forecasting transformed time series.

Pipeline functionality to apply transformers to endogeneous time series, y. The exogenous data, X, is not transformed. To transform X, the ForecastingPipeline can be used.

For a list t1, t2, …, tN, f, tp1, tp2, …, tpM,

where t[i] and tp[i] are transformers (t to pre-, tp to post-process), and f is an sktime forecaster, the pipeline behaves as follows:

fit(y, X, fh) - changes state by running t1.fit_transform

with X=y, y=X, then t2.fit_transform on X= the output of t1.fit_transform, y=X, etc, sequentially, with t[i] receiving the output of t[i-1] as X, then running f.fit with y being the output of t[N], and X=X, then running tp1.fit_transform with X=y, y=X, then tp2.fit_transform on X= the output of tp1.fit_transform, etc sequentially, with tp[i] receiving the output of tp[i-1],

predict(X, fh) - result is of executing f.predict, with X=X, fh=fh,

then running tN.inverse_transform with X= the output of f, y=X, then t2.inverse_transform on X= the output of t1.inverse_transform, etc, sequentially, with t[i-1] receiving the output of t[i] as X, then running tp1.transform with X= the output of t1, y=X, then tp2.transform on X= the output of tp1.transform, etc, sequentially, with tp[i] receiving the output of tp[i-1]. The output of tpM is returned, or of t1.inverse_transform if M=0.

predict_interval(X, fh), predict_quantiles(X, fh) - as predict(X, fh),

with predict_interval or predict_quantiles substituted for predict

predict_var, predict_proba - uses base class default to obtain

crude normal estimates from predict_quantiles.

get_params, set_params uses sklearn compatible nesting interface:

  • if list is unnamed, names are generated as names of classes

  • if names are non-unique, f"_{str(i)}" is appended to each name string where i is the total count of occurrence of a non-unique string inside the list of names leading up to it (inclusive)

TransformedTargetForecaster can also be created by using the magic

multiplication on any forecaster, i.e., if my_forecaster inherits from BaseForecaster, and my_t1, my_t2, my_tp inherit from BaseTransformer, then, for instance, my_t1 * my_t2 * my_forecaster * my_tp will result in the same object as obtained from the constructor TransformedTargetForecaster([my_t1, my_t2, my_forecaster, my_tp]). Magic multiplication can also be used with (str, transformer) pairs, as long as one element in the chain is a transformer.

Quickstart

python
from sktime.forecasting.compose import TransformedTargetForecaster

estimator = TransformedTargetForecaster(steps)

Parameters(1)

stepslist of sktime transformers and forecasters, or

list of tuples (str, estimator) of sktime transformers or forecasters. The list must contain exactly one forecaster. These are “blueprint” transformers resp forecasters, forecaster/transformer states do not change when fit is called.

Examples

>>> from sktime.datasets import load_airline
>>> from sktime.forecasting.naive import NaiveForecaster
>>> from sktime.forecasting.compose import TransformedTargetForecaster
>>> from sktime.transformations.impute import Imputer
>>> from sktime.transformations.detrend import Detrender
>>> from sktime.transformations.exponent import ExponentTransformer
>>> y = load_airline () Example 1: string/estimator pairs
>>> pipe = TransformedTargetForecaster (steps = [
... ("imputer", Imputer (method = "mean")),
... ("detrender", Detrender ()),
... ("forecaster", NaiveForecaster (strategy = "drift")),
... ])
>>> pipe. fit (y) TransformedTargetForecaster(
... )
>>> y_pred = pipe. predict (fh = [1, 2, 3 ]) Example 2: without strings
>>> pipe = TransformedTargetForecaster ([
... Imputer (method = "mean"),
... Detrender (),
... NaiveForecaster (strategy = "drift"),
... ExponentTransformer (),
... ]) Example 3: using the dunder method
>>> forecaster = NaiveForecaster (strategy = "drift")
>>> imputer = Imputer (method = "mean")
>>> pipe = imputer * Detrender () * forecaster * ExponentTransformer ()