19

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

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

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

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

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

4

1 回答 1

21

简短的回答

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

是的。

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

向后兼容性。

解释

least_squares功能是 0.17.1 中的新功能。其文档leastsq称为_

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

当方法被选择为“lm”时,实际调用的原始提交引入。但是贡献者(尼古拉·马约罗夫)随后决定least_squaresleastsq

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

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

于 2016-12-24T21:45:50.247 回答