-
Notifications
You must be signed in to change notification settings - Fork 1
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
Refactor transformed estimators #52
Merged
Merged
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This mixin provides two methods (`predict_independent` and `score_independent`) that don't include the query point itself when finding nearest neighbors. These methods are similar in functionality to calling `KNeighborsRegressor.kneighbors()` without passing `X`. In this way, only "independent" neighbors are used in calculating predictions and scores. This PR is intended to fix #45.
* Replace IndependentPredictionMixin functions with a fit function that sets estimator attributes * Change tests to compare against estimator attributes for independent_prediction_ and independent_score_ * Clean up variable names used in tests * Simplify logic in test_predict for choosing the expected prediction data
Previously, the core estimators were using three mixins (`KNeighborsDFIndexCrosswalkMixin`, `TransformedKNeighborsMixin`, `IndependentPredictionMixin`) and the core `sklearn.neighbors.KNeighborsRegressor` as superclasses. This commit introduces a new subclass (`_KNeighborsRegressor`) that inherits from `KNeighborsDFIndexCrosswalkMixin` (renamed to `DFIndexCrosswalkMixin`), `IndependentPredictionMixin`, and `sklearn.neighbors.KNeighborsRegressor. Additionally, the functionality in `TransformedKNeighborsMixin` is now presented in a subclass of `_KNeighborsRegressor` renamed to `_TransformedKNeighborsRegressor`. All core estimators now either inherit directly from `_TransformedKNeighborsRegressor` or `_KNeighborsRegressor`.
aazuspan
added
refactor
Code cleanup without changing functionality
estimator
Related to one or more estimators
labels
Sep 18, 2023
grovduck
approved these changes
Sep 19, 2023
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.
@aazuspan, all looks great to me. Exactly as you laid it out ...
Thanks @grovduck, merging! |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This would resolve #51 by:
TransformedKNeighborsRegressor
into an abstract classfit
methods and into an abstract_get_transformer
methodfit
methods and into theTransformedKNeighborsRegressor._set_fitted_transformer
method to reduce duplicationYFitMixin
to handle transformer fitting forGNN
andMSN
This also:
transform_
attribute totransformer_
for consistency with the new methods_validate_data
check withforce_all_finite=True
when fitting all transformed estimators. This was needed byMSN
, but also fixed an xfailing estimator check forGNN
, which allowed us to drop that from the tags.@grovduck Sorry about the convoluted commit history... Not sure exactly how, but I accidentally included all of your commits from #50 in this. Once this gets squashed it shouldn't be a problem at least.