machine-learning - 为 RNN 设置正确的输入
问题描述
在数据库中,有带有记录的时间序列数据:
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 模型可接受的格式。
X
对我的情况和Y
in 的model.fit
外观有什么帮助吗?
如果您发现有关此问题的任何其他问题,请随时发表评论。
PS。如果这些信息有帮助,我已经设置python
了docker
with等。tensorflow
keras
解决方案
您可以从问题中提到的片段开始。
对于我的情况,model.fit 中的 X 和 Y 应该是什么样子的任何帮助?
X
应该是 shape 的 numpy 矩阵[num samples, sequence length, D]
,其中D
是每个时间戳的值数。我想D=1
在你的情况下,因为你只传递温度值。
y
应该是目标值的向量(如代码段中所示)。二进制(警报/not_alarm)或连续(例如最大温度偏差)。在后一种情况下,您需要将 sigmoid 激活更改为其他内容。
我应该事先规范化数据吗
是的,对原始数据进行预处理至关重要。我在这里看到两件重要的事情要做:
- 使用 min-max 或标准化(wiki、sklearn preprocessing)标准化温度值。另外,我会添加一些平滑。
- 从所有时间序列中删除最后时间戳的一部分以避免信息泄漏。
最后,我想说这个任务比看起来要复杂得多。您可能想找到一个关于时间序列分类的好的入门教程,或者一般的机器学习课程。我相信你能找到比 RNN 更好的方法。
推荐阅读
- pandas - 使用 Pandas groupby.apply 删除重复时出错
- jquery - 从 MVC 的视图中获取控制器中的数组数组应该写什么?
- sas - 如何在 SAS Studio 中使用 RC 方法编写混合效应回归模型?
- c++ - C++ 替换动态二维数组中的值
- java - 如何在单击按钮时更改图像视图大小
- git - Git - 复制没有历史记录的分支
- reactjs - 为什么我必须在 fitBounds 与 @react-google-maps/api 一起使用之前执行两次 fitBounds
- node.js - 你是如何做到的,这样你就不必为描述不和谐机器人提及用户
- c# - C#中的Json数组反序列化问题
- python - 可靠地为 python 应用程序设置工作目录