如何预测股票分析--先知(Prophet)

上一篇中,我们探讨了自动ARIMA,但是好像表现的还是不够完善,接下来看看先知的力量!

先知(Prophet)

有许多时间序列技术可以用在股票预测数据集上,但是大多数技术在拟合模型之前需要大量的数据预处理。Prophet(先知)由Facebook设计和开发,是一个时间序列预测库,不需要数据预处理,并且非常容易实现。先知的输入是一个带有两列的数据框:日期和目标(ds和y)。

时间序列预测一直是预测问题中的难点,人们很难找到一个适用场景丰富的通用模型,这是因为现实中每个预测问题的背景知识,例如数据的产生过程,往往是不同的,即使是同一类问题,影响这些预测值的因素与程度也往往不同,再加上预测问题往往需要大量专业的统计知识,这又给分析人员带来了难度,这些都使得时间序列预测问题变得尤其复杂。传统的时间序列预测方法通常有如下缺陷:

1. 适用的时序数据过于局限
    2. 缺失值需要填补
    3. 模型缺乏灵活性
    4. 指导作用较弱
    2017年2月24号facebook开源了时间序列预测框架prophet,目前支持R语言和python语言。托管在github上:https://github.com/facebookincubator/prophet。prophet是基于可分解(趋势+季节+节假日)模型的开源库,Prophet充分的将业务背景知识和统计知识融合起来,它让我们可以用简单直观的参数进行高精度的时间序列预测,并且支持自定义季节和节假日的影响。

Prophet官方文档:https://facebook.github.io/prophet/
Prophet论文:https://peerj.com/preprints/3190/
Prophet-github:https://github.com/facebook/prophet

先知试图在过去的数据中捕捉季节性,并且在数据集很大的时候依然表现良好。

#importing prophet 导入库函数

from fbprophet import Prophet

#creating dataframe 建立新的数据集框架,以长度为索引,取date和close这两列

new_data = pd.DataFrame(index=range(0,len(df)),columns=[‘Date‘, ‘Close‘])

#给这个框架灌输数据

for i in range(0,len(data)):

new_data[‘Date‘][i] = data[‘Date‘][i]

new_data[‘Close‘][i] = data[‘Close‘][i]

#对于数据内容表现形式的转换,这里是转化为年-月-日的格式,同时建立以这个时间的索引

new_data[‘Date‘] = pd.to_datetime(new_data.Date,format=‘%Y-%m-%d‘)

new_data.index = new_data[‘Date‘]

#preparing data对数据集的列名重命名

new_data.rename(columns={‘Close‘: ‘y‘, ‘Date‘: ‘ds‘}, inplace=True)

#train and validation划分训练集和测试集

train = new_data[:987]

valid = new_data[987:]

#fit the model建立模型,给模型喂训练集

model = Prophet()

model.fit(train)

#predictions 预测,make_future_datafram是库自带的函数,新建一个数据框,指明需要预测到将来多长时间

close_prices = model.make_future_dataframe(periods=len(valid))

forecast = model.predict(close_prices)

结果

#rmse 计算rms

forecast_valid = forecast[‘yhat‘][987:]

rms=np.sqrt(np.mean(np.power((np.array(valid[‘y‘])-np.array(forecast_valid)),2)))

rms

57.494461930575149

#plot 绘图(老三样)

valid[‘Predictions‘] = 0

valid[‘Predictions‘] = forecast_valid.values

plt.plot(train[‘y‘])

plt.plot(valid[[‘y‘, ‘Predictions‘]])

推论

先知(像大多数时间序列预测技术一样)试图从过去的数据中捕捉趋势和季节性。该模型通常在时间序列数据集上表现良好,但在本例中没有达到预期效果。

事实证明,股票价格没有特定的趋势或季节性。价格的涨跌很大程度上取决于目前市场上的情况。因此,像ARIMA、SARIMA和Prophet这样的预测技术并不能很好地解决这个特殊的问题。

跟多的关于理论的知识,你可以访问

https://blog.csdn.net/h4565445654/article/details/78398089  fbProphe时序预测----论文总结以及调参思路

http://blog.51cto.com/13591395/2066888 腾讯技术工程 | 基于Prophet的时间序列预测

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

原文地址:https://www.cnblogs.com/xingnie/p/12232234.html

时间: 2024-11-12 22:39:59

如何预测股票分析--先知(Prophet)的相关文章

如何预测股票分析--移动平均

近年来,随着全球经济与股市的快速发展,股票投资成为人们最常用的理财方式之一.本文研究的主要目标是利用机器学习技术,应用Python编程语言构建股票预测模型,对我国股票市场进行分析与预测. 今天主要来回顾的是 移动平均 参考机器之心的文章,对代码进行了中文的解释,同时加入了自己的见解 首先来处理一下数据,选用的是来自塔塔饮料的数据集,获取数据的方式可以查看 传送门 #import packages 导入pandas.numpy库 import pandas as pd import numpy a

