{"id":14958365,"url":"https://github.com/holgern/scikit-optimize","last_synced_at":"2025-10-24T14:31:58.407Z","repository":{"id":226429750,"uuid":"768077165","full_name":"holgern/scikit-optimize","owner":"holgern","description":"Sequential model-based optimization with a `scipy.optimize` interface","archived":false,"fork":false,"pushed_at":"2024-06-04T18:09:27.000Z","size":20729,"stargazers_count":17,"open_issues_count":3,"forks_count":2,"subscribers_count":5,"default_branch":"main","last_synced_at":"2025-01-31T02:21:57.528Z","etag":null,"topics":["binder","hyperparameter-optimization","hyperparameter-search","hyperparameter-tuning","maschine-learning","optimization","scientific-visualization","scikit-learn","sequential-recommendation","visualization"],"latest_commit_sha":null,"homepage":"http://scikit-optimize.readthedocs.io/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/holgern.png","metadata":{"files":{"readme":"README.rst","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":"AUTHORS.md","dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-03-06T12:32:17.000Z","updated_at":"2025-01-08T02:48:45.000Z","dependencies_parsed_at":"2024-03-07T15:28:24.795Z","dependency_job_id":"27d84758-4328-496a-ba16-cc9ddee1a7f5","html_url":"https://github.com/holgern/scikit-optimize","commit_stats":null,"previous_names":["holgern/scikit-optimize"],"tags_count":30,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/holgern%2Fscikit-optimize","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/holgern%2Fscikit-optimize/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/holgern%2Fscikit-optimize/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/holgern%2Fscikit-optimize/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/holgern","download_url":"https://codeload.github.com/holgern/scikit-optimize/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":237990575,"owners_count":19398453,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["binder","hyperparameter-optimization","hyperparameter-search","hyperparameter-tuning","maschine-learning","optimization","scientific-visualization","scikit-learn","sequential-recommendation","visualization"],"created_at":"2024-09-24T13:16:52.891Z","updated_at":"2025-10-24T14:31:53.155Z","avatar_url":"https://github.com/holgern.png","language":"Python","readme":"\n|Logo|\n\n|pypi| |conda| |CI Status| |binder| |codecov| |Zenodo DOI|\n\nScikit-Optimize\n===============\n\nScikit-Optimize, or ``skopt``, is a simple and efficient library for\noptimizing (very) expensive and noisy black-box functions. It implements\nseveral methods for sequential model-based optimization. ``skopt`` aims\nto be accessible and easy to use in many contexts.\n\nThe library is built on top of NumPy, SciPy, and Scikit-Learn.\n\nWe do not perform gradient-based optimization. For gradient-based\noptimization algorithms look at\n``scipy.optimize``\n`here \u003chttp://docs.scipy.org/doc/scipy/reference/optimize.html\u003e`_.\n\n.. figure:: https://raw.githubusercontent.com/holgern/scikit-optimize/main/media/bo-objective.png\n   :alt: Approximated objective\n\nApproximated objective function after 50 iterations of ``gp_minimize``.\nPlot made using ``skopt.plots.plot_objective``.\n\nMaintaining the codebase\n------------------------\nThis repo is a copy of the original repositoy at https://github.com/scikit-optimize/scikit-optimize/.\nAs the original repo is now in read-only mode, i decided to continue the development on it on my own.\nI still have credentials for pypi, so I will publish new releases at https://pypi.org/project/scikit-optimize/.\nI did my best to include all open PR since 2021 in the new release of scikit-optimize 0.10.\n\nhttps://scikit-optimize.github.io/ has been moved to http://scikit-optimize.readthedocs.io/.\n\nImportant links\n---------------\n\n-  Project website https://scikit-optimize.readthedocs.io/\n-  Example notebooks - can be found in examples_.\n-  `Discussion forum\n   \u003chttps://github.com/scikit-optimize/scikit-optimize/discussions\u003e`__\n-  Issue tracker -\n   https://github.com/holgern/scikit-optimize/issues\n-  Releases - https://pypi.python.org/pypi/scikit-optimize\n-  Conda feedstock - https://github.com/conda-forge/scikit-optimize-feedstock\n\nInstall\n-------\n\nscikit-optimize requires\n\n* Python \u003e= 3.8\n* NumPy (\u003e= 1.20.3)\n* SciPy (\u003e= 0.19.1)\n* joblib (\u003e= 0.11)\n* scikit-learn \u003e= 1.0.0\n* matplotlib \u003e= 2.0.0\n\nYou can install the latest release with:\n::\n\n    pip install scikit-optimize\n\nThis installs the essentials. To install plotting functionality,\nyou can instead do:\n::\n\n    pip install 'scikit-optimize[plots]'\n\nThis will additionally install Matplotlib.\n\nIf you're using Anaconda platform, there is a `conda-forge \u003chttps://conda-forge.org/\u003e`_\npackage of scikit-optimize:\n::\n\n    conda install -c conda-forge scikit-optimize\n\nUsing conda-forge is probably the easiest way to install scikit-optimize on\nWindows.\n\n\nGetting started\n---------------\n\nFind the minimum of the noisy function ``f(x)`` over the range\n``-2 \u003c x \u003c 2`` with ``skopt``:\n\n.. code:: python\n\n    import numpy as np\n    from skopt import gp_minimize\n\n    def f(x):\n        return (np.sin(5 * x[0]) * (1 - np.tanh(x[0] ** 2)) +\n                np.random.randn() * 0.1)\n\n    res = gp_minimize(f, [(-2.0, 2.0)])\n\n\nFor more control over the optimization loop you can use the ``skopt.Optimizer``\nclass:\n\n.. code:: python\n\n    from skopt import Optimizer\n\n    opt = Optimizer([(-2.0, 2.0)])\n\n    for i in range(20):\n        suggested = opt.ask()\n        y = f(suggested)\n        opt.tell(suggested, y)\n        print('iteration:', i, suggested, y)\n\n\nRead our `introduction to bayesian\noptimization \u003chttps://scikit-optimize.readthedocs.io/en/latest/auto_examples/bayesian-optimization.html\u003e`__\nand the other examples_.\n\n\nDevelopment\n-----------\n\nThe library is still experimental and under development. Checkout\nthe `next\nmilestone \u003chttps://github.com/holgern/scikit-optimize/milestones\u003e`__\nfor the plans for the next release or look at some `easy\nissues \u003chttps://github.com/holgern/scikit-optimize/issues?q=is%3Aissue+is%3Aopen+label%3AEasy\u003e`__\nto get started contributing.\n\nThe development version can be installed through:\n\n::\n\n    git clone https://github.com/holgern/scikit-optimize.git\n    cd scikit-optimize\n    pip install -e .\n\nRun all tests by executing ``pytest`` in the top level directory.\n\nTo 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'``.\n\nThis is implemented using pytest `attributes \u003chttps://docs.pytest.org/en/latest/mark.html\u003e`__. If a tests runs longer than 1 second, it is marked as slow, else as fast.\n\nAll contributors are welcome!\n\n\n\nPre-commit-config\n-----------------\n\nInstallation\n~~~~~~~~~~~~\n\n::\n\n    pip install pre-commit\n\n\nUsing homebrew\n~~~~~~~~~~~~~~\n::\n\n    brew install pre-commit\n\n    pre-commit --version\n    pre-commit 2.10.0\n\nInstall the git hook scripts\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n::\n\n    pre-commit install\n\n\nRun against all the files\n~~~~~~~~~~~~~~~~~~~~~~~~~\n::\n\n    pre-commit run --all-files\n    pre-commit run --show-diff-on-failure --color=always --all-files\n\n\nUpdate package rev in pre-commit yaml\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n::\n\n    pre-commit autoupdate\n    pre-commit run --show-diff-on-failure --color=always --all-files\n\n\nMaking a Release\n~~~~~~~~~~~~~~~~\n\nThe release procedure is almost completely automated. By tagging a new release,\nCI will build all required packages and push them to PyPI. To make a release,\ncreate a new issue and work through the following checklist:\n\n* [ ] check if the dependencies in `setup.py` are valid or need unpinning,\n* [ ] check that the `doc/whats_new/v0.X.rst` is up-to-date,\n* [ ] did the last build of master succeed?\n* [ ] create a [new release](https://github.com/holgern/scikit-optimize/releases),\n* [ ] ping [conda-forge](https://github.com/conda-forge/scikit-optimize-feedstock).\n\nBefore making a release, we usually create a release candidate. If the next\nrelease is v0.X, then the release candidate should be tagged v0.Xrc1.\nMark the release candidate as a \"pre-release\" on GitHub when you tag it.\n\nMade possible by\n----------------\n\nThe scikit-optimize project was made possible with the support of\n\n.. image:: https://avatars1.githubusercontent.com/u/18165687?v=4\u0026s=128\n   :alt: Wild Tree Tech\n   :target: https://wildtreetech.com\n\n.. image:: https://i.imgur.com/lgxboT5.jpg\n    :alt: NYU Center for Data Science\n    :target: https://cds.nyu.edu/\n\n.. image:: https://i.imgur.com/V1VSIvj.jpg\n    :alt: NSF\n    :target: https://www.nsf.gov\n\n.. image:: https://i.imgur.com/3enQ6S8.jpg\n    :alt: Northrop Grumman\n    :target: https://www.northropgrumman.com/Pages/default.aspx\n\nIf your employer allows you to work on scikit-optimize during the day and would like\nrecognition, feel free to add them to the \"Made possible by\" list.\n\n\n.. |pypi| image:: https://img.shields.io/pypi/v/scikit-optimize.svg\n   :target: https://pypi.python.org/pypi/scikit-optimize\n.. |conda| image:: https://anaconda.org/conda-forge/scikit-optimize/badges/version.svg\n   :target: https://anaconda.org/conda-forge/scikit-optimize\n.. |CI Status| image:: https://github.com/holgern/scikit-optimize/actions/workflows/ci.yml/badge.svg?branch=main\n   :target: https://github.com/holgern/scikit-optimize/actions/workflows/ci.yml?query=branch%3Amain\n.. |Logo| image:: https://avatars2.githubusercontent.com/u/18578550?v=4\u0026s=80\n.. |binder| image:: https://mybinder.org/badge.svg\n   :target: https://mybinder.org/v2/gh/holgern/scikit-optimize/main?filepath=examples\n.. |Zenodo DOI| image:: https://zenodo.org/badge/768077165.svg\n   :target: https://zenodo.org/doi/10.5281/zenodo.10804382\n.. |scipy.optimize| replace:: ``scipy.optimize``\n.. _scipy.optimize: https://docs.scipy.org/doc/scipy/reference/optimize.html\n.. _examples: https://scikit-optimize.readthedocs.io/en/latest/auto_examples/index.html\n.. |codecov| image:: https://codecov.io/gh/holgern/scikit-optimize/graph/badge.svg?token=9Mp32drAPj\n   :target: https://codecov.io/gh/holgern/scikit-optimize\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fholgern%2Fscikit-optimize","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fholgern%2Fscikit-optimize","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fholgern%2Fscikit-optimize/lists"}