我正在尝试使用一个类进行hyeropt参数调整,以合并不同的模型和参数网格。这是我的代码:
class hopt:
def __init__(self, clf, params, x, y):
self.clf = clf
self.params = params
self.x = x
self.y = y
def f(self):
self.clf = self.clf(**self.params, random_state=2019, n_jobs=-1)
score = cross_val_score(self.clf, self.x, self.y, scoring='roc_auc', cv=StratifiedKFold(5, True, 2019))
pred = cross_val_predict(self.clf, self.x, self.y, cv=StratifiedKFold(5, True, 2019),
method='predict_proba',
n_jobs=-1)[:, 1]
return {'loss': -np.mean(score), 'status': STATUS_OK, 'pred': pred}
def search(self, max_evals, f=f):
trials = Trials()
fmin(f, self.params, algo=tpe.suggest, max_evals=max_evals, rstate=np.random.RandomState(2019), trials=trials)
return trials.best_trial['result']['pred'][:, 1]
我要做的是将函数“ f”传递给函数“ search”,这两个函数都是在类中创建的。但是我得到了错误信息: AttributeError:“ dict”对象没有属性“ clf”
对不起,我是Python类的新手。任何帮助表示赞赏。