-
Notifications
You must be signed in to change notification settings - Fork 13
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
AL-Pipeline #33
AL-Pipeline #33
Conversation
…d if any user arguments are provided
…king scikit example
Updated the active_learning_step pattern to input the pipeline attributes as default kwargs that get overwritten/updated by any user kwargs. Also added a working example (with the associated refactoring needed in the dependent modules). A somewhat notable element is the refactoring required on the end of the strategy implementations as it will not have direct access to the |
All tests updated to reflect new API changes |
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.
Everything seems good to me !
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.
A few comments on the surface. Looking forward to chat tomorrow
pyrelational/strategies/classification/generic_classification_strategy.py
Show resolved
Hide resolved
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.
a few more comments, some might be outside scope of this PR though, just raising awareness. The unit tests should probably be refactored as well. But let's do that after merge.
Co-authored-by: thomasgaudelet <69150449+thomasgaudelet@users.noreply.github.com>
…convenience function to update the underlying dataset through a supplied data_manager
…ecating one to a new set of tests
Updated and ready for another review |
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.
looks good! small comments, some maybe should be moved to issues instead of being addressed in this PR.
Hi all,
This is a PR related to #23 which we have been planning for a while. As #23 describes we propose refactoring the code to decouple the functionality of the active learning pipeline from the active learning strategy.
In principle the proposed
GenericPipeline
class will succeed the GenericALStrategy in functionality, and serves to help the user decouple the implementation of their strategies from the business logic of running the pipeline.From a structural perspective a
Pipeline
will be a composition of the following objectspyrelational.oracle.generic_oracle.GenericOracle
interface)It retains all of the methods of the previous
GenericActiveLearningStrategy
it replaces. Of particular note is theactive_learning_step
method which now calls upon the method of the same name in the strategy, filtering the arguments to match the signature of the concrete method implementations.This involves the modification of several existing modules, most notably the
GenericActiveLearningStrategy
and all of the strategy implementations dependent on it. The refactor also includes a newGenericOracle
interface to spur development of different concrete oracle classes.The
GenericActiveLearningStrategy
is now an abstract class which acts as an interface for strategy implementations, each concrete strategy must implement anactive_learning_step(self, *args, **kwargs)
function. TheGenericPipeline.active_learning_step(self, *args, **kwargs)
will filter the**kwargs
to match signature of the implementedGenericActiveLearningStrategy.active_learning_step
method.The change also brings forward the implementation of a
GenericOracle
interface whose concrete implementations must implement theupdate_dataset(self, data_manager, indices)
method.Updates will be made to this PR to update all of the tests and documentations towards the new API as we discuss any detailed changes that need to be done to the proposed changes.