Py之hyperopt:hyperopt库的简介、安装、使用方法之详细攻略
目录
hyperopt库的简介
hyperopt是python的分布式异步超参数优化库。Hyperopt 旨在适应基于高斯过程和回归树的贝叶斯优化算法,但目前尚未实现。
Hyperopt的工作是在一组可能的参数上找到一个标量值的,可能随机函数的最佳值。虽然许多优化包假定这些输入来自向量空间,但Hyperopt不同,它鼓励您更详细地描述搜索空间。通过提供关于函数定义位置的更多信息,以及您认为最佳值在何处,可以让超选择算法更有效地搜索。
GitHub文档:FMin · hyperopt/hyperopt Wiki · GitHub
1、hyperopt的用法
>> 目标函数最小化
>> 用于搜索的空间
>> 用于存储搜索的所有点计算的数据库
>> 要使用的搜索算法
选择搜索算法很简单,只需传递algorithm =hyperopt.tpe。Suggest而不是algorithm =hyperopt.random.suggest。搜索算法实际上是可调用的对象,其构造函数接受配置参数,但这就是关于选择搜索算法的机制的全部内容。
hyperopt库的安装
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple hyperopt
hyperopt库的使用方法
1、基础用法
# define an objective function
def objective(args):
case, val = args
if case == 'case 1':
return val
else:
return val ** 2
# define a search space
from hyperopt import hp
space = hp.choice('a',
[
('case 1', 1 + hp.lognormal('c1', 0, 1)),
('case 2', hp.uniform('c2', -10, 10))
])
# minimize the objective over the space
from hyperopt import fmin, tpe
best = fmin(objective, space, algo=tpe.suggest, max_evals=100)
print best
# -> {'a': 1, 'c2': 0.01420615366247227}
print hyperopt.space_eval(space, best)
# -> ('case 2', 0.01420615366247227}
2、定义参数空间
# 定义参数空间
from hyperopt import hp
import numpy as np
LGBMR_space_params = {
'learning_rate': hp.loguniform('learning_rate', np.log(0.01), np.log(0.2)),
'max_depth': hp.quniform('max_depth', 0, 100, 1),
'n_estimators': hp.quniform('n_estimators', 30, 150, 1),
'num_leaves': hp.quniform('num_leaves', 30, 150, 1),
'subsample_for_bin': hp.quniform('subsample_for_bin', 20000, 300000, 20000),
}
print(LGBMR_space_params)