用于贝叶斯优化的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

使用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

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
ApachePOI如何通过java从excel文件中删除空白列?   linux到后台Java服务应用程序的简单发送/接收接口   java ActionBarPullToRefresh什么都没发生   java从millis获取错误的整数天   java相同的代码在两个不同的包上表现不同   java将每个新的char元素写入一个文件(如果被覆盖)   mysql如何在Java中通过外键链接的多个表中插入数据   java环境下mysql网络文件访问   java当使用构建器模式时,为什么我不应该重用builderobject来访问对象配置?   java jQueryServlet post异常失败   java应该使用什么逻辑来创建像《愤怒的小鸟》中那样的锁屏   java Android:在不滑动的情况下更改ViewPager中的片段   java在使用我的程序逻辑时获得空输出