bayesian优化demo运行

bayesian优化demo运行

参考链接:贝叶斯优化

准备工作

在所使用的python版本下,应有一个bayes_opt目录如下:

如果没有这个目录,可以用pip install bayesian-optimization命令下载

demo代码

新建一个python文件basic_bayesian.py,其中代码如下:

def black_box_function(x, y):
    """Function with unknown internals we wish to maximize.

    This is just serving as an example, for all intents and
    purposes think of the internals of this function, i.e.: the process
    which generates its output values, as unknown.
    """
    return -x ** 2 - (y - 1) ** 2 + 1

from bayes_opt import BayesianOptimization

pbounds = {'x': (2, 4), 'y': (-3, 3)}

optimizer = BayesianOptimization(
    f=black_box_function,
    pbounds=pbounds,
    verbose=2, # verbose = 1 prints only when a maximum is observed, verbose = 0 is silent
    random_state=1,
)

optimizer.maximize(
    init_points=2,
    n_iter=3,
)

print(optimizer.max)

代码分析

  • 代码中的black_box_function函数,在例子中是已知的,但实际中不需要是一个已知表达式的函数,只需要是一个已知输入参数和输出实数的函数就可以
  • optimizer是一个实例化的BayesianOptimization对象
  • pbounds是参数的界限,也就是参数可取的上下界范围,因为贝叶斯优化是有约束的优化技术
  • maximize是主要的方法,用于找出最大值
  • init_points参数表示希望进行随机探索的次数,n_iter参数表示执行的贝叶斯优化步骤

运行结果

使用sudo python3 basic_bayesian.py命令运行代码,输出如下:

如果希望查看所有探测到的参数,以及对应的目标值,可以在代码最后添加:

for i, res in enumerate(optimizer.res):
    print("Iteration {}: \n\t{}".format(i, res))

重新运行,可以看到总共五次探索的参数和target值:

posted @ 2023-05-17 18:15  瑞图恩灵  阅读(73)  评论(0编辑  收藏  举报