前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >np.polyfit()与np.poly1d()将点拟合成曲线

np.polyfit()与np.poly1d()将点拟合成曲线

作者头像
小末快跑
发布2020-04-22 14:15:23
3.5K0
发布2020-04-22 14:15:23
举报
文章被收录于专栏:日常撸知识日常撸知识

polyfit函数可以使用最小二乘法将一些点拟合成一条曲线:

numpy.polyfit(x, y, deg)

x: 要拟合点的横坐标;

y: 要拟合点的纵坐标;

deg: 自由度.例如:自由度为2,那么拟合出来的曲线就是二次函数,自由度是3,拟合出来的曲线就是3次函数可。同时,还可以使用poly1d()函数帮我们拼接方程,结果是一样的。

举例说明:

一、画出如下点:

代码语言:javascript
复制
x=np.arange(1,8,0.1)
y=2*np.sin(2*x)+np.random.rand(len(x))
plt.scatter(x,y)
plt.show()

二、通过np.polyfit()与np.poly1d()将点拟合成曲线:

代码语言:javascript
复制
x=np.arange(1,8,0.1)
y=2*np.sin(2*x)+np.random.rand(len(x))
parameter=np.polyfit(x,y,4)
print(parameter)
p = np.poly1d(parameter)
plt.scatter(x,y)
plt.plot(x,p(x))
plt.show()
代码语言:javascript
复制
parameter=np.polyfit(x,y,4),设置自由度为四,也就是四次方函数。

print(parameter) 打印出函数的参数[ 0.03876277 , -0.69470974 , 4.34416326 ,-10.89309068 , 9.22108713],则此函数方程的形式为:

Y=0.03876277 * x ** 4 -0.69470974 * x ** 3 + 4.34416326 * x**2 + -10.89309068*x+9.22108713

自由度为4时拟合如图,效果不是很好:

增加自由度为8,拟合曲线靠近大部分点,拟合如图,如此调参,可以得到良好的拟合函数:

-----------------END------------------

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-04-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 小末快跑 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档