Scikit-Optimize, or skopt
, is a simple and efficient library
for sequential model-based optimization, accessible to everybody and reusable in various
contexts.
The library is built on top of NumPy, SciPy and Scikit-Learn.
We do not do gradient-based optimization. For gradient-based optimization you should be looking at scipy.optimize
Approximated objective function after 50 iterations of gp_minimize
. Plot made using skopt.plots.plot_objective
.
- Static documentation - Static documentation
- Example notebooks - can be found under the
examples/
directory. - Issue tracker - https://github.com/scikit-optimize/scikit-optimize/issues
- Releases - https://pypi.python.org/pypi/scikit-optimize
These instructions will setup the latest released version of scikit-optimize
.
Currently scikit-optimize
relies on a yet unreleased version of scikit-learn
.
This means you will have to install that version by hand and probably want to
create a separate virtualenv or conda environment for it.
pip install -e git+https://github.com/scikit-learn/scikit-learn.git#egg=scikit-learn-0.18dev
After this you can install scikit-optimize
with:
pip install scikit-optimize
Find the minimum of the noisy function f(x)
over the range -2 < x < 2
with skopt
:
import numpy as np
from skopt import gp_minimize
def f(x):
return (np.sin(5 * x[0]) * (1 - np.tanh(x[0] ** 2)) *
np.random.randn() * 0.1)
res = gp_minimize(f, [(-2.0, 2.0)])
For more read our introduction to bayesian optimization and the other examples.
The library is still experimental and under heavy development.
The development version can be installed through:
git clone https://github.com/scikit-optimize/scikit-optimize.git
cd scikit-optimize
pip install -r requirements.txt
python setup.py develop
Run the tests by executing nosetests
in the top level directory.
Contributors are welcome!