SciPy为非线性最小二乘问题提供了两个函数:
optimize.leastsq()
仅使用Levenberg-Marquardt算法。
optimize.least_squares()
允许我们选择Levenberg-Marquardt,Trust Region Reflective或Trust Region Dogleg算法。
我们是否应始终使用least_squares()
代替leastsq()
?
如果是的话,后者的目的是什么?
答案 0 :(得分:14)
我们是否应该总是使用least_squares()而不是leastsq()?
是
如果是的话,后者的目的是什么?
向后兼容性。
least_squares
函数是0.17.1中的新函数。其documentation将leastsq
称为
Levenberg-Marquadt算法的MINPACK实现的传统包装器。
当选择方法时,original commit引入least_squares
实际上称为leastsq
。' lm'但贡献者(Nikolay Mayorov)然后decided that
如果我向MINPACK函数编写一个新的包装器而不是调用leastsq,那么least_squares可能会感觉更加稳固和同质。
所以他做到了。因此,leastsq
不再需要least_squares
,但我希望它至少保留一段时间,以避免破坏旧代码。