如何预测股票分析--先知(Prophet)
在中,我们探讨了⾃动ARIMA,但是好像表现的还是不够完善,接下来看看先知的⼒量!
先知(Prophet)
有许多时间序列技术可以⽤在股票预测数据集上,但是⼤多数技术在拟合模型之前需要⼤量的数据预处理。Prophet(先知)由Facebook设计和开发,是⼀个时间序列预测库,不需要数据预处理,并且⾮常容易实现。先知的输⼊是⼀个带有两列的数据框:⽇期和⽬标(ds和y)。
时间序列预测⼀直是预测问题中的难点,⼈们很难找到⼀个适⽤场景丰富的通⽤模型,这是因为现实中每个预测问题的背景知识,例如数据的产⽣过程,往往是不同的,即使是同⼀类问题,影响这些预测值的因素与程度也往往不同,再加上预测问题往往需要⼤量专业的统计知识,这⼜给分析⼈员带来了难度,这些都使得时间序列预测问题变得尤其复杂。传统的时间序列预测⽅法通常有如下缺陷:
先知试图在过去的数据中捕捉季节性,并且在数据集很⼤的时候依然表现良好。北京学历教育
jigsawpuzzle#importing prophet 导⼊库函数
from fbprophet import Prophet
自考网365#creating dataframe 建⽴新的数据集框架,以长度为索引,取date和clo这两列
new_data = pd.DataFrame(index=range(0,len(df)),columns=['Date', 'Clo'])
#给这个框架灌输数据
for i in range(0,len(data)):
ygrnew_data['Date'][i] = data['Date'][i]
new_data['Clo'][i] = data['Clo'][i]
#对于数据内容表现形式的转换,这⾥是转化为年-⽉-⽇的格式,同时建⽴以这个时间的索引
new_data['Date'] = pd.to_datetime(new_data.Date,format='%Y-%m-%d')sport是什么意思
new_data.index = new_data['Date']
#preparing data对数据集的列名重命名
ame(columns={'Clo': 'y', 'Date': 'ds'}, inplace=True)
#train and validation划分训练集和测试集
train = new_data[:987]
valid = new_data[987:]
#fit the model建⽴模型,给模型喂训练集
model = Prophet()
model.fit(train)
wt
#predictions 预测,make_future_datafram是库⾃带的函数,新建⼀个数据框,指明需要预测到将来多长时间
2014江苏高考成绩clo_prices = model.make_future_dataframe(periods=len(valid))
forecast = model.predict(clo_prices)
结果
#rm 计算rms
forecast_valid = forecast['yhat'][987:]
rms=np.an(np.power((np.array(valid['y'])-np.array(forecast_valid)),2)))
rms
57.494461930575149
#plot 绘图(⽼三样)
reus
bionicvalid['Predictions'] = 0
valid['Predictions'] = forecast_valid.values
plt.plot(train['y'])
plt.plot(valid[['y', 'Predictions']])
推论
先知(像⼤多数时间序列预测技术⼀样)试图从过去的数据中捕捉趋势和季节性。该模型通常在时间序列数据集上表现良好,但在本例中没有达到预期效果。
事实证明,股票价格没有特定的趋势或季节性。价格的涨跌很⼤程度上取决于⽬前市场上的情况。因此,像ARIMA、SARIMA和Prophet这样的预测技术并不能很好地解决这个特殊的问题。updating是什么意思
跟多的关于理论的知识,你可以访问