[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.