Also `estimator` is a parameter. It should not be modified in the `fit` method. The `fit` method should use the `sklearn.base.clone` function to clone it prior to call `fit` on it and then store the final clone as `self.estimator_` (to leave the `self.estimator` param untouched).