python-3.x - Hypetopt 和 STATUS_FAIL 使用错误“ValueError:尝试获取空序列的 argmin”
问题描述
我正在试验 Hyperopt 和 scikit-learn。据我所知,您只需要{'status':STATUS_FAIL}
为没有收敛的情况提供字典,但我面临错误消息。我不太确定我是否在返回的字典中遗漏了一些数据、参数或键,我是否误解了有关 Hyperopt 使用的某些内容。
认为它可能是字典中的任何附加和必要元素,我已经尝试了一些组合,例如:
{'status': STATUS_FAIL, 'loss': 1, 'params': params, 'test': [0, 0], 'train': [0, 0]}
我的代码如下所示:
def objective(params=None):
'''Objective function for bayesian hyperparameter tuning'''
if params:
model.set_params(params)
try:
cv_results = cross_validate(model.pipeline, X, y, pids,
scoring='roc_auc', cv=akf,
n_jobs=-1,
return_train_score=True)
except ValueError:
return {'status': STATUS_FAIL }
# Dictionary with information for evaluation
return {'loss': 1 - np.mean(cv_results['test_score']),
'params': params, 'status': STATUS_OK,
'test': cv_results['test_score'],
'train': cv_results['train_score']}
这是我正在使用的目标函数:
fmin(fn=objective, space=param_grid, algo=tpe.suggest,
max_evals=iter, trials=bayes_trials,
show_progressbar=not quiet)
收到的错误消息是:
Traceback (most recent call last):
File "/home/evasd/miniconda3/envs/ir-models/lib/python3.6/site-packages/numpy/core/fromnumeric.py", line 56, in _wrapfunc
return getattr(obj, method)(*args, **kwds)
AttributeError: 'list' object has no attribute 'argmin'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
...
File "/home/evasd/miniconda3/envs/ir-models/lib/python3.6/site-packages/hyperopt/fmin.py", line 409, in fmin
return trials.argmin
File "/home/evasd/miniconda3/envs/ir-models/lib/python3.6/site-packages/hyperopt/base.py", line 590, in argmin
best_trial = self.best_trial
File "/home/evasd/miniconda3/envs/ir-models/lib/python3.6/site-packages/hyperopt/base.py", line 585, in best_trial
best = np.argmin(losses)
File "/home/evasd/miniconda3/envs/ir-models/lib/python3.6/site-packages/numpy/core/fromnumeric.py", line 1172, in argmin
return _wrapfunc(a, 'argmin', axis=axis, out=out)
File "/home/evasd/miniconda3/envs/ir-models/lib/python3.6/site-packages/numpy/core/fromnumeric.py", line 66, in _wrapfunc
return _wrapit(obj, method, *args, **kwds)
File "/home/evasd/miniconda3/envs/ir-models/lib/python3.6/site-packages/numpy/core/fromnumeric.py", line 46, in _wrapit
result = getattr(asarray(obj), method)(*args, **kwds)
ValueError: attempt to get argmin of an empty sequence
解决方案
推荐阅读
- php - (我的本地主机上没有这个问题)... SQLSTATE[28000] [1045] 用户'myworldm_ecommerce'@'cp-9.hkdns.co.za'的访问被拒绝
- javascript - React Router Hash Link:锚标签未滚动到预期位置
- add-on - 请求关于认证失败的解释(合作伙伴请求 ID 2004100040003081)
- null - 如何在 sql 中添加包含空值的查询的两个结果列
- swift - 如何避免父 ScrollView 剪辑内部 ScrollView?
- c - 扫描不同类型的变量
- linux - Linux如何在启动时自动启动带有脚本文件的可见终端
- python - 从列表的每个元素中剥离 \n
- c - 为什么 The C Programming Language 书中的一些代码示例不能按预期工作?
- android - 颤动应用程序更改状态栏以匹配相同的应用程序栏