东方耀AI技术分享
标题:
numpy实现多项式拟合(np.polyfit np.poly1d)
[打印本页]
作者:
东方耀
时间:
2019-12-12 13:41
标题:
numpy实现多项式拟合(np.polyfit np.poly1d)
numpy实现多项式拟合(np.polyfit np.poly1d)
# 最小二乘法 多项式拟合 线性回归里的 PolynomialFeatures
# 多项式拟合(从给定的x,y中解析出最接近数据的方程式)
# 要拟合的x,y数据
x = np.arange(1, 17, 1)
y = np.array([4.00, 6.40, 8.00, 8.80, 9.22, 9.50, 9.70, 9.86, 10.00, 10.20, 10.32, 10.42, 10.50, 10.55, 10.58, 10.60])
assert len(x) == len(y)
z1 = np.polyfit(x, y, deg=3) # 3为多项式最高次幂,结果为多项式的各个系数
# 最高次幂3,得到4个系数,从高次到低次排列
# 最高次幂取几要视情况而定
p1 = np.poly1d(z1) # 将系数代入方程,得到函式p1
print('z1=', z1) # 多项式系数
print('p1=', p1) # 多项式方程
print('p1(18)=', p1(18)) # 调用,输入x值,得到y
x1 = np.linspace(x.min(), x.max(), 100) # x给定数据太少,方程曲线不光滑,多取x值得到光滑曲线
pp1 = p1(x1) # x1代入多项式,得到pp1,代入matplotlib中画多项式曲线
plt.rcParams['font.sans-serif'] = ['SimHei'] # 显示中文
plt.scatter(x, y, color='g', label='散点图') # x,y散点图
plt.plot(x, y, color='r', label='连线图') # x,y线形图
plt.plot(x1, pp1, color='b', label='拟合图') # 100个x及对应y值绘制的曲线
# 可应用于各个行业的数值预估
plt.legend(loc='best')
# plt.show()
plt.savefig('polyfit888.png', dpi=400, bbox_inches='tight')
复制代码
欢迎光临 东方耀AI技术分享 (http://www.ai111.vip/)
Powered by Discuz! X3.4