The problem of
self not being defined is unrelated to scikit.learn. You cannot use
self to define a decorator, because it is only defined inside the method you are decorating. But even if you sidestep this issue (e.g. by providing param_space as a global variable) I expect the next problem will be that
self will be passed to the
use_named_args decorator, but it expects only arguments to be optimized.
The most obvious solution would be to not use the decorator on the
fitness method but to define a decorated function that calls the
fitness method, inside the
find_best_model method, like this:
def find_best_model(self): @use_named_args(dimensions=self.param_space) def fitness_wrapper(*args, **kwargs): return self.fitness(*args, **kwargs) search_result = gp.minimize(func=fitness_wrapper, dimensions=self.param_space,acq_func='EI',n_calls=10) return search_result
CLICK HERE to find out more related problems solutions.