python数据分析学习笔记——numpy来实现数据拟合

妖精的绣舞 提交于 2019-11-30 18:24:56

最近在学习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,即你想拟合一个有两项的多项式,y=kx**1+bx**0,也就是一条直线,如果你选择参数为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])。先写到这,后面会持续更新记录~~




易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!