TabularToSeriesAdaptor
Adapt scikit-learn transformation interface to time series setting.
This is useful for applying scikit-learn tabular transformations to series, but only works with transformations that do not require multiple instances for fitting.
The adaptor behaves as follows.
If fit_in_transform = False and X is a series (pd.DataFrame, pd.Series, np.ndarray):
fit(X) fits a clone of transformer to X (considered as a table)
transform(X) applies transformer.transform to X and returns the result
inverse_transform(X) applies transformer.inverse_transform to X
If fit_in_transform = True and X is a series (pd.DataFrame, pd.Series, np.ndarray):
fit is empty
transform(X) applies transformer.fit(X).transform(X) to X, considered as a table, and returns the result
inverse_transform(X) applies transformer.fit(X).inverse_transform(X) to X
- If
fit_in_transform = False, andXis of a panel/hierarchical type: fit(X)fits a clone oftransformerfor each individual seriesxinXtransform(X)appliestransform(x)of the clone belonging tox(where the index of x in transform equals the index of x in fit), for each individual seriesxinX, and returns the resultinverse_transform(X)appliestransform(x)of the clone belonging tox(where the index of x in transform equals the index ofxin fit), for each individual seriesxinX, and returns the resultNote: instances indices in
transform/inverse_transformmust be equal to those seen infit
- If
fit_in_transform = True, andXis of a panel/hierarchical type: fitis emptytransform(X)appliestransformer.fit(x).transform(x)to all individual seriesxinXand returns the resultinverse_transform(X)appliestransformer.fit(x).inverse_transform(x)to all individual seriesxinXand returns the result
- WARNING: if
fit_in_transformis set toFalse, when applied to Panel or Hierarchical data, the resulting transformer will identify individual series in test set with series indices in training set, on which instances were fit in particular, transform will not work if number of instances and indices of instances in transform are different from those in fit
- WARNING: if
fit_in_transformis set toTrue, then each series in the test set will be transformed as batch by fit-predict, this may cause information leakage in a forecasting setting (but not in a time series classification/regression/clustering setting, because in these settings the independent samples are the individual series)
Whether y is passed to transformer methods is controlled by pass_y. If the inner transformer has non-defaulting y args, the default behaviour is to pass y to fit, fit_transform, or transform. If no y arg is present, or if it has a default value, y is not passed.
If the passed transformer accepts only y in fit and transform, then pass_y is ignored, and X is plugged into the y argument.
Quickstart
from sktime.transformations.adapt import TabularToSeriesAdaptor
estimator = TabularToSeriesAdaptor(transformer, fit_in_transform=False, pass_y='auto', input_type=None, pooling='local')Parameters(5)
- transformersklearn transformer, BaseEstimator descendant instance
- scikit-learn-like transformer to fit and apply to series. This is used as a “blueprint” and not fitted or otherwise mutated.
- fit_in_transform: bool, optional, default=False
whether transformer_ should be fitted in transform (True), or in fit (False).
recommended setting in forecasting (single series or hierarchical):
Falserecommended setting in ts classification, regression, clustering:
True
- pass_ystr, optional, one of “auto” (default), “fit”, “always”, “never”
Whether to pass y to transformer methods of the
transformerclone.“auto”: passes
yto methodsfit,transform,fit_transform,inverse_transform, if and only ifyis a named arg of either method without default. Note: passesyeven if it isNone“fit”: passes
yto methodfit, but not totransform. Note: passesyeven if it isNone, or if not a named arg“always”: passes
yto all methods,fit,transform,inverse_transform. Note: passesyeven if it isNone, or if not a named arg“never”: never passes
yto any method.
- input_typestr, one of “numpy” (default), “pandas”, optional
type of data passed to the
sklearntransformer“numpy”: 2D
np.ndarray“pandas”:
pd.DataFrame, with column names passed to transformer. column names are coerced to strings if not already, row index is reset toRangeIndex.
- poolingstr, one of “local” (default), “global”
whether to apply transformer to each series individually (local), or to all series at once (global)
“local”: applies transformer to each series individually
“global”: applies transformer to all series at once, pooled to a single 2D
np.ndarrayorpd.DataFrame
Examples
>>> from sktime.transformations.adapt import TabularToSeriesAdaptor
>>> from sklearn.preprocessing import MinMaxScaler
>>> from sktime.datasets import load_airline
>>> y = load_airline ()
>>> transformer = TabularToSeriesAdaptor (MinMaxScaler ())
>>> y_hat = transformer. fit_transform (y)