东方耀AI技术分享

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 2391|回复: 0
打印 上一主题 下一主题

[课堂笔记] numpy实现多项式拟合(np.polyfit np.poly1d)

[复制链接]

1365

主题

1856

帖子

1万

积分

管理员

Rank: 10Rank: 10Rank: 10

积分
14437
QQ
跳转到指定楼层
楼主
发表于 2019-12-12 13:41:46 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式


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')
复制代码





polyfit888.png (116.99 KB, 下载次数: 157)

polyfit888.png
让天下人人学会人工智能!人工智能的前景一片大好!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|人工智能工程师的摇篮 ( 湘ICP备2020019608号-1 )

GMT+8, 2024-5-2 16:42 , Processed in 0.193178 second(s), 22 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表