为 RNN 设置正确的输入

Geo*_*sis 8 machine-learning normalization neural-network lstm recurrent-neural-network

在数据库中有带有记录的时间序列数据:

  • device- timestamp- temperature- min limit-max limit
  • device- timestamp- temperature- min limit-max limit
  • device- timestamp- temperature- min limit-max limit
  • ...

device有 4 小时的时间序列数据(间隔 5 分钟)在发出警报之前和 4 小时的时间序列数据(再次间隔 5 分钟)没有引发任何警报。该图更好地描述了数据的表示,对于每个device

在此处输入图片说明

我需要在 python 中使用 RNN 类进行警报预测。当temperature低于min limit或高于时,我们定义警报max limit

从 tensorflow here阅读官方文档后,我在理解如何设置模型的输入时遇到了麻烦。我应该事先规范化数据还是其他什么,如果是,如何规范化?

同样阅读这里的答案也没有帮助我清楚地了解如何将我的数据转换为 RNN 模型可接受的格式。

关于我的情况下XYinmodel.fit应该是什么样子的任何帮助?

如果您看到有关此问题的任何其他问题,请随时发表评论。

附注。我已经设定pythondockertensorflowkeras等的情况下,这些信息帮助。

rom*_*man 2

您可以从问题中提到的片段开始。

对于我的案例, model.fit 中的 X 和 Y 应该是什么样子有什么帮助吗?

X应该是 shape 的 numpy 矩阵[num samples, sequence length, D],其中D是每个时间戳的多个值。我想D=1在你的情况下,因为你只传递温度值。

y应该是目标值的向量(如代码片段中所示)。二进制(警报/非警报)或连续(例如最大温度偏差)。在后一种情况下,您需要将 sigmoid 激活更改为其他内容。

我应该预先标准化数据吗

是的,预处理原始数据非常重要。我认为这里有两件重要的事情要做:

  1. 使用最小值-最大值或标准化对温度值进行标准化(wikisklearn 预处理)。另外,我会添加一些平滑处理。
  2. 从所有时间序列中删除最后时间戳的一部分,以避免信息泄漏。

最后,我想说这个任务比看起来更复杂。您可能想要找到一个关于时间序列分类的良好入门教程,或者一般的机器学习课程。我相信你能找到比RNN更好的方法。