如何预测股票分析--线性回归

继续上一篇,接下来是股票分析中使用线性回归 在现实世界中,存在着大量这样的情况:两个变量例如X和Y有一些依赖关系.由X可以部分地决定Y的值,但这种决定往往不很确切.常常用来说明这种依赖关系的最简单.直观的例子是体重与身高,用Y表示他的体重.众所周知,一般说来,当X大时,Y也倾向于大,但由X不能严格地决定Y.又如,城市生活用电量Y与气温X有很大的关系.在夏天气温很高或冬天气温很低时,由于室内空调.冰箱等家用电器的使用,可能用电就高,相反,在春秋季节气温不高也不低,用电量就可能少.但我们不能由气温X

如何预测股票分析--长短期记忆网络(LSTM)

在上一篇中,我们回顾了先知的方法,但是在这个案例中表现也不是特别突出,今天介绍的是著名的l s t m算法,在时间序列中解决了传统r n n算法梯度消失问题的的它这一次还会有令人杰出的表现吗? 长短期记忆(Long Short-Term Memory) 是具有长期记忆能力的一种时间递归神经网络(Recurrent Neural Network). 其网络结构含有一个或多个具有可遗忘和记忆功能的单元组成.它在1997年被提出用于解决传统RNN(Recurrent Neural Network) 的

如何预测股票分析--k-近邻

在上一篇中,我们学习了线性回归,这一次来看看k近邻的表现 K最近邻(k-Nearest Neighbor,KNN)分类算法,是一个理论上比较成熟的方法,也是最简单的机器学习算法之一.该方法的思路是:在特征空间中,如果一个样本附近的k个最近(即特征空间中最邻近)样本的大多数属于某一个类别,则该样本也属于这个类别. #importing libraries #导入相对应的库函数(第一个是用来使用k n n的,第二个是用来网格搜索,第三个用来归一化) from sklearn import neigh

如何预测股票分析--自动ARIMA

在上一篇中,我们发现knn和线性回归一样,表现的不是特别好,来看看时间序列的表现 时间序列预测法其实是一种回归预测方法,属于定量预测,其基本原理是;一方面承认事物发展的延续性,运用过去时间序列的数据进行统计分析,推测出事物的发展趋势:另一方面充分考虑到偶然因素影响而产生的随机性,为了消除随机波动的影响,利用历史数据进行统计分析,并对数据进行适当处理,进行趋势预测. 自动ARIMA ARIMA是一种非常流行的时间序列预测统计方法.ARIMA模型使用过去的值来预测未来的值.ARIMA中有三个重要参数

用贝叶斯判别分析再次预测股票涨跌情况

可以转载,禁止修改.转载请注明作者以及原文链接 注:本文是从贝叶斯分类器的角度来讨论判别分析,有关贝叶斯分类器的概念可参考文末延伸阅读第1-2篇文章.至于Fisher判别分析,未来会连同PCA一同讨论. 判别分析也是一种分类器,与逻辑回归相比,它具有以下优势: 当类别的区分度高的时候,逻辑回归的参数估计不够稳定,它点在线性判别分析中是不存在的: 如果样本量n比较小,而且在每一类响应变量中预测变量X近似服从正态分布,那么线性判别分析比逻辑回归更稳定: 多于两类的分类问题时,线性判别分析更普遍. 贝

逻辑回归模型预测股票涨跌

http://www.cnblogs.com/lafengdatascientist/p/5567038.html 逻辑回归模型预测股票涨跌 逻辑回归是一个分类器,其基本思想可以概括为:对于一个二分类(0~1)问题,若P(Y=1/X)>0.5则归为1类,若P(Y=1/X)<0.5,则归为0类. 一.模型概述 1.Sigmoid函数 为了具象化前文的基本思想,这里介绍Sigmoid函数: 函数图像如下: 红色的线条,即x=0处将Sigmoid曲线分成了两部分:当 x < 0,y <

股票分析之沪深大盘资金分析

沪深的大盘主力资金是大盘指数上涨的动力,在工具中,大盘资金在 股票分析=>股票分析->MyForm中,如下图:     查看截止11月13日的大盘资金情况如下:

实测 《Tensorflow实例:利用LSTM预测股票每日最高价(二)》的结果

近期股市行情牛转熊,大盘一直下探!由3200跌到了2700,想必很多人被深套了.这时想起人工智能能否预测股市趋势?RNN能否起作用? 这时便从网上找下教程,发现网上有个例子,便拿来一试!Tensorflow实例:利用LSTM预测股票每日最高价(二) 这个实例大体上没有大问题,只是有些小细节有问题!要想直接复制运行,是会报错的.首先整下代码过程原作者已经写得很清楚了,但对于初学者来讲,有些地方还是不太明白的.我作为一个初学者,先来谈谈我在整个实测中的收获吧! 实例的思路:通过tushare可以获取