如何预测股票分析--长短期记忆网络(LSTM)
作者:互联网
在上一篇中,我们回顾了先知的方法,但是在这个案例中表现也不是特别突出,今天介绍的是著名的l s t m算法,在时间序列中解决了传统r n n算法梯度消失问题的的它这一次还会有令人杰出的表现吗?
长短期记忆(Long Short-Term Memory) 是具有长期记忆能力的一种时间递归神经网络(Recurrent Neural Network)。 其网络结构含有一个或多个具有可遗忘和记忆功能的单元组成。它在1997年被提出用于解决传统RNN(Recurrent Neural Network) 的随时间反向传播中权重消失的问题(vanishing gradient problem over backpropagation-through-time),重要组成部分包括Forget Gate, Input Gate, 和 Output Gate, 分别负责决定当前输入是否被采纳,是否被长期记忆以及决定在记忆中的输入是否在当前被输出。Gated Recurrent Unit 是 LSTM 众多版本中典型的一个。因为它具有记忆性的功能,LSTM经常被用在具有时间序列特性的数据和场景中。
LSTM 算法广泛应用于序列预测问题中,并被证明是一种非常有效的方法。它们之所表现如此出色,是因为LSTM能够存储重要的既往信息,并忽略不重要的信息。
LSTM有三个门:
-
输入门:输入门将信息添加到细胞状态
-
遗忘门:它移除模型不再需要的信息
-
输出门:LSTM的输出门选择作为输出的信息
要更详细地了解LSTM及其体系结构,可以阅读下面的文章:
-
长短期记忆网络简介
现在,让我们将LSTM实现为一个黑盒,并检查它在特定数据上的性能。
实现
#importing required libraries 导入必要的库函数
from sklearn.preprocessing import MinMaxScaler
from keras.models import Sequential
from keras.layers import Dense, Dropout, LSTM
#creating dataframe 搭建p d的数据框架,利用循环填充框架的内容
data = df.sort_index(ascending=True, axis=0)
new_data = pd.DataFrame(index=range(0,len(df)),columns=['Date', 'Close'])
for i in range(0,len(data)):
new_data['Date'][i] = data['Date'][i]
new_data['Close'][i] = data['Close'][i]
#setting index 设定数据的索引,刨除date列
new_data.index = new_data.Date
new_data.drop('Date', axis=1, inplace=True)
#creating train and test sets 划分训练集测试集
dataset = new_data.values
train = dataset[0:987,:]
valid = dataset[987:,:]
#converting dataset into x_train and y_train 将两个数据集归一化处理
scaler = MinMaxScaler(feature_range=(0, 1))
#总数据集归一化
scaled_data = scaler.fit_transform(dataset)
#确定正式训练集测试集,大小是在刚刚划分的数据集合中,按60:1的比例划分,这里的划分不能算是k折交叉验证,知道的朋友麻烦留言解答一下,感谢
标签:长短期,60,train,记忆,test,new,LSTM,data 来源: https://www.cnblogs.com/xingnie/p/12232237.html