numpy多项式拟合函数polyfit的使用方法代码
作者:马红权
这篇文章主要给大家介绍了关于numpy多项式拟合函数polyfit的使用方法,np.polyfit是Numpy库中的一个函数,用于在最小二乘意义下拟合多项式曲线到数据点集,需要的朋友可以参考下
import numpy as np def fit(x,y,m,w): if len(x)<=m: return False xishu = np.polyfit(x,y,m,w=w) p = np.poly1d(xishu) # 构造多项式 yfit = p(x) # 拟合的y值 yresid = y - yfit # 残差 SSresid = sum(pow(yresid, 2)) # 残差平方和 SStotal = len(y) * np.var(y) # 总体平均方差 if SStotal==0:#水平线 r2=1 else: r2 = 1 - SSresid/SStotal # 拟合优度 return (xishu,r2,yfit) if __name__=="__main__": x = np.arange(0,5,0.1) z = [2+3*x+4*x**2 for x in x] y = np.array([np.random.normal(z,3) for z in z]) weight=[1 for one in x] print(fit(x,y,2,weight))
polyfit(x,y,m,w) 参数m为多项式的次数+1,w为权重。权重的含义是这个数据点的误差要乘以权重,低点给予高权重可以减少低点的误差,避免低点的相对误差过大。
自定义函数fit(x,y,m,w)的返回值 (xishu,r2,yfit)分别为系数、相关系数、拟合Y值。
过原点也可以通过权重实现。代码如下:
if must00: x=np.append(x,0)#.append(0) y=np.append(y,0)#y.append(0) w=np.append(w,100000000)#.append(10000) fit_r=fit(x,y,m,w) if fit_r: (xishu,r,y_fitted)=fit_r else: #fit error xishu=[0,1,0] y_fitted=x r=0
总结
到此这篇关于numpy多项式拟合函数polyfit使用的文章就介绍到这了,更多相关numpy多项式拟合函数polyfi内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!