SciPy:leastsq vs least_squares

vis*_*tor 16 scipy least-squares levenberg-marquardt

SciPy为非线性最小二乘问题提供了两个函数:

optimize.leastsq() 仅使用Levenberg-Marquardt算法.

optimize.least_squares() 允许我们选择Levenberg-Marquardt,Trust Region Reflective或Trust Region Dogleg算法.

我们应该总是用least_squares()而不是leastsq()吗?

如果是这样,后者的目的是什么?

小智 18

简短的回答

我们应该总是使用least_squares()而不是leastsq()吗?

是.

如果是这样,后者的目的是什么?

向后兼容性.

说明

least_squares功能是0.17.1中的新功能.它的文档是指leastsq作为

用于Levenberg-Marquadt算法的MINPACK实现的传统包装器.

当方法被选为'lm'时,实际调用的原始提交引入.但贡献者(Nikolay Mayorov)随后决定least_squaresleastsq

如果我向MINPACK函数编写一个新的包装器,而不是调用leastsq,那么least_squares可能会感觉更加可靠和均匀.

所以他做到了.因此,leastsq不再需要least_squares,但我希望它至少保留一段时间,以避免破坏旧代码.