← 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
Velocity · 7d
+0.8
★ / day
Trend
steady
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.

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