SciPy:leastsq vs least_squares

时间:2016-12-24 17:02:34

标签: scipy least-squares levenberg-marquardt

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

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

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

我们是否应始终使用least_squares()代替leastsq()

如果是的话,后者的目的是什么?

1 个答案:

答案 0 :(得分:14)

简短回答

  

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

  

如果是的话,后者的目的是什么?

向后兼容性。

解释

least_squares函数是0.17.1中的新函数。其documentationleastsq称为

  

Levenberg-Marquadt算法的MINPACK实现的传统包装器。

当选择方法时,original commit引入least_squares实际上称为leastsq。' lm'但贡献者(Nikolay Mayorov)然后decided that

  如果我向MINPACK函数编写一个新的包装器而不是调用leastsq,那么

least_squares可能会感觉更加稳固和同质。

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