scikit-optimize
Sequential model-based optimization library with scipy.optimize interface
GraphCanon updated 2w · GitHub synced 2w
Decision brief
Scikit-Optimize is built for minimizing noisy and expensive black-box functions using sequential model-based methods, and it provides a convenient interface with scipy.optimize.
Good fit when
- Use Scikit-Optimize when dealing with optimization problems where function evaluations are expensive or noisy, making traditional derivative-based approaches less effective.
- Leverage Scikit-Optimize for hyperparameter tuning of machine learning models, particularly in scenarios where the evaluation metric is non-differentiable or has multiple local optima.
Avoid when
- Avoid using Scikit-Optimize if your optimization function can be efficiently evaluated with a high number of gradients, as it does not perform gradient-based optimization and could be less efficient.
- Do not select this tool when you need real-time or online learning updates, as its sequential model-based approaches are better suited for batch processing environments.
Observed Jul 17, 2026 · Source: enrich:decision_facts
Verify the decision
Maintenance and security
Full trust report- Maintenance
- Archived (893d since push)
- As of 2w
- Provenance
- Not a fork · Organization account
- As of 2w
- Security (OSV)
- 17 low (17 low)
- As of 1mo
Public GitHub metadata and optional OSV scans. Signals, not a guarantee. Trust methodology.
Install
pip install scikit-optimize PyPIHow it fits your stack(1)
Typed graph edges - alternatives, integrations, successors, and dependencies. Ranked by relationship type, not raw GitHub stars.
Relationship graph
Optional deeper exploration of typed edges and category neighbours.
Similar tools
Same-category neighbours not already linked as typed edges.
Evidence and technical details
Sourced facts, taxonomy, compatibility claims, README excerpt, and machine-readable endpoints.
Overview
Scikit-Optimize offers tools for minimizing noisy and expensive black-box functions using sequential model-based methods
Capability facts
- Languages
- python
Source: github.language+pyproject.toml · Aug 4, 2026
Categories
Compatibility
Sourced claims from the README excerpt - not unsourced marketing copy.
Source: README excerpt (regex_v1, Aug 4, 2026)
- Releases - https://pypi.python.org/pypi/scikit-optimizeSource link
Tags
README
|Logo|
|pypi| |conda| |Travis Status| |CircleCI Status| |binder| |gitter| |Zenodo DOI|
Scikit-Optimize
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 <http://docs.scipy.org/doc/scipy/reference/optimize.html>_.
.. figure:: https://github.com/scikit-optimize/scikit-optimize/blob/master/media/bo-objective.png :alt: Approximated objective
Approximated objective function after 50 iterations of gp_minimize.
Plot made using skopt.plots.plot_objective.
Important links
- Static documentation -
Static documentation <https://scikit-optimize.github.io/>__ - Example notebooks - can be found in examples_.
- Issue tracker - https://github.com/scikit-optimize/scikit-optimize/issues
- Releases - https://pypi.python.org/pypi/scikit-optimize
Install
scikit-optimize requires
- Python >= 3.6
- NumPy (>= 1.13.3)
- SciPy (>= 0.19.1)
- joblib (>= 0.11)
- scikit-learn >= 0.20
- matplotlib >= 2.0.0
You can install the latest release with: ::
pip install scikit-optimize
This installs an essential version of scikit-optimize. To install scikit-optimize with plotting functionality, you can instead do: ::
pip install 'scikit-optimize[plots]'
This will install matplotlib along with scikit-optimize.
In addition there is a conda-forge <https://conda-forge.org/>_ package
of scikit-optimize:
::
conda install -c conda-forge scikit-optimize
Using conda-forge is probably the easiest way to install scikit-optimize on Windows.
Getting started
Find the minimum of the noisy function f(x) over the range
-2 < x < 2 with skopt:
.. code:: python
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 control over the optimization loop you can use the skopt.Optimizer
class:
.. code:: python
from skopt import Optimizer
opt = Optimizer([(-2.0, 2.0)])
for i in range(20):
suggested = opt.ask()
y = f(suggested)
opt.tell(suggested, y)
print('iteration:', i, suggested, y)
Read our introduction to bayesian optimization <https://scikit-optimize.github.io/stable/auto_examples/bayesian-optimization.html>__
and the other examples_.
Development
The library is still experimental and under heavy development. Checkout
the next milestone <https://github.com/scikit-optimize/scikit-optimize/milestones>__
for the plans for the next release or look at some easy issues <https://github.com/scikit-optimize/scikit-optimize/issues?q=is%3Aissue+is%3Aopen+label%3AEasy>__
to get started contributing.
The development version can be installed through:
::
git clone https://github.com/scikit-optimize/scikit-optimize.git
cd scikit-optimize
pip install -e.
Run all tests by executing pytest in the top level directory.
To only run the subset of tests with short run time, you can use pytest -m 'fast_test' (pytest -m 'slow_test' is also possible). To exclude all slow running tests try pytest -m 'not slow_test'.
This is implemented using pytest attributes <https://docs.pytest.org/en/latest/mark.html>__. If a tests runs longer than 1 second, it is marked as slow, else as fast.
All contributors are welcome!
Making a Release
The release procedure is almost completely automated. By tagging a new release
travis will build all required packages and push them to PyPI. To make a release
create a new iss
For agents
This page has a .md twin and JSON over the API.