python-3.x - 如何为 RNN/LSTM 模型重塑数据集?
问题描述
我正在尝试为二进制分类 0 或 1 构建 RNN/LSTM 模型
我的数据集的一个样本(患者编号、以磨/秒为单位的时间、XY 和 Z 的归一化、峰度、偏度、俯仰、滚动和偏航、标签)。
1,15,-0.248010047716,0.00378335508419,-0.0152548459993,-86.3738760481,0.872322164158,-3.51314800063,0
1,31,-0.248010047716,0.00378335508419,-0.0152548459993,-86.3738760481,0.872322164158,-3.51314800063,0
1,46,-0.267422664673,0.0051143782875,-0.0191247001961,-85.7662354031,1.0928406847,-4.08015176908,0
1,62,-0.267422664673,0.0051143782875,-0.0191247001961,-85.7662354031,1.0928406847,-4.08015176908,0
这是我的代码
import numpy as np
from keras.datasets import imdb
from keras.models import Sequential
from keras.layers import Dense
from keras.layers import LSTM
from keras.layers import Bidirectional
from keras.preprocessing import sequence
# fix random seed for reproducibility
np.random.seed(7)
train = np.loadtxt("featwithsignalsTRAIN.txt", delimiter=",")
test = np.loadtxt("featwithsignalsTEST.txt", delimiter=",")
x_train = train[:,[2,3,4,5,6,7]]
x_test = test[:,[2,3,4,5,6,7]]
y_train = train[:,8]
y_test = test[:,8]
# create the model
model = Sequential()
model.add(LSTM(20, dropout=0.2, input_dim=6))
model.add(Dense(4, activation = 'sigmoid'))
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
model.fit(x_train, y_train, epochs = 2)
我正在尝试重塑数据集,以便能够将其提供给 RNN/LSTM 模型。
因为它给了我以下错误
检查输入时出错:预期 lstm_1_input 具有 3 个维度,但得到的数组具有形状 (1415684, 6)
谁能帮我?提前致谢。
解决方案
您需要的是TimeseriesGenerator,它将您的数据转换为固定窗口大小的序列。当前您正在传递整个数据集(...,6),如果您使用滑动窗口,假设大小为 10(这可能不需要对应于 10ms,具体取决于您的数据),生成器将提供形状输入(... , 10, 6) 这是 LSTM 所期望的。LSTM 将处理 10 个时间步长,即该窗口中的数据点,模型将进行预测。
推荐阅读
- spring-kafka - spring-kafka 如何在流 bean 上设置 Retry
- xcode - 无法找到由 `FirebaseUI/Phone` 依赖的`FirebasePhoneAuthUI (~> 11.0)` 的规范
- python-3.x - 安装了poppler,pdf2image路径错误好像没有解决方法。这已经解决了吗?
- java - 对象='customerService' 的验证失败。错误数:2
- javascript - JavaScript 中的接口是什么?
- android - WebView 中视频上方的灰色播放按钮
- java - 缺少 Tools.jar
- go - Golang测试包循环依赖问题
- python - 如何在 matplotlib 中为轮廓标签设置动画?
- python - 如何解决?