【Python】np.polyfit点拟合曲线

【Python】np.polyfit点拟合曲线

最近在学习python数据分析,做个笔记记录一下代码,今天是用numpy拟合了一组数据。

先贴拟合的效果出来,蓝色的点是用np生成的20个点,红线是拟合出来的曲线:

下面是代码:

import matplotlib.pyplot as plt

import numpy as np

x = np.linspace(300,400,20)

y = x + np.random.random_integers(5,20,20) #随机取5到10中间20个数

poly = np.polyfit(x,y,deg=1)

z = np.polyval(poly, x)

plt.plot(x, y, 'o')

plt.plot(x, z)

plt.show()

代码可以分成三部分:

第一部分是生成数据,x是在300到400中间平分的取了20个点(包含300,400)生成一个数组;至于y是在x的每个元素上加了一个5-20之间的随机数的数组。相当于获得了20个点的坐标。第二部分是用polyfit函数,对x,y进行拟合(下面会介绍这个函数);拟合出的曲线对应的z值用polyval获得。第三部分就是绘图了。 下面详细介绍以下polyfit函数的参数以及返回值:这个函数前两个参数是x,y 也就是我们生成的两个20维的数组,代表要拟合的20个点。第三个参数1是你要拟合的多项式的最高阶阶数。比如你选择这个参数为1,即你想拟合一个有两项的多项式(最高阶为1),y=kx**1+bx**0,也就是一条直线,如果你选择参数为2(最高阶为2),就是拟合右边有三项的多项式:y=Lx**2+kx**1+bx**0,也就是一条抛物线。具体看下模块中的函数说明。

def polyfit(x, y, deg, rcond=None, full=False, w=None, cov=False):

"""

Least squares polynomial fit.

Fit a polynomial ``p(x) = p[0] * x**deg + ... + p[deg]`` of degree `deg`

to points `(x, y)`. Returns a vector of coefficients `p` that minimises

the squared error.

至于polyfit的返回值,可以打印一下上面代码中的poly看一下,是[k,b](如果你制定deg参数为2的话即返回抛物线的参数[L,k,b])。

numpy.polyfit — NumPy v1.21 Manual

相关内容

《百度贴吧》@他人教程
旧版彩票365下载

《百度贴吧》@他人教程

⌚ 07-27 👁️‍🗨️ 934

友情链接