SciPy:最小平方对比 least_squares
SciPy: leastsq vs least_squares
SciPy为非线性最小二乘问题提供了两个函数:
optimize.leastsq()
仅使用 Levenberg-Marquardt 算法。
optimize.least_squares()
允许我们选择 Levenberg-Marquardt、Trust Region Reflective 或 Trust Region Dogleg 算法。
我们应该始终使用 least_squares()
而不是 leastsq()
吗?
如果是,后者的作用是什么?
简答
Should we always use least_squares() instead of leastsq()?
是的。
If so, what purpose does the latter serve?
向后兼容性。
说明
least_squares
函数是 0.17.1 中的新函数。它的 documentation 指的是 leastsq
作为
A legacy wrapper for the MINPACK implementation of the Levenberg-Marquadt algorithm.
original commit introducing least_squares
actually called leastsq
when the method was chosen to be 'lm'. But the contributor (Nikolay Mayorov) then decided that
least_squares might feel more solid and homogeneous if I write a new wrapper to MINPACK functions, instead of calling leastsq.
所以他做到了。因此,least_squares
不再需要 leastsq
,但我希望它至少保留一段时间,以避免破坏旧代码。
SciPy为非线性最小二乘问题提供了两个函数:
optimize.leastsq()
仅使用 Levenberg-Marquardt 算法。
optimize.least_squares()
允许我们选择 Levenberg-Marquardt、Trust Region Reflective 或 Trust Region Dogleg 算法。
我们应该始终使用 least_squares()
而不是 leastsq()
吗?
如果是,后者的作用是什么?
简答
Should we always use least_squares() instead of leastsq()?
是的。
If so, what purpose does the latter serve?
向后兼容性。
说明
least_squares
函数是 0.17.1 中的新函数。它的 documentation 指的是 leastsq
作为
A legacy wrapper for the MINPACK implementation of the Levenberg-Marquadt algorithm.
original commit introducing least_squares
actually called leastsq
when the method was chosen to be 'lm'. But the contributor (Nikolay Mayorov) then decided that
least_squares might feel more solid and homogeneous if I write a new wrapper to MINPACK functions, instead of calling leastsq.
所以他做到了。因此,least_squares
不再需要 leastsq
,但我希望它至少保留一段时间,以避免破坏旧代码。