SklearnClassifierPipeline
Pipeline of transformers and a classifier.
- The
SklearnClassifierPipelinechains transformers and an single classifier. Similar to
ClassifierPipeline, but uses a tabularsklearnclassifier.- The pipeline is constructed with a list of sktime transformers, plus a classifier,
i.e., transformers following the BaseTransformer interface, classifier follows the
scikit-learnclassifier 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.fitwithXthe output oftrafo[N]converted to numpy, andyidentical with the input toself.fit.Xis converted tonumpyflatmtype ifXis ofPanelscitype;Xis converted tonumpy2Dmtype ifXis ofTablescitype.
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 numpy converted output of trafoN.transform, and returning the output of clf.predict. Output of trasfoN.transform is converted to numpy, as in fit.
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. Output of trasfoN.transform is converted to numpy, as in fit.
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)SklearnClassifierPipelinecan also be created by using the magic multiplication- between
sktimetransformers andsklearnclassifiers, and
my_trafo1,my_trafo2inherit fromBaseTransformer, then, for instance,my_trafo1 * my_trafo2 * my_clfwill result in the same object as obtained from the constructorSklearnClassifierPipeline(classifier=my_clf, transformers=[t1, t2])- magic multiplication can also be used with (str, transformer) pairs,
as long as one element in the chain is a transformer
- between
Schnellstart
from sktime.classification.compose import SklearnClassifierPipeline
estimator = SklearnClassifierPipeline(classifier, transformers)Parameter(2)
- classifiersklearn classifier, i.e., inheriting from sklearn ClassifierMixin
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 sklearn.neighbors import KNeighborsClassifier
>>> from sktime.transformations.exponent import ExponentTransformer
>>> from sktime.transformations.summarize import SummaryTransformer
>>> from sktime.datasets import load_unit_test
>>> from sktime.classification.compose import SklearnClassifierPipeline
>>> X_train, y_train = load_unit_test (split = "train")
>>> X_test, y_test = load_unit_test (split = "test")
>>> t1 = ExponentTransformer ()
>>> t2 = SummaryTransformer ()
>>> pipeline = SklearnClassifierPipeline (KNeighborsClassifier (), [t1, t2 ])
>>> pipeline = pipeline. fit (X_train, y_train)
>>> y_pred = pipeline. predict (X_test) Alternative construction via dunder method:
>>> pipeline = t1 * t2 * KNeighborsClassifier ()