Fork of scikit-optimize - Sequential model-based optimization toolbox - extended with sample weights
Project description
|Logo|
|Travis Status|
Scikit-Optimize-W
============
Scikit-Optimize-W is a fork of Scikit-Optimize or ``skopt`` which 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 the
`examples directory <https://github.com/scikit-optimize/scikit-optimize/tree/master/examples>`_.
- Issue tracker -
https://github.com/scikit-optimize/scikit-optimize/issues
- Releases - https://pypi.python.org/pypi/scikit-optimize
Install
-------
The latest released version of scikit-optimize is v0.5.2, which you can install
with:
::
pip install scikit-optimize-w
This installs an essential version of scikit-optimize. To install scikit-optimize
with plotting functionality, you can instead do:
::
pip install 'scikit-optimize-w[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-w
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/notebooks/bayesian-optimization.html>`__
and the other
`examples <https://github.com/scikit-optimize/scikit-optimize/tree/master/examples>`__.
Development
-----------
The library is still experimental and under heavy development. Checkout
the `next
milestone <https://github.com/scikit-optimize/scikit-optimize/milestone/6>`__
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/mimba/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 issue and work through the following checklist:
* update the version tag in ``setup.py``
* update the version tag in ``__init__.py``
* update the version tag mentioned in the README
* check if the dependencies in ``setup.py`` are valid or need unpinning
* check that the ``CHANGELOG.md`` is up to date
* did the last build of master succeed?
* create a `new release <https://github.com/scikit-optimize/scikit-optimize/releases>`__
* ping `conda-forge <https://github.com/conda-forge/scikit-optimize-feedstock>`__
Before 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
``setup.py`` and ``__init__.py``. Mark a release candidate as a "pre-release"
on GitHub when you tag it.
Commercial support
------------------
Feel free to `get in touch <mailto:tim@wildtreetech.com>`_ if you need commercial
support or would like to sponsor development. Resources go towards paying
for additional work by seasoned engineers and researchers.
Made possible by
----------------
The scikit-optimize project was made possible with the support of
.. image:: https://avatars1.githubusercontent.com/u/18165687?v=4&s=128
:alt: Wild Tree Tech
:target: http://wildtreetech.com
.. image:: https://i.imgur.com/lgxboT5.jpg
:alt: NYU Center for Data Science
:target: https://cds.nyu.edu/
.. image:: https://i.imgur.com/V1VSIvj.jpg
:alt: NSF
:target: https://www.nsf.gov
.. image:: https://i.imgur.com/3enQ6S8.jpg
:alt: Northrop Grumman
:target: http://www.northropgrumman.com/Pages/default.aspx
If 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.
.. |Travis Status| image:: https://travis-ci.org/scikit-optimize/scikit-optimize.svg?branch=master
:target: https://travis-ci.org/scikit-optimize/scikit-optimize
.. |CircleCI Status| image:: https://circleci.com/gh/scikit-optimize/scikit-optimize/tree/master.svg?style=shield&circle-token=:circle-token
:target: https://circleci.com/gh/scikit-optimize/scikit-optimize
.. |Logo| image:: https://avatars2.githubusercontent.com/u/18578550?v=4&s=80
.. |binder| image:: https://mybinder.org/badge.svg
:target: https://mybinder.org/v2/gh/scikit-optimize/scikit-optimize/master?filepath=examples
.. |gitter| image:: https://badges.gitter.im/scikit-optimize/scikit-optimize.svg
:target: https://gitter.im/scikit-optimize/Lobby
.. |Zenodo DOI| image:: https://zenodo.org/badge/54340642.svg
:target: https://zenodo.org/badge/latestdoi/54340642
|Travis Status|
Scikit-Optimize-W
============
Scikit-Optimize-W is a fork of Scikit-Optimize or ``skopt`` which 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 the
`examples directory <https://github.com/scikit-optimize/scikit-optimize/tree/master/examples>`_.
- Issue tracker -
https://github.com/scikit-optimize/scikit-optimize/issues
- Releases - https://pypi.python.org/pypi/scikit-optimize
Install
-------
The latest released version of scikit-optimize is v0.5.2, which you can install
with:
::
pip install scikit-optimize-w
This installs an essential version of scikit-optimize. To install scikit-optimize
with plotting functionality, you can instead do:
::
pip install 'scikit-optimize-w[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-w
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/notebooks/bayesian-optimization.html>`__
and the other
`examples <https://github.com/scikit-optimize/scikit-optimize/tree/master/examples>`__.
Development
-----------
The library is still experimental and under heavy development. Checkout
the `next
milestone <https://github.com/scikit-optimize/scikit-optimize/milestone/6>`__
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/mimba/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 issue and work through the following checklist:
* update the version tag in ``setup.py``
* update the version tag in ``__init__.py``
* update the version tag mentioned in the README
* check if the dependencies in ``setup.py`` are valid or need unpinning
* check that the ``CHANGELOG.md`` is up to date
* did the last build of master succeed?
* create a `new release <https://github.com/scikit-optimize/scikit-optimize/releases>`__
* ping `conda-forge <https://github.com/conda-forge/scikit-optimize-feedstock>`__
Before 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
``setup.py`` and ``__init__.py``. Mark a release candidate as a "pre-release"
on GitHub when you tag it.
Commercial support
------------------
Feel free to `get in touch <mailto:tim@wildtreetech.com>`_ if you need commercial
support or would like to sponsor development. Resources go towards paying
for additional work by seasoned engineers and researchers.
Made possible by
----------------
The scikit-optimize project was made possible with the support of
.. image:: https://avatars1.githubusercontent.com/u/18165687?v=4&s=128
:alt: Wild Tree Tech
:target: http://wildtreetech.com
.. image:: https://i.imgur.com/lgxboT5.jpg
:alt: NYU Center for Data Science
:target: https://cds.nyu.edu/
.. image:: https://i.imgur.com/V1VSIvj.jpg
:alt: NSF
:target: https://www.nsf.gov
.. image:: https://i.imgur.com/3enQ6S8.jpg
:alt: Northrop Grumman
:target: http://www.northropgrumman.com/Pages/default.aspx
If 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.
.. |Travis Status| image:: https://travis-ci.org/scikit-optimize/scikit-optimize.svg?branch=master
:target: https://travis-ci.org/scikit-optimize/scikit-optimize
.. |CircleCI Status| image:: https://circleci.com/gh/scikit-optimize/scikit-optimize/tree/master.svg?style=shield&circle-token=:circle-token
:target: https://circleci.com/gh/scikit-optimize/scikit-optimize
.. |Logo| image:: https://avatars2.githubusercontent.com/u/18578550?v=4&s=80
.. |binder| image:: https://mybinder.org/badge.svg
:target: https://mybinder.org/v2/gh/scikit-optimize/scikit-optimize/master?filepath=examples
.. |gitter| image:: https://badges.gitter.im/scikit-optimize/scikit-optimize.svg
:target: https://gitter.im/scikit-optimize/Lobby
.. |Zenodo DOI| image:: https://zenodo.org/badge/54340642.svg
:target: https://zenodo.org/badge/latestdoi/54340642
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
scikit-optimize-w-2018.3.9.tar.gz
(88.5 kB
view hashes)
Built Distribution
Close
Hashes for scikit-optimize-w-2018.3.9.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 163e55e1c2f1e6072ce8f21654a176679c434802112c514771f4561fafc722a1 |
|
MD5 | 0b752be88e4cc66505c19e4d0a450dec |
|
BLAKE2b-256 | dce2fa8c65709dc99a60a0cfb1987afea166bfd9a137d161d399d7eb08e597df |
Close
Hashes for scikit_optimize_w-2018.3.9-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1b52a71212e3ded03d6e94f70ae23484ce3997f1dec3f4b3c87ca67097ce2564 |
|
MD5 | dafb2772567d14f3ce1652e057b20a23 |
|
BLAKE2b-256 | e496574d3d639c30f1b9c57ad11e7634998db00317d1e7b74aee834b4ef810a6 |