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.Sum([
gplib.cov.SquaredExponential(data, is_ard=True),
gplib.cov.WhiteNoise(data)
]),
gplib.lik.Gaussian(),
gplib.inf.ExactGaussian(),
gplib.fit.HparamOptimization(
ls_method="Powell",
save_opt=True
)
)
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 = 1
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 ./ ../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.19.12-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 322a44af847526786fcd37e963947b82c0fe7b3adc2721fc3eb58ee5a026328b |
|
MD5 | 7f3c21573b505720ba07e486c2ac5295 |
|
BLAKE2b-256 | 4a6ef2e5fbb2056faf4c48739ec4973439f7fa4d62c0fe74e8bdb75e81d2dc80 |