失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 趋势预测方法(一) 多项式拟合(最小二乘法)_函数拟合

趋势预测方法(一) 多项式拟合(最小二乘法)_函数拟合

时间:2020-03-08 05:50:29

相关推荐

趋势预测方法(一) 多项式拟合(最小二乘法)_函数拟合

多项式拟合(最小二乘法)

a基本原理:

b拟合函数原理:

c方法优缺点:

优点:

思想简单,实现容易。建模迅速,对于小数据量、简单的关系很有效。

解决回归问题,拥有很好的解释性。

是很多非线性模型的基础。

缺点:

对于非线性数据或者数据特征间具有相关性多项式回归难以建模。

当样本特征n非常大的时候会变的很耗时,难以很好的表达复杂的数据。

需要做预测的话需要数据大致满足多项式函数。

d算法入口:

该方法主要用到的函数是np.polyfit(x,y,deg,*args)

1.deg为需要拟合函数的最高次数。当deg=0时,y=a0。

2.其他参数*args在这里目前不需要讨论。

3.np.polyfit函数的返回值是拟合好之后的参数,按(an,……,a1)排序

4.该函数缺少对应的惩罚函数,待思考研究。

可以使用np.ploy1d()来加载函数,方便生成对应的y

e实例参考:

# -*- coding: utf-8 -*-'''多项式拟合(最小二乘法),这里的例子是三次方拟合'''import numpy as npfrom matplotlib import pyplot as pltdef func(x): # 原函数return x ** 3 - 3 * x + 1def trendline(x, y, n):model = np.polyfit(x, y, deg=n) # 拟合函数,输出参数return np.poly1d(model)# 作图,其中y1为原始数据,y2为拟合出来的数据def PLT(x1, y1, x2, y2):plt.scatter(x1, y1, color='blue')plt.plot(x1, func(x1), color='yellow', label='real')plt.plot(x2, y2, color='red', label='fit')plt.legend()plt.show()if __name__ == '__main__':# 生成300个时序坐标点(x,y),前250个点用于拟合,后50个点用于预测x = np.linspace(-3, 3, 300)y = func(x)y += np.random.randn(300) * 0.5 # 加上噪声ff = trendline(x[:250], y[:250], n=3)print(ff)PLT(x, y, x, np.poly1d(ff)(x))

运行结果如下

f参考文献:

机器学习--线性回归算法的原理及优缺点

/lsm-boke/p/11746274.html

知乎 最小二乘法(least sqaure method)

/p/38128785/

知乎 多项式曲线拟合

/p/53056358

如果觉得《趋势预测方法(一) 多项式拟合(最小二乘法)_函数拟合》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。