SklearnRegressorPipeline
Pipeline of transformers and a regressor.
- The SklearnRegressorPipeline chains transformers and an single regressor.
Similar to RegressorPipeline, but uses a tabular sklearn regressor.
- The pipeline is constructed with a list of sktime transformers, plus a regressor,
i.e., transformers following the BaseTransformer interface, regressor follows the scikit-learn regressor interface.
- The transformer list can be unnamed - a simple list of transformers -
or string named - a list of pairs of string, estimator.
- For a list of transformers trafo1, trafo2, …, trafoN and a regressor reg,
the pipeline behaves as follows:
- fit(X, y) - changes styte by running trafo1.fit_transform on X,
them trafo2.fit_transform on the output of trafo1.fit_transform, etc sequentially, with trafo[i] receiving the output of trafo[i-1], and then running reg.fit with X the output of trafo[N] converted to numpy, and y identical with the input to self.fit. X is converted to numpyflat mtype if X is of Panel scitype; X is converted to numpy2D mtype if X is of Table scitype.
- predict(X) - result is of executing trafo1.transform, trafo2.transform, etc
with trafo[i].transform input = output of trafo[i-1].transform, then running reg.predict on the numpy converted output of trafoN.transform, and returning the output of reg.predict. Output of trasfoN.transform is converted to numpy, as in fit.
- 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)
- SklearnRegressorPipeline can also be created by using the magic multiplication
- between sktime transformers and sklearn regressors,
and my_trafo1, my_trafo2 inherit from BaseTransformer, then, for instance, my_trafo1 * my_trafo2 * my_reg will result in the same object as obtained from the constructor SklearnRegressorPipeline(regressor=my_reg, transformers=[t1, t2])
- magic multiplication can also be used with (str, transformer) pairs,
as long as one element in the chain is a transformer
Schnellstart
from sktime.regression.compose import SklearnRegressorPipeline
estimator = SklearnRegressorPipeline(regressor, transformers)Parameter(2)
- regressorsklearn regressor, i.e., inheriting from sklearn RegressorMixin
- this is a “blueprint” regressor, state does not change when fit is called
- transformerslist of sktime transformers, or
- list of tuples (str, transformer) of sktime transformers these are “blueprint” transformers, states do not change when fit is called
Beispiele
>>> from sklearn.neighbors import KNeighborsRegressor
>>> from sktime.datasets import load_unit_test
>>> from sktime.regression.compose import SklearnRegressorPipeline
>>> from sktime.transformations.exponent import ExponentTransformer
>>> from sktime.transformations.summarize import SummaryTransformer
>>> X_train, y_train = load_unit_test (split = "train")
>>> X_test, y_test = load_unit_test (split = "test")
>>> t1 = ExponentTransformer ()
>>> t2 = SummaryTransformer ()
>>> pipeline = SklearnRegressorPipeline (KNeighborsRegressor (), [t1, t2 ])
>>> pipeline = pipeline. fit (X_train, y_train)
>>> y_pred = pipeline. predict (X_test) Alternative construction via dunder method:
>>> pipeline = t1 * t2 * KNeighborsRegressor ()