东方耀AI技术分享

标题: numpy实现多项式拟合(np.polyfit np.poly1d) [打印本页]

作者: 东方耀    时间: 2019-12-12 13:41
标题: numpy实现多项式拟合(np.polyfit np.poly1d)


numpy实现多项式拟合(np.polyfit np.poly1d)


# 最小二乘法 多项式拟合 线性回归里的 PolynomialFeatures


  1. # 多项式拟合(从给定的x,y中解析出最接近数据的方程式)
  2. # 要拟合的x,y数据
  3. x = np.arange(1, 17, 1)
  4. 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])
  5. assert len(x) == len(y)
  6. z1 = np.polyfit(x, y, deg=3)  # 3为多项式最高次幂,结果为多项式的各个系数
  7. # 最高次幂3,得到4个系数,从高次到低次排列
  8. # 最高次幂取几要视情况而定
  9. p1 = np.poly1d(z1)  # 将系数代入方程,得到函式p1
  10. print('z1=', z1)  # 多项式系数
  11. print('p1=', p1)  # 多项式方程
  12. print('p1(18)=', p1(18))  # 调用,输入x值,得到y
  13. x1 = np.linspace(x.min(), x.max(), 100)  # x给定数据太少,方程曲线不光滑,多取x值得到光滑曲线
  14. pp1 = p1(x1)  # x1代入多项式,得到pp1,代入matplotlib中画多项式曲线
  15. plt.rcParams['font.sans-serif'] = ['SimHei']  # 显示中文
  16. plt.scatter(x, y, color='g', label='散点图')  # x,y散点图
  17. plt.plot(x, y, color='r', label='连线图')  # x,y线形图
  18. plt.plot(x1, pp1, color='b', label='拟合图')  # 100个x及对应y值绘制的曲线
  19. # 可应用于各个行业的数值预估
  20. plt.legend(loc='best')
  21. # plt.show()
  22. plt.savefig('polyfit888.png', dpi=400, bbox_inches='tight')
复制代码










欢迎光临 东方耀AI技术分享 (http://www.ai111.vip/) Powered by Discuz! X3.4