gpt4 book ai didi

machine-learning - Keras LSTM 时间序列

转载 作者:太空狗 更新时间:2023-10-29 17:47:11 25 4
gpt4 key购买 nike

我有一个问题,此时我完全不知道如何解决它。我正在使用带有 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 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)

所以我正在获取输入数据(一个两列数据框),创建一个 n x 10 x 2 数组 X,和一个 n x 2 数组 y,它比每个中的最后一行领先一步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 可能不是解决此类问题的最佳场所。第一个原因是您有一个概念性问题,这不是本网站的目的。此外,您的代码可以运行,因此它甚至不是一般编程的问题。 看看stats .

其次 据我所见,没有概念错误。您正在使用一切必要的东西:

  • 具有适当维度的 lstm
  • return_sequences=false 就在您的Dense 层之前
  • 输出的线性激活
  • mse 成本/损失/目标函数

第三 然而,我发现您的网络极不可能用如此少的数据学习任何东西。你要明白你这里的数据比参数少!对于绝大多数监督学习算法,首先需要的不是好的模型,而是好的数据。您无法从如此少的示例中学习,尤其是对于 LSTM 网络等复杂模型而言。

第四 看起来你的目标数据是由相对较高的值组成的。此处预处理的第一步可能是对数据进行标准化:将其以零为中心 - 即按其平均值转换数据 - 并按 ists 标准偏差重新缩放。这真的有助于学习!

第五点 一般来说,为了改进学习和减少过度拟合,您应该注意以下几点:

最后但并非最不重要的我建议你看看这个 tutorial on Github ,尤其是 recurrent tutorial for time series with keras .

PS:Daniel Hnyk 更新了他的 post ;)

关于machine-learning - Keras LSTM 时间序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32514704/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com