上一篇中,我们发现knn和线性回归一样,表现的不是特别好,来看看时间序列的表现

时间序列预测法其实是一种回归预测方法,属于定量预测,其基本原理是;一方面承认事物发展的延续性,运用过去时间序列的数据进行统计分析,推测出事物的发展趋势;另一方面充分考虑到偶然因素影响而产生的随机性,为了消除随机波动的影响,利用历史数据进行统计分析,并对数据进行适当处理,进行趋势预测。

自动ARIMA

ARIMA是一种非常流行的时间序列预测统计方法。ARIMA模型使用过去的值来预测未来的值。ARIMA中有三个重要参数:

  • p(用来预测下一个值的过去值)

  • q(用来预测未来值的过去预测误差)

  • d(差分的顺序)

ARIMA的参数优化需要大量时间。因此我们将使用自动 ARIMA,自动选择误差最小的(p,q,d)最佳组合。

顺便插一句,如果不使用自动选择误差的话,你可以通过计算数据的差分,作图然后手动选择p d q的大小,如果你对这一个方向感兴趣,可以小窗我或者底下留言,在这里不多做介绍。

#导入库

from pyramid.arima import auto_arima

#按照索引排序

data = df.sort_index(ascending=True, axis=0)

#划分训练集、测试集

train = data[:987]

valid = data[987:]

# 取出两个集合中close这列的数据,第二行不是很清楚感觉没用到,知道的大佬留言区指点迷津

training = train['Close']

validation = valid['Close']

#建立模型(自动选择参数)

model = auto_arima(training, start_p=1, start_q=1,max_p=3, max_q=3, m=12,start_P=0, seasonal=True,d=1, D=1, trace=True,error_action='ignore',suppress_warnings=True)

model.fit(training)

#预测

forecast = model.predict(n_periods=248)

forecast = pd.DataFrame(forecast,index = valid.index,columns=['Prediction'])

结果

#计算rms

rms=np.sqrt(np.mean(np.power((np.array(valid['Close'])-np.array(forecast['Prediction'])),2)))

#下面两行为结果,可不执行

rms

44.954584993246954

#plot绘图 训练的close,测试的close 和预测值

plt.plot(train['Close'])

plt.plot(valid['Close'])

plt.plot(forecast['Prediction'])

推论

正如我们前面看到的,自动ARIMA模型使用过去的数据来理解时间序列中的模式。利用这些值,该模型捕捉到该系列中的增长趋势。

虽然使用这种技术的预测比以前实现的机器学习模型的预测要好得多,但是这些预测仍然与实际值相距甚远。

从图中可以明显看出,该模型在序列中捕捉到了一种趋势,但忽略了季节的影响。

参考:https://www.jiqizhixin.com/articles/2019-01-04-16

最新文章

  1. aspcms,2.x以上版本,保护栏目不可删除处理方法
  2. CentOS怎样强制卸载PHP以及自定义安装PHP
  3. setbuf
  4. [转]sql server 数据库日期格式化函数
  5. Vijos P1325桐桐的糖果计划
  6. PHP的curl实现get,post 和 cookie(实例)
  7. Contest 20140923 登月计划 BabyStepGaintStep
  8. 报错:tr was not declared in this scope
  9. Python-xml解析常用方法简介
  10. qt button以及label实现不规则图形(五种方法:使用QSS,设置Mask图片,自己画)
  11. setprecision、fixed、showpoint的用法总结(经典!!超经典!!)
  12. 【BZOJ1857】传送带(三分)
  13. 两条比较实用的mysql导入导出命令
  14. Vijos1982 NOIP2015Day2T2 子串 substring 动态规划
  15. 2018-03-11 20165235祁瑛《Java程序设计》第二周学习总结
  16. [IR] Bigtable: A Distributed Storage System for Semi-Structured Data
  17. 唯品会RPC服务框架与容器化演进--转
  18. python列表,元组,字典和字符串之间的相互转换
  19. java堆溢出
  20. HTTP与HTTPS相关知识

热门文章

  1. ELK学习实验015:日志的自定义index配置
  2. laravle中orm简单的增删改查
  3. 1、微服务--为什么有consul,consul注册,心跳检测,服务发现
  4. centos7最小版配置
  5. Hadoop的完全分布式搭建
  6. localStorage存、取数组
  7. C++——指针4
  8. RN开发-组件View,Text
  9. C/C++ Windows API——获取系统指定目录(转)
  10. SpringMVC处理中文乱码