Please stay on the mailing list :)
I'm not sure if ValueError is the right error that would be raised (I
think it's not).
And it's hard to say if this will break something in some edge cases. I
would
probably rather explicitly encode the parameters of FancyEstimator
instead of the try,
or get them using super.get_params. You also should rewrite get_params.
In principle something like that should work, but I wouldn't go as far
as saying it's
"safe" and you should test it extensively.
On 04/13/2018 12:41 PM, Javier López wrote:
Is something like this safe, or might I be breaking some important
functionality?
```
def set_params(self, **params):
try:
super(FancyEstimator, self).set_params(**params)
except ValueError:
self.wrapped_estimator_.set_params(**params)
```
On Fri, Apr 13, 2018 at 5:05 PM Andreas Mueller <t3k...@gmail.com
<mailto:t3k...@gmail.com>> wrote:
You just need to implement get_params and set_params yourself to
delegate in this way, right?
On 04/13/2018 11:51 AM, Javier López wrote:
I have a class
`FancyEstimator(BaseEstimator, MetaEstimatorMixin): ...` that wraps
around an arbitrary sklearn estimator to add some functionality I
am interested about.
This class contains an attribute `self.estimator` that contains
the wrapped estimator.
Delegation of the main methods, such as `fit`, `transform` works
just fine, but I am
having some issues with `get_params` and `set_params`.
The main idea is, I would like to use my wrapped class as a
drop-in replacement for
the original estimator, but this raises some issues with some
functions
that try using the `get_params` and `set_params` straight in my
class, as the original
parameters now have prefixed names (for instance
`estimator__verbose` instead of `verbose`)
I would like to delegate calls of set_params and get_params in a
smart way so that if a
parameter is unknown for my wrapper class, then it automatically
goes looking for it in
the wrapped estimator.
I am not concerned about my class parameter names as there are
only a couple of very
specific names on it, so it is safe to assume that any unknown
parameter name should
refer to the base estimator. Is there an easy way of doing that?
Cheers,
J
_______________________________________________
scikit-learn mailing list
scikit-learn@python.org <mailto:scikit-learn@python.org>
https://mail.python.org/mailman/listinfo/scikit-learn
_______________________________________________
scikit-learn mailing list
scikit-learn@python.org
https://mail.python.org/mailman/listinfo/scikit-learn