binder

[19]:
import warnings

warnings.filterwarnings("ignore")
from sklearn.linear_model import RidgeClassifierCV
from sklearn.pipeline import make_pipeline

from aeon.datasets import load_basic_motions
from aeon.transformations.collection import channel_selection
from aeon.transformations.collection.rocket import Rocket

X_train, y_train = load_basic_motions(split="train")
X_test, y_test = load_basic_motions(split="test")
X_train.shape, X_test.shape
[19]:
((40, 6, 100), (40, 6, 100))

1 Channel Selection in a Pipeline#

ElbowClassPairwise and ElbowClassSum are aeon transformers, so can be used in a pipeline with other transformers and suitable classifiers.

[15]:
# cs = channel_selection.ElbowClassSum()  # ECS
cs = channel_selection.ElbowClassPairwise(prototype_type="mad")  # ECP
rocket_pipeline = make_pipeline(cs, Rocket(), RidgeClassifierCV())
[16]:
rocket_pipeline.fit(X_train, y_train)
rocket_pipeline.score(X_test, y_test)
[16]:
1.0

4 Identify channels selected#

We can recover the selected channels from the transformer, and recover the centroids uses in the selection process. We can of course do this directly from the transform

[17]:
X_selected = cs.fit(X_train, y_train)
cs.channels_selected_idx
[17]:
[0, 1]
[18]:
cs.distance_frame
[18]:
Centroid_badminton_running Centroid_badminton_standing Centroid_badminton_walking Centroid_running_standing Centroid_running_walking Centroid_standing_walking
0 72.883920 37.486167 32.843063 95.139594 89.360656 9.786164
1 82.974076 19.586588 28.068407 87.661718 89.326726 21.778564
2 21.381712 18.196532 17.131596 26.885354 24.524588 4.834320
3 11.289843 9.402970 9.932407 7.750558 8.613671 3.744539
4 8.140510 6.623146 6.877631 6.112858 6.304372 1.546983
5 29.041896 9.025905 12.876751 27.785727 28.527294 9.650223
[ ]:


Generated using nbsphinx. The Jupyter notebook can be found here.