SciPy为非线性最小二乘问题提供了两个函数:
optimize.leastsq()
仅使用Levenberg-Marquardt算法。
optimize.least_squares()
允许我们选择Levenberg-Marquardt,Trust Region Reflective或Trust Region Dogleg算法。
我们应该一直使用吗? least_squares()
代替 leastsq()
?
如果是这样,后者的目的是什么?
SciPy为非线性最小二乘问题提供了两个函数:
optimize.leastsq()
仅使用Levenberg-Marquardt算法。
optimize.least_squares()
允许我们选择Levenberg-Marquardt,Trust Region Reflective或Trust Region Dogleg算法。
我们应该一直使用吗? least_squares()
代替 leastsq()
?
如果是这样,后者的目的是什么?
我们应该总是使用least_squares()而不是leastsq()吗?
是。
如果是这样,后者的目的是什么?
向后兼容性。
该 least_squares
功能是0.17.1中的新功能。它的 文件 是指 leastsq
如
用于Levenberg-Marquadt算法的MINPACK实现的传统包装器。
该 原始提交 引入 least_squares
实际上叫 leastsq
当该方法被选为'lm'时。但贡献者(尼古拉·马约罗夫)则 决定了
如果我向MINPACK函数编写一个新的包装器而不是调用leastsq,那么least_squares可能会感觉更加稳固和同质。
所以他做到了。所以, leastsq
不再需要了 least_squares
,但我希望它至少保留一段时间,以避免破坏旧代码。