【发布时间】:2018-10-01 07:27:39
【问题描述】:
我目前正在做一个更大的项目。 目标是自动找到时间序列中的分割点,将序列分割为基本模式。
我有很多时间序列形式的训练数据,具有不同长度和在有用位置手动记录的分割点。
基本上,我有x、y、z 位置以及这些点在长度为 2、25 和 50(dist2、dist25、dist50)的中心窗口上的距离。我还将房间划分为 3D 网格,并找出位置所在的单元格(cell_x、cell_y、cell_z)。我认为这可能很有用,因为基本操作更有可能在一两个单元格中。
cell_x, cell_y, cell_z 基于size 50。垂直的红线是训练数据的分割点。
现在我想知道时间序列中的每个点是否是分割点。
在我看来,这些功能已经足够开始了,但我认为我的 Keras 模型不正确,因为在 0 的时间序列索引处,结果总是且只有 1。它基本上是一个基于过去和未来值的二元分类问题。这就是我尝试使用 LSTM 解决它的原因。它看起来像这样:
model = Sequential()
model.add(LSTM(20, input_shape = (None, input_dim), return_sequences = True))
model.add(Dropout(0.5))
model.add(LSTM(20))
model.add(Dropout(0.5))
model.add(Dense(1, activation = 'sigmoid'))
model.compile(loss='binary_crossentropy',
optimizer='adam',
metrics=['accuracy'])
因为我处于整个机器学习主题的最开始,并且材料的质量有点压倒性,所以我在这里寻求一些帮助。我知道还有很多其他的事情(错误的训练数据、错误的特征、错误的参数……)会导致这个结果,但我想知道如何正确地为这个问题建立一个 Keras 模型。我已经找到了很多 Keras 示例,但我不确定它们是否适合问题。
【问题讨论】:
-
我有点不知道你期望什么样的输出。
-
对不起,我想知道该系列的每个点是否是分割点。
-
你能上传你的 I/O 数据吗?
-
一条记录的特征和标签:gist.github.com/chryb/2b3312b0ab640a1f28c8cb2d3dbbd86e | is_keyframe 列表示每个索引的标签。基于 Stackoverflow 问题,我将以下数据转换为正确的 LSTM 输入格式:gist.github.com/chryb/3de34ba44488012bf79ff4c51a2a43ae
-
也许Data Science 论坛上的一个问题可能会给你一个快速的答案。
标签: python tensorflow machine-learning keras time-series