首页 > 解决方案 > 为 RNN 设置正确的输入

问题描述

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

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

在此处输入图像描述

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

从 tensorflow here阅读官方文档后,我无法理解如何将输入设置为模型。我应该事先规范化数据还是什么,如果是的话如何?

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

X对我的情况和Yin 的model.fit外观有什么帮助吗?

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

PS。如果这些信息有帮助,我已经设置pythondockerwith等。tensorflowkeras

标签: machine-learningneural-networklstmnormalizationrecurrent-neural-network

解决方案


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

对于我的情况,model.fit 中的 X 和 Y 应该是什么样子的任何帮助?

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

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

我应该事先规范化数据吗

是的,对原始数据进行预处理至关重要。我在这里看到两件重要的事情要做:

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

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


推荐阅读