MultiplexTransformer
Facilitate an AutoML based selection of the best transformer.
When used in combination with either TransformedTargetForecaster or ForecastingPipeline in combination with ForecastingGridSearchCV MultiplexTransformer provides a framework for transformer selection. Through selection of the appropriate pipeline (ie TransformedTargetForecaster vs ForecastingPipeline) the transformers in MultiplexTransformer will either be applied to exogenous data, or to the target data.
MultiplexTransformer delegates all transforming tasks (ie, calls to fit, transform, inverse_transform, and update) to a copy of the transformer in transformers whose name matches selected_transformer. All other transformers in transformers will be ignored.
Quickstart
from sktime.transformations.compose import MultiplexTransformer
estimator = MultiplexTransformer(transformers: list, selected_transformer=None)Parameters(2)
- transformerslist of sktime transformers, or
- list of tuples (str, estimator) of named sktime transformers MultiplexTransformer can switch (“multiplex”) between these transformers. Note - all the transformers passed in “transformers” should be thought of as blueprints. Calling transformation functions on MultiplexTransformer will not change their state at all. - Rather a copy of each is created and this is what is updated.
- selected_transformer: str or None, optional, Default=None.
- If str, must be one of the transformer names.
If passed in transformers were unnamed then selected_transformer must coincide with auto-generated name strings. To inspect auto-generated name strings, call get_params.
Examples
>>> from sktime.datasets import load_shampoo_sales
>>> from sktime.forecasting.naive import NaiveForecaster
>>> from sktime.transformations.compose import MultiplexTransformer
>>> from sktime.transformations.impute import Imputer
>>> from sktime.forecasting.compose import TransformedTargetForecaster
>>> from sktime.forecasting.model_selection import ForecastingGridSearchCV
>>> from sktime.split import ExpandingWindowSplitter
>>> # create MultiplexTransformer:
>>> multiplexer = MultiplexTransformer (transformers = [
... ("impute_mean", Imputer (method = "mean", missing_values = - 1)),
... ("impute_near", Imputer (method = "nearest", missing_values = - 1)),
... ("impute_rand", Imputer (method = "random", missing_values = - 1))])
>>> cv = ExpandingWindowSplitter (
... initial_window = 24,
... step_length = 12,
... fh = [1, 2, 3 ])
>>> pipe = TransformedTargetForecaster (steps = [
... ("multiplex", multiplexer),
... ("forecaster", NaiveForecaster ())
... ])
>>> gscv = ForecastingGridSearchCV (
... cv = cv,
... param_grid = { "multiplex__selected_transformer":
... ["impute_mean", "impute_near", "impute_rand" ]},
... forecaster = pipe,
... )
>>> y = load_shampoo_sales ()
>>> # randomly make some of the values nans:
>>> y. loc [y. sample (frac = 0.1). index ] = - 1
>>> gscv = gscv. fit (y)