Machine learning Keras LSTM时间序列
我有一个问题,在这一点上,我完全不知道如何解决它。我使用带有LSTM层的Keras来投影时间序列。我试图用前10个数据点来预测第11个 代码如下:Machine learning Keras LSTM时间序列,machine-learning,python,Machine Learning,Python,我有一个问题,在这一点上,我完全不知道如何解决它。我使用带有LSTM层的Keras来投影时间序列。我试图用前10个数据点来预测第11个 代码如下: from keras.models import Sequential from keras.layers.core import Dense, Activation, Dropout from keras.layers.recurrent import LSTM def _load_data(data): """ data should be p
from keras.models import Sequential
from keras.layers.core import Dense, Activation, Dropout
from keras.layers.recurrent import LSTM
def _load_data(data):
"""
data should be pd.DataFrame()
"""
n_prev = 10
docX, docY = [], []
for i in range(len(data)-n_prev):
docX.append(data.iloc[i:i+n_prev].as_matrix())
docY.append(data.iloc[i+n_prev].as_matrix())
if not docX:
pass
else:
alsX = np.array(docX)
alsY = np.array(docY)
return alsX, alsY
X, y = _load_data(df_test)
X_train = X[:25]
X_test = X[25:]
y_train = y[:25]
y_test = y[25:]
in_out_neurons = 2
hidden_neurons = 300
model = Sequential()
model.add(LSTM(in_out_neurons, hidden_neurons, return_sequences=False))
model.add(Dense(hidden_neurons, in_out_neurons))
model.add(Activation("linear"))
model.compile(loss="mean_squared_error", optimizer="rmsprop")
model.fit(X_train, y_train, nb_epoch=10, validation_split=0.05)
predicted = model.predict(X_test)
因此,我获取输入数据(一个两列数据帧),创建X,它是一个n×10×2的数组,y是一个n×2的数组,它比X的每个数组的最后一行提前一步(用它前面的点标记数据)
他回来了
[[ 7.56940445, 5.61719704],
[ 7.57328357, 5.62709032],
[ 7.56728049, 5.61216415],
[ 7.55060187, 5.60573629],
[ 7.56717342, 5.61548522],
[ 7.55866942, 5.59696181],
[ 7.57325984, 5.63150951]]
但我应该去
[[ 73, 48],
[ 74, 42],
[ 91, 51],
[102, 64],
[109, 63],
[ 93, 65],
[ 92, 58]]
原始数据集只有42行,所以我想知道是否没有足够的数据来处理?或者我可能错过了建模过程中的一个关键步骤?我见过一些使用嵌入层等的示例,这是我应该关注的吗
提前感谢您的帮助!嘿,瑞安!
我知道为时已晚,但我刚刚遇到了你的问题,希望不要太晚,或者你仍然可以在这里找到一些知识
首先首先,Stackoverflow可能不是解决此类问题的最佳场所。第一个原因是您有一个概念性问题,而这不是本网站的目的。此外,您的代码运行正常,因此它甚至不是一般编程的问题。请看一看
第二据我所知,没有概念上的错误。您正在使用一切必要的工具,即:
- 带有支撑器尺寸的lstm
就在您的return\u sequences=false
密集层之前
- 输出的线性激活
成本/损失/目标函数mse
- 其他优化器(例如)
- (这并非详尽无遗,如果您正在阅读本文并认为应该添加一些内容,请对其进行评论,以便对未来的读者有用!)
PS:Daniel Hnyk更新了他的;)42行对于神经网络来说可能是不够的。在11个时间步中,只给出了4个完全不同的示例。通常,神经网络数据集从数千个示例开始,这取决于学习任务的难度。请问您在编写此代码时使用的keras版本是什么?看来更新把一切都搞砸了,这是迄今为止对我来说最好的资源。我投你的票,给你一颗星星。Ryan,你能做到吗?如果是的话,你介意分享你的代码吗?这样我们可以从中学习?我一直在阅读一些断章取义的教程(如下面维克托回答中的链接)和Github上的一系列keras问题,但都没有用。我讨厌LSTM周围的社区,你们中没有人会解释任何东西。数据的初始形状是什么?最终结果应该是什么?维克多-我很好奇你是否看到过可以输入多个系列(可能是多个系列)进行预测的例子?类似于你的教程,但有额外的数据,如一周中的某一天、假日的标志等?我想你可以尝试从教程中的示例加载其他列的数据,而不是简单地运行在家庭的全局功率上。从理论上讲,你的问题和教程中的问题之间没有什么区别。网络可以接受多个输入,特别是多个维度。它可以帮助你看一看关于维度的教程的这一部分:很抱歉回答得太晚,我目前正在亚洲旅行:)@VictorSmt谢谢你的链接。这篇文章更新后说,它不起作用,他不能真正帮助人们解决LSTM问题:/你知道其他用于时间序列预测的keras LSTM教程或示例吗?