Python之数据分析(numpy中的多项式拟合)

1、多项式拟合的概念
用一个无穷级数表示一个可微函数,任何可微的函数,总可以用一个N次多项式来近似,而比N次幂更高阶的部分可以作为无穷小量而被忽略不计。
f(x) = p0x^n + p1x^n-1 + p2x^n-2 + … + pn
y1 = f(x0)
y2 = f(x1)

yn = f(xn)

2、在numpy中求多项式拟合

  • numpy.polyfit(自变量数组, 函数值数组, 最高次幂数n)
    该方法将会返回[p0, p1, …, pn]多项式系数

3、获取每一项的值

  • numpy.polyval([p0, p1, …, pn], 自变量数组)
    返回多项式方程的根

4、求微分

  • numpy.polyder([p0, p1, …, pn])
    返回导函数系数数组

5、案例分析
首先得到两曲线数据的价差:

diff_closing_price = apple_closing_prices - beer_closing_prices

然后拟合出原函数:

p = np.polyfit(days, diff_closing_price, 5)

之后取值得原函数的系数:

poly_closing_price = np.polyval(p, days)

若进行微分,则还可以求根、取实数根:

# 导函数的系数,即微分函数
q = np.polyder(p)
# 求方程的根,导函数方程的根,拐点
roots = np.roots(q)
# 根是取实根,因此需要判断一下,数组中哪些是实数
reals = roots[np.isreal(roots)].real  # .real表示只取实部
# print(reals)
# 取实数中的每一个值
peeks = [[days[0], np.polyval(p, days[0])]]
for real in reals:
    if days[0]<real and real<days[-1]:
        peeks.append([real, np.polyval(p, real)])  # 拐点,和拐点对应的原函数值

6、多项式拟合案例源码

import datetime as dt
import numpy as np
import matplotlib.pylab as mp
import matplotlib.dates 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鸿蒙Next

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值