Python 3.x Kera LSTM输入与输出的对应关系

Python 3.x Kera LSTM输入与输出的对应关系,python-3.x,keras,lstm,Python 3.x,Keras,Lstm,我试图借助投资者情绪和之前的股价来预测股价 数据帧的头部如下所示: time_p close sent_sum output 2007-01-03 10:00:00 10.837820 0.4 10.6838 2007-01-03 11:00:00 10.849175 0.6 10.8062 2007-01-03 12:00:00 10.823942 -0.3 10.7898 2007-01-03 13:00:00 10.810063

我试图借助投资者情绪和之前的股价来预测股价

数据帧的头部如下所示:

time_p               close    sent_sum  output
2007-01-03 10:00:00  10.837820  0.4   10.6838
2007-01-03 11:00:00  10.849175  0.6   10.8062
2007-01-03 12:00:00  10.823942 -0.3   10.7898
2007-01-03 13:00:00  10.810063 -0.2   10.7747
2007-01-03 14:00:00  10.680111  0.1   10.7078
我如何预处理数据?

上面的df包含股票数据,其中,
time\u p
是每小时的日期时间(不包括在模型中),它与每小时的收盘价
close
共同响应,
发送的金额
是发票人情绪,
输出
是模型的
标签
<代码>输出随着
df.output.shitf(-8)
向上移动换句话说,我想根据-7小时
收盘
(价格)加上-7小时
发送的金额
(投资者哨兵)预测未来的+1小时

我正在尝试适合这样的模型:

我的问题:我怀疑,一旦我真的将标签数据移动了-7个点,在未来的时间段内将当前输入与+7小时相匹配,是否可以写入
train=scaled_y[:14000]。在
(2000,7,1)形状中重塑(2000,7,1)#train_y
,或者我正在做一些工作

  • 其次,我对keras_lstm如何将输入与标签匹配感到困惑,我的意思是输入_形状是如何工作的
  • 有什么适合这种型号的好方法吗?请推荐。 我将感谢你的帮助

您可以在
scaled\u x
scaled\u y

我使用toy dataset显示了一个示例,这里的数据和标签最初是形状((150,4),(150,)),使用以下脚本:

seq_length = 10
dataX = []
dataY = []
for i in range(0, 150 - seq_length, 1):
    dataX.append(data[i:i+seq_length])
    dataY.append(labels[i+seq_length-1])
import numpy as np
dataX = np.reshape(dataX, (-1, seq_length, 4))
dataY = np.reshape(dataY, (-1, 1))
# dataX.shape, dataY.shape

Output: ((140, 10, 4), (140, 1))
如本例所示,您可以使用
7
days数据创建序列,目标为第二天

Keras LSTM层预计输入为3 dims(批次大小、序列长度、输入dims),如下所示


注意:
batch\u size
不用于定义层,模型将在
fit

时填充自身。如果我是对的,您正在尝试根据最近7个历史预测下一个小时的股价?
是。这就是我正在尝试的
seq_length = 10
dataX = []
dataY = []
for i in range(0, 150 - seq_length, 1):
    dataX.append(data[i:i+seq_length])
    dataY.append(labels[i+seq_length-1])
import numpy as np
dataX = np.reshape(dataX, (-1, seq_length, 4))
dataY = np.reshape(dataY, (-1, 1))
# dataX.shape, dataY.shape

Output: ((140, 10, 4), (140, 1))
input_dims = # an integer
seq_length = #an integer
model = Sequential()
model.add(LSTM(128, activation='relu', input_shape=(seq_length, input_dims), return_sequences=True))