Skip to content
This repository has been archived by the owner on Feb 28, 2024. It is now read-only.

Latest commit

 

History

History
58 lines (44 loc) · 1.82 KB

getting_started.rst

File metadata and controls

58 lines (44 loc) · 1.82 KB

Getting started

.. currentmodule:: skopt

Scikit-Optimize, or skopt, is a simple and efficient library to minimize (very) expensive and noisy black-box functions. It implements several methods for sequential model-based optimization. skopt aims to be accessible and easy to use in many contexts.

The library is built on top of NumPy, SciPy and Scikit-Learn.

We do not perform gradient-based optimization. For gradient-based optimization algorithms look at scipy.optimize here.

Approximated objective

Approximated objective function after 50 iterations of :class:`gp_minimize`. Plot made using :class:`plots.plot_objective`.

Finding a minimum

Find the minimum of the noisy function f(x) over the range -2 < x < 2 with :class:`skopt`:

>>> import numpy as np
>>> from skopt import gp_minimize
>>> np.random.seed(123)
>>> 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)], n_calls=20)
>>> print("x*=%.2f f(x*)=%.2f" % (res.x[0], res.fun))
x*=0.85 f(x*)=-0.06

For more control over the optimization loop you can use the :class:`skopt.Optimizer` class:

>>> from skopt import Optimizer
>>> opt = Optimizer([(-2.0, 2.0)])
>>>
>>> for i in range(20):
...     suggested = opt.ask()
...     y = f(suggested)
...     res = opt.tell(suggested, y)
>>> print("x*=%.2f f(x*)=%.2f" % (res.x[0], res.fun))
x*=0.27 f(x*)=-0.15

For more read our :ref:`sphx_glr_auto_examples_bayesian-optimization.py` and the other examples.