Jdo*_*dog 9 python numpy curve-fitting scipy
我目前正在使用numpy.polyfit(x,y,deg)来将多项式拟合到实验数据.然而,我想拟合一个基于点的误差使用加权的多项式.
我找到了使用权重的scipy.curve_fit,我想我可以将函数'f'设置为我所需顺序的多项式,并将我的权重放在'sigma'中,这应该达到我的目标.
我想知道还有另一个更好的方法吗?
非常感谢.
Rol*_*tra 15
对于加权多项式拟合,您可以使用:
numpy.polynomial.polynomial.polyfit(x, y, deg, rcond=None, full=False, w=weights)
Run Code Online (Sandbox Code Playgroud)
见http://docs.scipy.org/doc/numpy/reference/generated/numpy.polynomial.polynomial.polyfit.html
重要的是要注意,在这个函数中,不应该提供权重1/variance(这是许多加权应用程序中的常用形式),但是1/sigma
虽然curve_fit和leastsq有更全面和强大的优化工具比polyfit(因为它们能适应刚刚任何功能),polyfit有它产生的(精确)的解析解,因此可能比迭代近似方法,如更快的优势curve_fit和leastsq-尤其是在将多项式拟合到多组y数据(在相同的x向量上获得)的情况
更新:从numpy版本1.7开始,numpy.polyfit也将权重作为输入(理想情况下应该提供1/sigma,不是1/variance)
请查看http://scipy-cookbook.readthedocs.io/items/FittingData.html,特别是"为有错误的数据拟合幂律"部分.它显示了如何使用包含错误加权的函数scipy.optimize.leastsq.
| 归档时间: |
|
| 查看次数: |
26941 次 |
| 最近记录: |