【发布时间】:2022-06-12 00:11:10
【问题描述】:
我目前有一个大小为 (85,6000) 的 NumPy 数组,其中 85 是样本数,6000 是每个样本的时间序列长度。我想为长度为 6000 的时间序列创建一个 60 的时间步长。根据我的理解,我应该只添加另一个第三维并将时间序列放入其中,但它滞后 60。我该怎么做?作为 RNN 输入是否正确?
就上下文而言,这项工作是为我的论文准备的。我有 85 名患者的数据,其中每位患者都有一个时间序列,可以描述为他们的键盘敲击模式。我想将此键盘打字模式输入到 LSTM 中,看看它是否可以进行二进制分类来预测他们是否患有帕金森症。
我知道对于 Keras 库,输入形状需要采用 (n_samples,n_time_steps,n_features) 的形式,但我不太确定 n_features 是什么。我最初的想法是将数组(时间序列)划分为段,这样第二维的段长度为 60,因此时间步长为 60。
所以我将数组重新整形如下:
X_train = np.reshape(X_train, (X_train.shape[0], int(X_train.shape[1]/100),100))
我不确定这是否正确,或者它是否为 LSTM 提供了有关时间序列中先前值的任何信息。我见过的所有教程都试图预测一个奇异的时间序列。但是,我正在尝试对每个患者的时间序列进行分类,因此我需要对 85 个时间序列进行分类,并且找不到任何具有类似问题的资源。
当我查看有关股票价格预测的文章和论文时,我看到它们从时间序列中创建了一种滑动窗口。我不确定这是否可以应用于我的分类问题。他们用于这些窗口的代码大多与这个相似。
X_train = []
y_train = []
for i in range(60, len(training_set_scaled)):
X_train.append(training_set_scaled[i-60:i, 0])
y_train.append(training_set_scaled[i, 0])
X_train, y_train = np.array(X_train), np.array(y_train)
这会将表示股票价格随时间变化的一维数组转换为一个二维数组,其中每行有 60 个条目,并且与后面的行共有 59 个条目,从而创建了滑动窗口效果。我不确定这是否可以缩放到 3D,因为我的问题有 85 个时间序列,而不仅仅是一个股票价格的时间序列。我也阅读了很多关于情绪分析的文章,因为它与我的问题有很多共同点(为每个患者分类序列),但我没有看到人们在情绪分析中具有任意时间步长,相反,他们只是将整个数组作为时间步长。
【问题讨论】:
-
请提供足够的代码,以便其他人更好地理解或重现问题。
标签: python numpy machine-learning recurrent-neural-network