ClassifierPipeline
Pipeline of transformers and a classifier.
The ClassifierPipeline compositor chains transformers and a single classifier. The pipeline is constructed with a list of sktime transformers, plus a classifier,
i.e., estimators following the BaseTransformer resp BaseClassifier 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 classifier clf,
the pipeline behaves as follows:
fit(X, y)- changes styte by runningtrafo1.fit_transformonX,them
trafo2.fit_transformon the output oftrafo1.fit_transform, etc sequentially, withtrafo[i]receiving the output oftrafo[i-1], and then runningclf.fitwithXbeing the output oftrafo[N], andyidentical with the input toself.fit
predict(X) - result is of executing trafo1.transform, trafo2.transform, etc
with trafo[i].transform input = output of trafo[i-1].transform, then running clf.predict on the output of trafoN.transform, and returning the output of clf.predict
predict_proba(X) - result is of executing trafo1.transform, trafo2.transform,
etc, with trafo[i].transform input = output of trafo[i-1].transform, then running clf.predict_proba on the output of trafoN.transform, and returning the output of clf.predict_proba
get_params,set_paramsusessklearncompatible nesting interfaceif list is unnamed, names are generated as names of classes if names are non-unique,
f"_{str(i)}"is appended to each name stringwhere
iis the total count of occurrence of a non-unique string inside the list of names leading up to it (inclusive)ClassifierPipelinecan also be created by using the magic multiplication- on any classifier, i.e., if
my_clfinherits fromBaseClassifier, and
my_trafo1,my_trafo2inherit fromBaseTransformer, then, for instance,my_trafo1 * my_trafo2 * my_clfwill result in the same object as obtained from the constructorClassifierPipeline(classifier=my_clf, transformers=[my_trafo1, my_trafo2])- magic multiplication can also be used with (str, transformer) pairs,
as long as one element in the chain is a transformer
- on any classifier, i.e., if
Schnellstart
from sktime.classification.compose import ClassifierPipeline
estimator = ClassifierPipeline(classifier, transformers)Parameter(2)
- classifiersktime classifier, i.e., estimator inheriting from BaseClassifier
this is a “blueprint” classifier, state does not change when
fitis called- transformerslist 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.pca import PCATransformer
>>> from sktime.classification.interval_based import TimeSeriesForestClassifier
>>> from sktime.datasets import load_unit_test
>>> from sktime.classification.compose import ClassifierPipeline
>>> X_train, y_train = load_unit_test (split = "train")
>>> X_test, y_test = load_unit_test (split = "test")
>>> pipeline = ClassifierPipeline (
... TimeSeriesForestClassifier (n_estimators = 5), [PCATransformer ()]
... )
>>> pipeline. fit (X_train, y_train) ClassifierPipeline(
... )
>>> y_pred = pipeline. predict (X_test) Alternative construction via dunder method:
>>> pipeline = PCATransformer () * TimeSeriesForestClassifier (n_estimators = 5)