TransformerPipeline
Pipeline of transformers compositor.
The TransformerPipeline compositor allows to chain transformers. The pipeline is constructed with a list of sktime transformers, i.e. estimators following the BaseTransformer interface. The 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, the pipeline behaves as follows:
fitChanges state by running
trafo1.fit_transform, trafo2.fit_transform` etc sequentially, withtrafo[i]receiving the output oftrafo[i-1]
transformResult is of executing
trafo1.transform,trafo2.transform, etc withtrafo[i].transforminput = output oftrafo[i-1].transform, and returning the output oftrafoN.transform
inverse_transformResult is of executing
trafo[i].inverse_transform, withtrafo[i].inverse_transforminput = outputtrafo[i-1].inverse_transform, and returning the output oftrafoN.inverse_transform
updateChanges state by chaining
trafo1.update,trafo1.transform,trafo2.update,trafo2.transform, …,trafoN.update, wheretrafo[i].updateandtrafo[i].transformreceive as input the output oftrafo[i-1].transform
For transformers in the pipeline that use the y argument, the y argument passed to TransformerPipeline.fit or transform is passed to all such transformers in the pipeline. No transformations or inverse transformations are applied to y in the pipeline.
The 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)
A TransformerPipeline can also be created by using the magic multiplication on any transformer, i.e., any estimator inheriting from BaseTransformer for instance, my_trafo1 * my_trafo2 * my_trafo3 will result in the same object as obtained from the constructor TransformerPipeline([my_trafo1, my_trafo2, my_trafo3]) A magic multiplication can also be used with (str, transformer) pairs, as long as one element in the chain is a transformer
Schnellstart
from sktime.transformations.compose import TransformerPipeline
estimator = TransformerPipeline(steps)Parameter(1)
- stepslist of sktime transformers, or
list of tuples (str, transformer) of sktime transformers these are “blueprint” transformers, states do not change when
fitis called
Beispiele
>>> from sktime.transformations.compose import TransformerPipeline
>>> from sktime.transformations.exponent import ExponentTransformer
>>> t1 = ExponentTransformer (power = 2)
>>> t2 = ExponentTransformer (power = 0.5) Example 1, option A: construct without strings (unique names are generated for the two components t1 and t2)
>>> pipe = TransformerPipeline (steps = [t1, t2 ]) Example 1, option B: construct with strings to give custom names to steps
>>> pipe = TransformerPipeline (
... steps = [
... ("trafo1", t1),
... ("trafo2", t2),
... ]
... ) Example 1, option C: for quick construction, the * dunder method can be used
>>> pipe = t1 * t2 Example 2: sklearn transformers can be used in the pipeline. If applied to Series, sklearn transformers are applied by series instance. If applied to Table, sklearn transformers are applied to the table as a whole.
>>> from sklearn.preprocessing import StandardScaler
>>> from sktime.transformations.summarize import SummaryTransformer This applies the scaler per series, then summarizes:
>>> pipe = StandardScaler () * SummaryTransformer () This applies the sumamrization, then scales the full summary table:
>>> pipe = SummaryTransformer () * StandardScaler () This scales the series, then summarizes, then scales the full summary table:
>>> pipe = StandardScaler () * SummaryTransformer () * StandardScaler ()