9.多项式拟合

一系列的散点可以用函数去拟合,而任何一个连续可微函数都可以展开为一个多次多项式表示(微积分中的泰勒展开式).
我们用一个三次多项式去拟合某一个股票的收盘价变化,我的文件中的前两行是股票代码和编号,所以我们用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 np
import sys,os

datas=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),求最小值**

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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值