用python贝叶斯优化器优化参数添加时间:2024-05-13
贝叶斯优化是一种用于优化黑盒函数的序列模型优化方法,常用于超参数调优和优化复杂的目标函数。在Python中,我们可以使用多个库来实现贝叶斯优化。
一个常用的库是scikit-optimize(简称skopt),它提供了贝叶斯优化的功能。你可以使用该库来定义目标函数,设置参数搜索空间,运行贝叶斯优化算法,并获取最佳参数。
下面是一个示例代码,演示了如何使用skopt进行贝叶斯优化:
```python
from skopt import BayesSearchCV
from sklearn.datasets import load_iris
from sklearn.svm import SVC
# 加载数据集
X, y=load_iris(return_X_y=True)
# 定义超参数搜索空间
param_space={
'C': (1e-6, 1e+6, 'log-uniform'),
'gamma': (1e-6, 1e+1, 'log-uniform'),
'kernel': ['linear', 'rbf']
}
# 定义目标函数
def objective(params):
clf=SVC(**params)
return -np.mean(cross_val_score(clf, X, y, cv=5, n_jobs=-1, scoring='accuracy'))
# 运行贝叶斯优化
opt=BayesSearchCV(SVC(), param_space, n_iter=50, n_jobs=-1)
opt.fit(X, y)
# 输出最佳参数和对应的目标函数值
print("Best accuracy: %.4f" % opt.best_score_)
print("Best parameters: ", opt.best_params_)
```
在这个示例中,我们使用贝叶斯优化来寻找SVM分类器的最佳超参数。我们定义了超参数的搜索空间,并使用交叉验证评估每个参数组合的性能。最后,我们输出了找到的最佳参数和对应的目标函数值。
除了skopt外,还有其他库,如hyperopt和Optuna,也提供了贝叶斯优化的功能。你可以根据自己的需求选择合适的库来实现贝叶斯优化。