失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 深度学习LSTM模型对股票分析预测

深度学习LSTM模型对股票分析预测

时间:2022-02-09 01:46:54

相关推荐

深度学习LSTM模型对股票分析预测

项目描述:

本程序使用了循环神经网络中的长期短期记忆模型(LSTM)以Apple公司过去60天的股价来预测收盘价

LSTM模型相当于对RNN模型的改良版本

RNN:想把所有的信息都记住,不管是有用的信息还是没用的信息(记忆负担重)

LSTM:设计一个记忆细胞,具备选择记忆的功能,可以选择记忆重要信息,过滤掉噪声信息,减轻记忆负担

关于LSTM的原理这个不过多赘述,推荐观看B站视频。

使用Anaconda3中的Jupyter来编写(个人推荐十分好用)


环境搭建:

Anaconda安装

Anaconda添加新的库

进入后直接打pip即可

pip install tensorflow -i https://pypi.tuna./simple --user

把tensorflow 换成你要导入的包名即可


项目步骤:

1、首先导入库:

#导入库import mathimport pandas_datareader as webimport numpy as npimport pandas as pdimport seaborn as snsfrom sklearn.preprocessing import MinMaxScalerfrom keras.models import Sequentialfrom keras. layers import Dense,LSTMimport matplotlib.pyplot as plt

2、获取股票报价:

#解决字体显示异常bugsns.set_style("whitegrid", {"font.sans-serif": ['KaiTi', 'Arial']}) #获取股票报价df=web.DataReader("AAPL",data_source='yahoo',start='-01-01',end='-02-15')#显示数据df

显示数据如下:

3、绘制股票历史收盘价:

#可视化收盘价历史plt.figure(figsize=(16,8))plt.title('历史价格')plt.plot(df['Close'])plt.xlabel('日期',fontsize=18)plt.ylabel('收盘价美元 ($)',fontsize=18)plt.show()

4、创建一个只有“Close”列的数据集

#创建一个只有“Close”列的数据集data = df.filter(['Close'])##转换数据集为numpy数组dataset = data.values

5、获取训练模型的行数

training_data_len = math.ceil( len (dataset)*.8)training_data_len

6、数据规范化

#数据规范化scaler = MinMaxScaler(feature_range=(0, 1))scaled_data = scaler.fit_transform(dataset)scaled_data

7、创建训练数据集

#数据规范化#创建训练数据集#创建缩放的训练数据集train_datatrain_data = scaled_data[0:training_data_len,:]#将数据拆分为x_train和y_train数据集x_train = []y_train = []for i in range(60,len(train_data)):x_train.append(train_data[i-60:i,0])y_train.append(train_data[i,0])if i <= 61:print(x_train)print(y_train)

8、将x_train和y_train转换为numpy数组

x_train,y_train = np.array(x_train),np.array(y_train)

9、重塑的数据

x_train = np.reshape(x_train,(x_train.shape[0],x_train.shape[1],1))

10、建立LSTM模型

model = Sequential()model.add(LSTM(50,return_sequences=True, input_shape=(x_train.shape[1],1)))model.add(LSTM(50,return_sequences=False))model.add(Dense(25))model.add(Dense(1))

11、编译模型

pile(optimizer='adam',loss='mean_squared_error')

12、训练模型

model.fit(x_train,y_train,batch_size=1,epochs=1)

13、创建测试数据集

#创建一个新的数组,包含从索引1978到2438的缩放值test_data = scaled_data[training_data_len - 60:,:]#创建数据集x test和y_testx_test = []y_test = dataset[training_data_len:,:]for i in range(60,len(test_data)):x_test.append(test_data[i-60:i,0])#转换数据为numpy数组x_test = np.array(x_test)#重塑的数据x_test = np.reshape(x_test,(x_test.shape[0],x_test.shape[1],1))

14、获取模型预测价格值

#获取模型预测价格值predictions = model.predict(x_test)predictions = scaler.inverse_transform(predictions)


15、计算均方根误差(RMSE)

rmse = np.sqrt(np.mean( predictions - y_test)**2 )

16、绘制图表

train = data[:training_data_len]valid = data[training_data_len:]valid['Predictions'] = predictions#可视化数据plt.figure(figsize=(16,8))plt.title('LSTM模型预测')plt.xlabel('日期', fontsize=18)plt.ylabel('收盘价美元 ($)', fontsize=18)plt.plot(train['Close'])plt.plot(valid[['Close','Predictions']])plt.legend(["模型训练值",'真实值','预测值'],loc='lower right')plt.show()

如果觉得《深度学习LSTM模型对股票分析预测》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。