如何解决了解facebook的先知
我无法理解 facebook 的先知的交叉验证。我有一个 ARIMA 模型,该模型将数据拆分为训练集和测试集,并通过使用训练集拟合模型来执行滚动预测,并为测试集上的每个元素生成预测。
def ARIMA_forecast(series):
X = series.values
size = int(len(X) * 0.85)
train,test = X[0:size],X[size:len(X)]
history = [x for x in train]
predictions = list()
for t in range(len(test)):
model = ARIMA(history,order=(3,1,3))
model_fit = model.fit(disp=0)
output = model_fit.forecast()
yhat = output[0]
predictions.append(yhat)
obs = test[t]
history.append(obs)
print('predicted=%f,expected=%f' % (yhat,obs))
plt.plot(series,label='Training data')
plt.plot(series[size:len(X)].index,test,color='blue',label='Actual Price')
plt.plot(series[size:len(X)].index,predictions,color='red',label='Predicted Price')
plt.legend()
plt.show()
我想用我的数据实现与 prophet 类似的事情,但我很难理解 Prophet 的交叉验证功能。目前我有这个功能:
def prophet_forecast(data):
data['Date'] = to_datetime(data['Date'])
data = data.rename(columns={"Date": "ds","Adj Close": "y"})
m = Prophet()
size = int(len(data) * 0.85)
train = data.loc[0:size]
m.fit(train)
df_cv = cross_validation(m,initial=size,period=1,horizon=int(len(data)) - size)
prophet 文档中提供的示例使用每日数据,但在我的数据集中,观察结果各不相同,而且时间不一致。我的目标是做出类似于 onein ARIMA 模型的预测。我想将数据分成训练集和测试集,将模型与训练集拟合,并对数据集的其余部分进行预测,并将它们与测试集进行比较。在我的示例中,如果我理解正确,我将初始设置为大小,因为这是我想要的训练数据量,地平线设置为测试集的大小,最后我将周期设置为 1,因为我想滚动通过为测试集上的每个元素生成预测来预测。然而,这似乎是不正确的,我只是不知道如何在非日常数据时设置 cross_validaion 参数。
我的数据集是 1 年的 Facebook 股价: https://finance.yahoo.com/quote/FB/history?p=FB
我怎样才能实现我的目标?有没有人做过类似的事情并且可以分享他们的代码?我完全误解了 cross_validation 函数吗?
感谢任何帮助。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。