-
Notifications
You must be signed in to change notification settings - Fork 146
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[ENH] Added R-Clustering clusterer to aeon #2382
base: main
Are you sure you want to change the base?
Conversation
Thank you for contributing to
|
hi, thanks for this but if we include this clusterer we want it to use our version of Rocket transformers which are optimised for numba |
sure, I will try to reimplement it and use aeon Rocket transformers |
…_branch # Conflicts: # aeon/clustering/_r_cluster.py
Hi @chrisholder, I discovered that the issue was caused by how self._random_state = check_random_state(self.random_state) was being handled. Removing it resolved the problem, though I'm not entirely sure why. Perhaps @MatthewMiddlehurst could provide some insights. Additionally, I removed the estimator as an input for the class, as the research paper only utilized KMeans |
Looks good - Final thing before approving have you checked equivalence to the original. It's doesnt have to be completely 100% the same (due to random state). However, we should check for 10 or so datasets (which you can load from aeon.datasets) that the scores are similar. This doesn't need to be an actual test in aeon but if you could run it locally and post the adjusted rand index using sklearn (https://scikit-learn.org/stable/modules/generated/sklearn.metrics.adjusted_rand_score.html) the we can check this version matches the original! |
I tested the ARI scores between the this RCluster and the original RCluster on the experimental dataset provided in the original RCluster code. Here are the results: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Not ready sorry.
Please add some code comments explaining the use of private functions from another estimator and the multiple PCAs if you can. Don't usually request it but it is pretty confusing as is.
Class attributes set in fit
and fit_predict
(self.) should start with _ (protected/private) or end with _ (public and should be documented in the docstring under Attributes)
"n_clusters": 8, | ||
"random_state": 1, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
don't set these here
@chrisholder While reviewing the code, I identified an architectural issue. The R cluster implementation cannot have separate fit and predict methods because it relies on PCA for dimensionality reduction. For example, if PCA determines the optimal dimension during training to be 13, and we attempt to predict on test data with fewer than 13 dimensions, it results in an error. Even if we create a new PCA and apply fit_transform on the test data, we would need to retrain KMeans, which is what I did. However, I don't believe this is an optimal solution. Could you suggest a better approach to handle this scenario? |
PCA has a separate fit and transform step, so you can PCA fit_transform in fit, save the transform then just PCA transform in transform? |
If we transform test data(while predicting that is predicting this test data without fitting it using _predict method) with a number of features less than the n_components of PCA, it will cause an error, So we cannot predict test data having number of features less than that of n_components of PCA. |
Reference Issues/PRs
#2132
What does this implement/fix? Explain your changes.
added R clustering model for aeon
Does your contribution introduce a new dependency? If yes, which one?
no
Any other comments?
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.For developers with write access