开始使用免费开始使用

使用 Hyperopt 的贝叶斯超参数调优

在本例中,您将使用 Hyperopt 包(已为您导入为 hp)设置并运行一次贝叶斯超参数优化。您将先设置搜索空间(类似于网格搜索时设置网格),再定义目标函数。最后,运行优化器共 20 次迭代。

您需要按以下取值设置搜索空间:

  • max_depth 使用离散均匀分布 quniform(范围 2 到 10,步长为 2)
  • learning_rate 使用连续均匀分布 uniform(0.001 到 0.9)

请注意,为了完成本练习,我们缩小了数据样本规模,以及 hyperopt 与 GBM 的迭代次数。 如果您在本机上自行尝试该方法,建议增大搜索空间、增加试验次数与交叉验证折数,并使用更大的数据集,以更充分地观察其效果。

本练习是课程的一部分

Python 中的超参数调优

查看课程

练习说明

  • 按上述搜索空间设置创建 space 字典。
  • 使用梯度提升分类器定义目标函数。
  • 运行算法进行 20 次评估(直接使用幻灯片中默认建议的算法)。

交互式实操练习

通过完成这段示例代码来试试这个练习。

# Set up space dictionary with specified hyperparameters
space = {'max_depth': hp.____('max_depth', ____, ____, ____),'learning_rate': hp.____('learning_rate', ____,____)}

# Set up objective function
def objective(params):
    params = {'max_depth': int(params[____]),'learning_rate': params[____]}
    gbm_clf = ____(n_estimators=100, **params) 
    best_score = cross_val_score(gbm_clf, X_train, y_train, scoring='accuracy', cv=2, n_jobs=4).mean()
    loss = 1 - ____
    return ____

# Run the algorithm
best = fmin(fn=____,space=space, max_evals=____, rstate=np.random.default_rng(42), algo=tpe.suggest)
print(____)
编辑并运行代码