Python library for Bayesian Optimization.
Project description
A python library for Bayesian Optimization.
Setup BOlib
The following packages must be installed before installing BOlib
# for ptyhon3
apt-get install python3-tk
# or for python2
apt-get install python-tk
Create and activate virtualenv (for python2) or venv (for ptyhon3)
# for ptyhon3
python3 -m venv --system-site-packages .env
# or for python2
virtualenv --system-site-packages .env
source .env/bin/activate
Upgrade pip
# for ptyhon3
python3 -m pip install --upgrade pip
# or for python2
python -m pip install --upgrade pip
Install GPlib package
python -m pip install bolib
Use BOlib
Import BOlib to use it in your python script.
import bolib
Some well-known objetive functions have been included.
of = bolib.ofs.Branin()
of.evaluate([1.0, 1.0]) # 27.702905548512433
To use Bayesian Optimization we need a probabilistic model. In this example we will use Gaussian Processes.
import gplib
import numpy as np
# We initialize data before the first evaluation.
data = {
'X': np.zeros((2, len(of.get_bounds()))),
'Y': np.array([[-1.0], [1.0]])
}
model = gplib.GP(
mean_function=gplib.mea.Constant(data),
covariance_function=gplib.cov.Sum([
gplib.cov.SquaredExponential(data, is_ard=True),
gplib.cov.WhiteNoise(data)
]),
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=300,
max_ls_fun_call=300
)
validation = gplib.val.Full()
Bayesian Optimization also needs an acquisition function.
af = bolib.afs.ExpectedImprovement()
Finally, we can initialize our optimization model and start the optimization process.
seed = 1
bo = bolib.methods.BayesianOptimization(
model, fitting_method, validation, af, seed
)
x0 = bolib.util.random_sample(of.get_bounds(), batch_size=15)
bo.minimize(
of.evaluate, x0,
bounds=of.get_bounds(),
tol=1e-7,
maxiter=of.get_max_eval(),
disp=True
)
BOlib is also Scipy compatible.
import scipy.optimize as spo
result = spo.minimize(
of.evaluate,
x0,
bounds=of.get_bounds(),
method=bo.minimize,
tol=1e-7,
options={
'maxiter': of.get_max_eval(),
'disp': True
}
)
There are more examples in examples/ directory. Check them out!
Develop BOlib
Download the repository using 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
Update API documentation
source ./.env/bin/activate
pip install Sphinx
cd docs/
sphinx-apidoc -f -o ./ ../bolib
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for bolib-0.20.2-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1d1673966ecadaf2b1e8a9b7b3e9cd1d9812db6ef359d8b011c8d3c4e937ef92 |
|
MD5 | a5ea41fa234535721220b41f157b96ed |
|
BLAKE2b-256 | 90c67dd32da22027c810c5ed1087be68280d24e6f2988b174c2f41a4f67beef9 |