使用LSTM神经网络和Keras预测天气数据

我花了几个月的时间阅读了无数的帖子,但我仍然感到像最初一样困惑。希望有人能帮到我。

问题:我想使用时间序列来预测特定地点的天气数据。

设置:

X1X2 都是包含10年每日指数值的向量(每个向量总共3650个值)。

Y 是纽瓦克机场的温度时间序列(T),涵盖10年的每一天(3650天)。

有很强的理由表明 X1X2 可以用作 Y 的预测因子。所以我将所有数据分成100天的窗口,并创建以下内容:

X1 = (3650,100,1)X2 = (3650,100,1)

例如,窗口1包括从 t=0t=99 的值,窗口2包括从 t=1t=100 的值,依此类推。(假设我在末尾有足够的额外数据,我们仍然有3650个窗口)。

我从其他教程中学到,要进入Keras,我会这样做:

X = (3650,100,2) = (#_of_windows,window_length,#_of_predictors) 这是通过合并 X1X2 得到的。

然后我有以下代码:

model = Sequential()model.add(LSTM(1,return_sequences=True,input_shape=(100,2)))model.add(LSTM(4))model.add(Dropout(0.2))model.compile(loss='mean_square_error',optimizer='rmsprop',shuffle=True)model.fit(X,Y,batch_size=128,epochs=2) # Y is shape (3650,)predictions = model.predict(?????????????)

所以我的问题是,如何设置 model.predict 部分以获取未来 N 天的预测?有时候我可能需要2天的预测,有时候可能需要2周的。我只需要得到 N 个值(形状:[N,]),我不需要得到窗口或其他类似的东西。

非常感谢!


回答:

你能预测的唯一格式是你训练模型时使用的格式。如果我理解正确的话,你的模型是按如下方式训练的:

你使用了大小为100的窗口(即,时间 T-99,T-98,...,T 的特征)来预测时间 T 的目标值。

如果确实如此,那么你能用这个模型做的唯一预测就是相同类型的预测。也就是说,你可以提供100天的特征值,并要求模型预测这100天中最后一天的目标值。

如果你想让它能够预测 N 天,你必须相应地训练你的模型。也就是说,Y 中的每个元素都应该包含 N 天的序列。这里有一篇博客文章描述了如何做到这一点。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注