问题 SciPy:leastsq vs least_squares


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

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

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

我们应该一直使用吗? least_squares() 代替 leastsq()

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


11537
2017-12-24 17:02


起源



答案:


简短的回答

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

是。

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

向后兼容性。

说明

least_squares 功能是0.17.1中的新功能。它的 文件 是指 leastsq 如

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

原始提交 引入 least_squares 实际上叫 leastsq 当该方法被选为'lm'时。但贡献者(尼古拉·马约罗夫)则 决定了 

如果我向MINPACK函数编写一个新的包装器而不是调用leastsq,那么least_squares可能会感觉更加稳固和同质。

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


12
2017-12-24 21:45