Hyperopt 超参数优化配置指南 - 使用 Python 进行机器学习模型调优
Hyperopt 是一个 Python 库,用于在机器学习中进行超参数优化。要配置 Hyperopt,请按照以下步骤操作:
-
安装 Hyperopt:使用 pip 命令安装 Hyperopt 库。在终端中输入以下命令:
pip install hyperopt -
导入 Hyperopt:在 Python 代码中导入 Hyperopt 库。可以使用以下代码:
import hyperopt -
定义参数空间:定义要优化的参数空间。Hyperopt 支持多种参数类型,如整数、浮点数和类别。可以使用以下代码定义一个参数空间:
from hyperopt import hp
space = {
'param1': hp.choice('param1', [0, 1, 2]),
'param2': hp.uniform('param2', 0, 1),
'param3': hp.quniform('param3', 0, 1, 0.1),
}
上述代码定义了三个参数空间:'param1' 是一个类别参数,可以选择 0、1 或 2;'param2' 是一个浮点数参数,可以在 0 和 1 之间均匀分布;'param3' 是一个浮点数参数,可以在 0 和 1 之间以 0.1 为步长均匀分布。
- 定义目标函数:定义要优化的目标函数。目标函数应该接受参数空间中的参数,并返回一个评估指标(如准确率或损失)。以下是一个示例目标函数:
def objective(params):
param1 = params['param1']
param2 = params['param2']
param3 = params['param3']
# 训练模型并返回评估指标
return {'loss': -accuracy, 'status': STATUS_OK}
上述代码中,params 是一个字典,包含了参数空间中的所有参数。在这个示例中,我们训练了一个模型,并返回了一个评估指标(负准确率)。
- 定义超参数搜索算法:定义要使用的超参数搜索算法。Hyperopt 支持多种算法,如随机搜索和贝叶斯优化。以下是一个示例搜索算法:
from hyperopt import tpe
algorithm = tpe.suggest
上述代码中,我们使用了一种贝叶斯优化算法,称为 Tree-structured Parzen Estimator(TPE)。
- 运行超参数搜索:运行超参数搜索,并获取最优参数。以下是一个示例代码:
from hyperopt import fmin, Trials
trials = Trials()
best_params = fmin(
fn=objective,
space=space,
algo=algorithm,
max_evals=100,
trials=trials,
rstate=np.random.RandomState(1),
verbose=1,
)
上述代码中,我们使用了 fmin 函数来运行超参数搜索。fn 参数是目标函数,space 参数是参数空间,algo 参数是搜索算法,max_evals 参数是最大评估次数,trials 参数是一个 Trials 对象,用于保存搜索历史。rstate 参数是一个随机种子,用于重复搜索结果。verbose 参数是一个布尔值,用于控制搜索过程的输出。
- 查看结果:查看最优参数和评估指标。可以使用以下代码:
print('Best parameters:', best_params)
print('Best loss:', -trials.best_trial['result']['loss'])
上述代码中,best_params 是一个字典,包含了最优参数。trials.best_trial['result']['loss'] 是最优评估指标(负准确率)。注意,由于我们在目标函数中返回的是负准确率,因此需要将最优评估指标取负数才能得到实际的准确率。
原文地址: https://www.cveoy.top/t/topic/n2Kn 著作权归作者所有。请勿转载和采集!