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))