允许我为参数分配边界的 Python 曲线拟合库

标签 python scipy numeric curve-fitting pyminuit

我希望能够执行拟合,允许我将任意曲线函数拟合到数据,并允许我设置参数的任意边界,例如我想要拟合函数:

f(x) = a1(x-a2)^a3\cdot\exp(-\a4*x^a5)

然后说:

  • a2 在以下范围内:(-1, 1)
  • a3a5 为正数

有不错scipy curve_fit函数,但它不允许指定参数范围。还有不错的http://code.google.com/p/pyminuit/进行通用最小化的库,它允许设置参数的界限,但在我的例子中它没有涵盖。

最佳答案

注意:SciPy 0.17 版本的新内容

假设您要为数据拟合一个模型,如下所示:

y=a*t**alpha+b

以及对 alpha 的约束

0<alpha<2

而其他参数 a 和 b 保持自由。然后我们应该按以下方式使用 curve_fit 的 bounds 选项:

import numpy as np
from scipy.optimize import curve_fit
def func(t, a,alpha,b):
     return a*t**alpha+b
param_bounds=([-np.inf,0,-np.inf],[np.inf,2,np.inf])
popt, pcov = curve_fit(func, xdata, ydata,bounds=param_bounds)

来源是here .

关于允许我为参数分配边界的 Python 曲线拟合库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16760788/

相关文章:

python - 快速加权散点矩阵计算

python - 重新加载 SciPy 时出错

MySQL如何获取varchar中特殊字符后的数值

floating-point - IEEE 754 标准中哪里指定了 `Inf * 0` 的结果?

python - pyinstaller有时找不到Matplotlib后端TkAgg

python - 在不复制的情况下将 C 数组绑定(bind)到 Numpy 数组

Python 多处理似乎不使用多个内核

python - 从 pmdarima : ERROR : cannot import name 'factorial' from 'scipy.misc' 导入 auto_arima 时

python - odeint方程组的动态生成

arrays - 如何在 MATLAB 中将元胞数组转换为数值数组?