Package: scikit-optimize
Scikit-OptimizeScikit-Optimize, orskopt, is a simple and efficient library to
minimize (very) expensive and noisy black-box functions. It implements
several methods for sequential model-based optimization.skoptaims
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 atscipy.optimizehere.Approximated objective function after 50 iterations ofgp_minimize.
Plot made usingskopt.plots.plot_objective.Important linksStatic documentation -Static
documentationExample notebooks - can be found inexamples.Issue tracker -https://github.com/scikit-optimize/scikit-optimize/issuesReleases -https://pypi.python.org/pypi/scikit-optimizeInstallscikit-optimize requiresPython >= 3.6NumPy (>= 1.13.3)SciPy (>= 0.19.1)joblib (>= 0.11)scikit-learn >= 0.20matplotlib >= 2.0.0You can install the latest release with:pip install scikit-optimizeThis 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 aconda-forgepackage
of scikit-optimize:conda install -c conda-forge scikit-optimizeUsing conda-forge is probably the easiest way to install scikit-optimize on
Windows.Getting startedFind the minimum of the noisy functionf(x)over the range-2< x < 2withskopt:importnumpyasnpfromskoptimportgp_minimizedeff(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 theskopt.Optimizerclass:fromskoptimportOptimizeropt=Optimizer([(-2.0,2.0)])foriinrange(20):suggested=opt.ask()y=f(suggested)opt.tell(suggested,y)print('iteration:',i,suggested,y)Read ourintroduction to bayesian
optimizationand the otherexamples.DevelopmentThe library is still experimental and under heavy development. Checkout
thenext
milestonefor the plans for the next release or look at someeasy
issuesto 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 executingpytestin the top level directory.To only run the subset of tests with short run time, you can usepytest-m'fast_test'(pytest-m'slow_test'is also possible). To exclude all slow running tests trypytest-m'not slow_test'.This is implemented using pytestattributes. If a tests runs longer than 1 second, it is marked as slow, else as fast.All contributors are welcome!Making a ReleaseThe 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 issue and work through the following checklist:update the version tag in__init__.pyupdate the version tag mentioned in the READMEcheck if the dependencies insetup.pyare valid or need unpinningcheck that thedoc/whats_new/v0.X.rstis up to datedid the last build of master succeed?create anew releasepingconda-forgeBefore making a release we usually create a release candidate. If the next
release is v0.X then the release candidate should be tagged v0.Xrc1 in__init__.py. Mark a release candidate as a “pre-release”
on GitHub when you tag it.Commercial supportFeel free toget in touchif you need commercial
support or would like to sponsor development. Resources go towards paying
for additional work by seasoned engineers and researchers.Made possible byThe scikit-optimize project was made possible with the support ofIf your employer allows you to work on scikit-optimize during the day and would like
recognition, feel free to add them to the “Made possible by” list.