从深度学习用python书,它为数据生成器创建了函数。
我想我可以使用 keras 包中的 TimeseiresGenerator 来做同样的事情,但我无法添加目标延迟。有什么办法吗?
编辑:我找到了一种在目标数据上使用 np.roll 的方法。但是如果有更好的方法请告诉我。
从深度学习用python书,它为数据生成器创建了函数。
我想我可以使用 keras 包中的 TimeseiresGenerator 来做同样的事情,但我无法添加目标延迟。有什么办法吗?
编辑:我找到了一种在目标数据上使用 np.roll 的方法。但是如果有更好的方法请告诉我。
您可以使用
熊猫班
默认情况下,TimeseriesGenerator 执行 1 个时间步的滞后。然后,一个解决方法是创建一个熊猫系列,并使用移位功能。让 train 成为您的序列,并让 predict 成为代表您的滞后“大小”的 int。
例如:
label_train = pd.Series(train)
train_generator = TimeseriesGenerator(train, label_train.shift(-forecast+1).values)
Obs:在执行延迟后小心填充您的序列。
敲响我自己的两分钱;
一个人也可以很容易地通过几次观察将他/她的目标列向上移动,以产生与延迟相同的效果;假设您想预测一些时间序列,但您想从您输入时间序列的最后一次观察中预测“未来 3 个时间步长”的值。您可以简单地在数据框中创建一列:
FUTURE_PERIOD_PREDICT = 3
df['future'] = df['current'].shift(-FUTURE_PERIOD_PREDICT)
当然,这种方法会nan在数据集的末尾生成 3 ,必须以某种方式处理。我认为 tf.keras API 中的延迟参数会比这种“解决方法”更优雅