python - Scipy 优化 Curve_fit 边界错误

标签 python python-3.x scipy curve-fitting bounds

当我尝试运行时:

bet = (nu[minimum],10**4,3000,0,0,5000)   # Array of initial bet parameters
bound = ( (nu[0],nu[len(nu)-1]),(10**3,10**6),(-np.inf,np.inf),(-np.inf,np.inf),(-np.inf,np.inf),(-np.inf,np.inf) )
popt,pcov = curve_fit(S_21,x,y, p0=bet, bounds = bound)

TypeError: leastsq() got an unexpected keyword argument 'bounds'

有什么问题吗?我在 Windows 上使用 Python 3.4.4。

最佳答案

scipy.optimize.leastsq 不支持边界,在 scipy 版本 0.17 之前由 curve_fit 使用。 OTOH,scipy.optimize.least_squares(在较新版本的 scipy 中由 curve_fit 使用)可以支持边界,但在使用 lm 时不支持> (Levenberg-Marquardt) 方法,因为它是 scipy.optimize.leastsq 的简单包装。这有点令人困惑。

请允许我推荐尝试 lmfit ( http://lmfit.github.io/lmfit-py/ ),它确实支持所有参数的界限,并且可以轻松修复/更改参数,而无需更改模型函数。 Lmfit 通过其 Model 类提供了一种便捷的曲线拟合方法,以及大量用于探索参数置信区间的工具。

关于python - Scipy 优化 Curve_fit 边界错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44245026/

相关文章:

python - bs4 `next_sibling` VS `find_next_sibling`

php - MySQL DB,通过Python-PHP发送多条数据到服务器

Python 发送已知字节

python - PyQt4 导致 QThread 错误

python - 测试枚举列表中的成员身份失败

python - 为什么我的函数在 IDLE 中比 python 的 print 函数更快?

python - NoneType 类是否继承对象类?

python插值需要很长时间

python - 不要打印 "optimization terminated successfully"scipy.optimize.fmin?

python - 求解隐式 ODE(微分代数方程 DAE)