跳转到主要内容

基于序列模型优化的工具箱。

项目描述

Logo

pypi conda Travis Status CircleCI Status binder gitter Zenodo DOI

Scikit-Optimize

Scikit-Optimize,或skopt,是一个简单且高效的库,用于最小化(非常)昂贵且噪声大的黑盒函数。它实现了几种基于序列模型优化的方法。skopt旨在在各种环境中易于访问和使用。

该库基于NumPy、SciPy和Scikit-Learn构建。

我们不执行基于梯度的优化。对于基于梯度的优化算法,请参阅此处scipy.optimize

Approximated objective

gp_minimize的50次迭代后近似目标函数。使用skopt.plots.plot_objective创建的图表。

安装

scikit-optimize需要

  • Python >= 3.6

  • NumPy (>= 1.13.3)

  • SciPy (>= 0.19.1)

  • joblib (>= 0.11)

  • scikit-learn >= 0.20

  • matplotlib >= 2.0.0

您可以使用以下命令安装最新版本

pip install scikit-optimize

这将安装scikit-optimize的必要版本。要安装具有绘图功能的scikit-optimize,您可以选择以下操作

pip install 'scikit-optimize[plots]'

这将安装matplotlib和scikit-optimize。

此外,还有一个 conda-forge 的 scikit-optimize 软件包。

conda install -c conda-forge scikit-optimize

使用 conda-forge 可能是 Windows 上安装 scikit-optimize 的一种最简单的方式。

入门指南

使用 skopt 在范围 -2 < x < 2 上找到噪声函数 f(x) 的最小值。

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)])

为了更好地控制优化循环,您可以使用 skopt.Optimizer 类。

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)

阅读我们的 贝叶斯优化简介 和其他 示例

开发

该库仍在实验阶段,处于高度开发中。查看 下一个里程碑 了解下一个版本的计划,或者查看一些 简单问题 开始贡献。

可以通过以下方式安装开发版本:

git clone https://github.com/scikit-optimize/scikit-optimize.git
cd scikit-optimize
pip install -e.

在顶层目录中执行 pytest 以运行所有测试。

要仅运行运行时间较短的测试子集,可以使用 pytest -m 'fast_test' (也可以使用 pytest -m 'slow_test')。要排除所有运行时间较慢的测试,请尝试 pytest -m 'not slow_test'

这是使用 pytest 属性 实现的。如果一个测试运行时间超过 1 秒,则将其标记为慢速,否则为快速。

所有贡献者都欢迎!

发布版本

发布流程几乎完全自动化。通过标记新版本,travis 将构建所有必需的包并将它们推送到 PyPI。要发布版本,请创建一个新的问题,并按照以下清单进行操作

  • 更新 __init__.py 中的版本标记

  • 更新 README 中提到的版本标记

  • 检查 setup.py 中的依赖项是否有效或需要解包

  • 检查 doc/whats_new/v0.X.rst 是否已更新

  • master 的最后一个构建成功了吗?

  • 创建一个 新版本

  • 联系 conda-forge

在发布版本之前,我们通常创建一个发布候选版本。如果下一个版本是 v0.X,则发布候选版本应在 __init__.py 中标记为 v0.Xrc1。在标记发布候选版本时,将其标记为“预发布”。

商业支持

如果您需要商业支持或希望赞助开发,请随时联系 tim@wildtreetech.com。资源将用于支付经验丰富的工程师和研究人员的额外工作。

由以下机构支持

scikit-optimize 项目得到了以下机构的支持

Wild Tree Tech NYU Center for Data Science NSF Northrop Grumman

如果您的雇主允许您在白天工作 scikit-optimize,并且希望得到认可,请随时将他们添加到“由以下机构支持”列表中。

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。

源代码分发

skoptimize-0.9.0.tar.gz (282.7 kB 查看哈希值)

上传时间 源码

构建版本

skoptimize-0.9.0-py2.py3-none-any.whl (100.9 kB 查看哈希值)

上传时间 Python 2 Python 3

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面