LSTM的时间序列输入



我有一个数据集,包含从不同位置收集的水样。例如,ABC1水样取自亚利桑那州的一条河流,ABC2水样取自波士顿的一条河。它们都是河流,具有相同的特征列(pH、温度等(,但它们位于不同的位置,因此特征的变化对它们来说是单独的。因此,我的目标是创建一个河流模型,因为我没有足够的数据来创建单个模型。总共有11列,我想预测未来几个月的价值。我的数据集如下:

Date         Sample_Name        pH    temp    etc...
2009-01-01    ABC1              7.2    12
2009-01-02    ABC2              5.5    11
.
.
2009-01-02    ABC1              7.2    10
2009-01-02    ABC2              7.3    10
.
.
2013-06-02    ABC2              6.5    22
2013-06-04    ABC1              6.5    22
.
2015-01-05    ABC1              8.9    13
2015-01-05    ABC4              8.8    13

我想将每个样本及其序列提供给LSTM模型。例如ABC1的每一个测量(行(都必须作为一个序列或一个批次提供给一个模型。是否可以使用TimeseriesGenerator进行这种数据准备?我如何准备我的数据以将其提供给我所描述的模型?用日期和样本名称(按字母顺序(对数据集进行排序也有帮助吗?我正在努力实现类似的目标

我想使用生成数据

from keras.preprocessing.sequence import TimeseriesGenerator
n_timesteps = 2
n_features = 10
batch_size = 5
generator = TimeseriesGenerator(df, df, length, sampling_rate = 10, stride = 1, batch_size = batch_size)

我想在中输入数据的简单LSTM模型

from keras.models import Sequential
from keras.layers import LSTM, Dense
from keras.utils import Sequence
model = Sequential()
model.add(LSTM(n_features, activation='relu', input_shape=(n_timesteps, n_features)))
model.add(Dense(10))
model.compile(optimizer='adam', loss='mse', metrics = ['accuracy'])

查看文档,tf.keras.preprocessing.sequence.TimeseriesGenerator不能将字典作为第一个参数。"slice"错误只是这一事实的表现,因为函数试图使用第一个参数(dict(的slice,但失败了。再次从文档:

参数:data:包含连续数据点(时间步长(的可索引生成器(如列表或Numpy数组(。

所以您可能想通过input_dict['ABC1']input_dict['ABC1'].values

最新更新