给定样本集中用于贝叶斯优化的Python包

时间:2019-07-18 23:03:24

标签: python optimization bayesian

我有一组样本及其对应的目标值。下面是可视化效果:

enter image description here

我正在尝试使用贝叶斯优化来查找具有最大目标值的样本。我的问题是是否有人知道执行此操作的python包。我当时看着BayesianOptimization package,它似乎可以在一定间隔内执行优化,但不一定只在样本之间执行。


编辑:这是示例代码:

import matplotlib.pyplot as plt
import numpy as np
from bayes_opt import BayesianOptimization

mean = (1, 2)
cov = [[1, 0], [0, 1]]
my_x, my_y = np.random.multivariate_normal(mean, cov, 1000).T
cmap_data = -my_x ** 2 - (my_y - 1) ** 2 + 1

search = []
def black_box_function(x, y):
    a = np.hstack((x, y))
    search.append(a)

    plt.scatter(my_x, my_y, marker='.', s=1, c=np.array(cmap_data))
    plt.axis('equal')
    # plt.scatter(np.array(search)[:, 0], np.array(search)[:, 1], marker='.', s=20, c='black')

    plt.plot(np.array(search)[:, 0], np.array(search)[:, 1], marker='.', c='black', linewidth=0.5)

    plt.show()

    return -x ** 2 - (y - 1) ** 2 + 1

# -- optimization
pbounds = {'x': (min(my_x), max(my_x)), 'y': (min(my_y), max(my_y))}

optimizer = BayesianOptimization(
    f=black_box_function,
    pbounds=pbounds,
    random_state=1,
)

for i in range(1000):
    optimizer.probe(
    params=[my_x[i], my_y[i]],
    lazy=True,
)

optimizer.maximize(
    init_points=0,
    n_iter=0,
)

但是看来optimizer.probe只是评估值(将在将来的迭代中使用),而不是优化的实际迭代。

0 个答案:

没有答案