所以我使用hyperopt,fmin函数来优化hyperparameters。然而,由于某种原因,我得到了这个错误:
TypeError: cannot convert dictionary update sequence element #0 to a sequence
我的代码如下所示:
fn = partial(self.loss_fn, x, y, metric, cv)
best = fmin(
fn=fn,
space=self.params[self.model.__class__.__name__],
algo=tpe.suggest,
max_evals=len(self.trials) + 10,
trials=self.trials,
)
self.model.set_params(best.params)
def loss_fn(self, x, y, metric, cv, params):
print(params)
print(self.model.__class__.__name__)
self.model.set_params(**params)
return -cross_val_score(self.model, x, y, scoring=make_scorer(metric), cv=cv)
奇怪的是,当我像这样手动运行它时,它工作得很好:
print(fn({"C": 1.0, "gamma": 0.1}))
有人知道为什么会这样吗
好吧,我自己想出来的
cross_val_score
返回值列表,而不是单个值相关问题 更多 >
编程相关推荐