用于贝叶斯优化的python库。
bolib的Python项目详细描述
用于贝叶斯优化的python库。
设置bolib
- 创建并激活virtualenv(用于python2)或 venv(Python3)
# for python3 python3 -m venv .env # or for python2 python2 -m virtualenv .env source .env/bin/activate
- 升级pip
python -m pip install --upgrade pip
- 安装bolib包
python -m pip install bolib
- matplotlib需要安装后端才能交互工作 (见https://matplotlib.org/faq/virtualenv_faq.html)。 最简单的解决方案是安装tk框架, 可以在上找到python tk(或python3 tk) 某些Linux发行版。
使用bolib
- 导入bolib以在python脚本中使用它。
importbolib
- 其中包括一些著名的目标函数。
of=bolib.ofs.Branin()of.evaluate([1.0,1.0])# 27.702905548512433
- 要使用贝叶斯优化,我们需要一个概率模型。在这个例子中,我们将使用高斯过程。
importgplibmodel=gplib.GP(mean_function=gplib.mea.Fixed(),covariance_function=gplib.cov.Sum([gplib.cov.SquaredExponential(),gplib.cov.WhiteNoise()]),likelihood_function=gplib.lik.Gaussian(),inference_method=gplib.inf.ExactGaussian())metric=gplib.me.LML()fitting_method=gplib.fit.MultiStart(obj_fun=metric.fold_measure,ls_method="Powell",max_fun_call=500)validation=gplib.dm.Full()
- 贝叶斯优化也需要一个获取函数。
af=bolib.afs.ExpectedImprovement()
- 最后,我们可以初始化我们的优化模型并开始优化过程。
bo=bolib.methods.BayesianOptimization(model,fitting_method,validation,af)bo.set_seed(seed=1)x0=bo.random_sample(of.get_bounds(),batch_size=5)bo.minimize(of.evaluate,x0,bounds=of.get_bounds(),tol=1e-5,maxiter=of.get_max_eval(),disp=True)
- bolib也是scipy兼容的。
importscipy.optimizeasspobo.set_seed(seed=1)x0=bo.random_sample(of.get_bounds(),batch_size=5)result=spo.minimize(of.evaluate,x0,bounds=of.get_bounds(),method=bo.minimize,tol=1e-5,options={'maxiter':of.get_max_eval(),'disp':True})
- examples/目录中有更多的示例。看看他们!
开发bolib
- 使用git下载存储库
git clone https://gitlab.com/ibaidev/bolib.git cd bolib git config user.email 'MAIL' git config user.name 'NAME' git config credential.helper 'cache --timeout=300' git config push.default simple
- 更新API文档
source ./.env/bin/activate pip install Sphinx cd docs/ sphinx-apidoc -f -o ./ ../bolib