9.多项式拟合

来源:互联网 发布:淘宝抠图兼职怎么找 编辑:程序博客网 时间:2024/05/05 02:51

一系列的散点可以用函数去拟合,而任何一个连续可微函数都可以展开为一个多次多项式表示(微积分中的泰勒展开式).
我们用一个三次多项式去拟合某一个股票的收盘价变化,我的文件中的前两行是股票代码和编号,所以我们用skiprows=(2)来过滤掉.这是我下载的数据:
数据
我们只用第一列先:

numpy.polyfit(x, y, deg, rcond=None, full=False, w=None, cov=False)
x,y,deg分别是多项式的x值,y值和次数,其中x,y都是数组

import numpy as npimport sys,osdatas=np.loadtxt('/home/syd/Documents/stockdata.csv',delimiter=',',skiprows=(2),usecols=(6,),unpack=True)t=np.arange(len(datas))poly=np.polyfit(t,datas,int(sys.argv[1]))print ("polynomial fit",poly)

下面是输出结果,给出了每一项的系数

polynomial fit [ -1.35119250e-08   6.01590681e-05  -9.04311066e-02   1.09359604e+02]

我们将拟合后的函数和原来的数据一同画出:
需要import matplotlib.pyplot as plt
np.polyval()方法是获取poly这个多项式的对应x的值

plt.plot(t,datas)plt.plot(t,np.polyval(poly,t))plt.show()

这里写图片描述

**我们求得的拟合函数,具有连续函数的性质,
np.polyder(poly),求poly这个多项式的导函数
np.roots(poly),求多项式值为0时的值(根)
vals=np.polyval(poly,t),求多项式在x=t时的值,t为数组,可表示一定x取值范围
np.argmax(vals),求最大值
np.argmin(vals),求最小值**

我们的拟合效果一般,还有很多可以改进的地方,比如不是用三次方函数,或者使用数据之前对数据进行平滑处理等等.

原创粉丝点击