Python library for Bayesian Optimization.
Project description
BOlib
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(
gplib.mea.Constant(data),
gplib.cov.SquaredExponential(data, is_ard=True),
gplib.lik.Gaussian(is_noisy=True),
gplib.inf.ExactGaussian(),
gplib.fit.HparamOptimization(
maxiter=75, maxfuncall=200, ls_method="Powell"
)
)
Bayesian Optimization also needs an acquisition function.
af = bolib.afs.ExpectedImprovement()
Finally, we can initialize our optimization model and start the optimization process.
# We get a random sample within the bounds of the objective function
seed = 48948
bo = bolib.methods.BayesianOptimization(model, af, seed)
x0 = bolib.util.random_sample(of.get_bounds(), batch_size=10)
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://github.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 ./ ../boplib
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.19.1-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 302d16e844441c652003705ee577df4c6dfc0ab34625e55e7bea1cd6a947d889 |
|
MD5 | b6b5ce899ad3cc71c45be3b6e906a12a |
|
BLAKE2b-256 | 25beac718ab673bef311ab1a46a24f36704875737327ca6d44ad6b4e8b56185f |