Repository navigation
[ENH] Add ShapeleterTransform and ShapeleterClassifier (#3888) - #3890
shivamkumxr wants to merge 15 commits into
Conversation
Thank you for contributing to
|
|
Hi, thanks for taking this. For this to go in, we are going to need a few things:
|
|
Hi @baraline, thank you for the feedback and review!
I will work on the benchmark setup and profiling next. |
Benchmark Parity & Numba Optimization Update
The classification accuracies match expected shapelet baseline performance (e.g. 100% on GunPoint, ~94% on ItalyPowerDemand).
|
|
I apologize for only seeing the message today. |
|
|
|
|
|
Hi @CCHe64, thank you very much for reviewing the code and confirming the reproduction consistency! Addressing your specific points:
|
|
It is feasible to start with a small-scale UCR setup. It is recommended to run the experiments on the full set of 85 UCR datasets only after all code improvements have been completed. @shivamkumxr @baraline |
|
Thank you for the guidance and feedback! Here are the updates and benchmark numbers: 1. Multi-Dataset Benchmark Validation (Representative 10-Dataset UCR Subset)Following the small-scale benchmark suggestion, I evaluated standard train/test splits across 10 diverse UCR datasets using
The results show strong consistency with reported reproduction baselines (achieving 100% on GunPoint, Coffee, Plane, and Trace, and 90%+ across most remaining benchmarks). We can run the full 85-dataset suite once all refactorings are finalized. 2. Recent Fixes & Optimizations
3. Next Steps
|
…torized CSR matrix
|
Yes, please follow any naming convention already in place in the package. As most of this seems AI generated (which I have no issue with if you understand what you are doing), I'll expect an in depth review and benchmark once the code is in a stable state to compare on the full UCR. I'll use my own computing resources to run that and compare against @CCHe64 results. This is going to take a bit of time to review and benchmark, so no rush ! |
ShapeleterTransformer and ShapeleterClassifier (#3888)|
Quick update:
Code is stable and ready for your review and the full UCR benchmark whenever you have time! |
Reference Issues/PRs
Fixes #3888
What does this implement/fix? Explain your changes.
This PR implements the Shapeleter method following the phased roadmap proposed in #3888:
ShapeleterTransformer(aeon/transformations/collection/shapelet_based/_shapeleter.py):RandomDilatedShapeletTransformas the candidate shapelet extraction backbone.scipy.sparseincidence matrices (avoiding external graph libraries likehypergraphx).infpadding cleanly._CombinationFusion).ShapeleterClassifier(aeon/classification/shapelet_based/_shapeleter.py):ShapeleterTransformerwith a pipeline ofStandardScaler(with_mean=False)andRidgeClassifierCV.aeonestimator tags.Packaging & Testing:
__init__.pyfiles.aeon/transformations/collection/shapelet_based/tests/test_shapeleter.pyandaeon/classification/shapelet_based/tests/test_shapeleter.py.aeon.testing.estimator_checking.check_estimator(19/19 checks passed for transformer, 21/21 checks passed for classifier).Does your contribution introduce a new dependency? If yes, which one?
No. The original implementation relied on PyTorch (for Adam scalar tuning) and
hypergraphx. Both were eliminated in favor of existing core dependencies (numpy,scipy.sparse, andscikit-learn).Any other comments?
Opened as a draft PR for initial maintainer review on class structure and integration.
PR checklist
For all contributions
For new estimators and functions
__maintainer__at the top of relevant files and want to be contacted regarding its maintenance. Unmaintained files may be removed. This is for the full file, and you should not add yourself if you are just making minor changes or do not want to help maintain its contents.