← all repositories
scikit-optimize/scikit-optimize

Bayesian optimization for people who just want the minimum

A scikit-friendly wrapper that trades gradient descent for Gaussian processes when your objective function is expensive, noisy, or both.

2.8k stars Python ML FrameworksLLMOps · Eval
scikit-optimize
Not currently ranked — collecting fresh signals.
star history

What it does

Scikit-Optimize (skopt) minimizes black-box functions that are costly to evaluate or contaminated with noise. It wraps sequential model-based optimization—think Gaussian processes and random forests—into a familiar API that mirrors scipy.optimize. You call gp_minimize() with bounds and a function; it suggests points, learns from results, and iterates toward a minimum without ever asking for a gradient.

The interesting bit

The library deliberately stays in the same conceptual neighborhood as scikit-learn: NumPy/SciPy foundations, ask()/tell() interface for manual control, and built-in plotting via skopt.plots. The README’s own example is a one-liner minimizing a noisy sinusoid. That simplicity is the point—Bayesian optimization can be algorithmically dense, but skopt treats it as infrastructure, not research code.

Key highlights

  • Drop-in style: gp_minimize(f, [bounds]) or step through iterations with Optimizer.ask() / Optimizer.tell()
  • Built on NumPy, SciPy, and scikit-learn; no external C++ dependencies to wrestle with
  • Optional plotting support (pip install 'scikit-optimize[plots]') for visualizing acquisition functions and convergence
  • Conda-forge package available; Windows installation noted as “probably the easiest” path
  • Test suite split into fast (<1s) and slow markers via pytest attributes

Caveats

  • Explicitly labeled “still experimental and under heavy development” by the maintainers
  • No gradient-based methods: if your function is smooth and cheap, scipy.optimize is the documented alternative
  • Python ≥3.6 and scikit-learn ≥0.20 required; dependency versions are pinned conservatively

Verdict

Worth a look if you’re tuning hyperparameters or optimizing simulations where each evaluation costs minutes or hours. Skip it if you need production-grade stability today or your problem is low-dimensional and gradient-friendly—scipy already won that fight.

Frequently asked

What is scikit-optimize/scikit-optimize?
A scikit-friendly wrapper that trades gradient descent for Gaussian processes when your objective function is expensive, noisy, or both.
Is scikit-optimize open source?
Yes — scikit-optimize/scikit-optimize is open source, released under the BSD-3-Clause license.
What language is scikit-optimize written in?
scikit-optimize/scikit-optimize is primarily written in Python.
How popular is scikit-optimize?
scikit-optimize/scikit-optimize has 2.8k stars on GitHub.
Where can I find scikit-optimize?
scikit-optimize/scikit-optimize is on GitHub at https://github.com/scikit-optimize/scikit-optimize.

heatdrop uses Google Analytics to see which pages get read — nothing else. Your call. How we handle data.