ID:399899
注: 这里使用的数据源是Tushare
LSTM股票价格预测实验
实验介绍
使用LSTM进行股票价格的预测,用到的框架主要包括:TensorFlow2.0,主要用于深度学习算法的构建,本实验以Tushare平台的601398股票历史数据为基础,基于Keras深度学习库股票价格进行预测。
算法原理:
这里就不对模型原理进行介绍了 这里引用一下别人的 需要的朋友去看一下https://juejin.cn/post/6973082167970627620
搭建思路:
使用LSTM模型对股票数据的'open', 'high', 'low', 'close', 'pre_close', 'change', 'pct_chg', 'vol', 'amount'九个特征进行训练预测收盘价。
准备工作
环境准备:python3.7;Tensorflow;Keras
数据准备:https://www.tushare.pro/ ;原始数据取得是由tushare平台提供的股票日线行情历史数据。
实验步骤
导入实验环境
导入相应的模块
import pandas as pd
import tensorflow as tf
import numpy as np
import tushare as ts
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['KaiTi']
plt.rcParams['axes.unicode_minus'] = False
导入实验数据集
步骤 1 获取数据
ts.set_token('这里填写自己的token码在个人主页可以获取')
pro = ts.pro_api()
data = pr.daily(ts_code='601398.SH')
data = data.iloc[::-1,]
data1 = data.copy(deep=True)
tushare主页:https://tushare.pro/document/2
步骤 2 检测是否有缺失值
data.isna().any()
输出结果:
ts_code False
trade_date False
open False
high False
low False
close False
pre_close False
change False
pct_chg False
vol False
amount False
步骤 3 异常值检测
data1 = data
mean1 = data1['vol'].quantile(q=0.25)
mean2 = data1['vol'].quantile(q=0.75)
mean3 = mean2-mean1
topnum21 = mean2+1.5*mean3
bottomnum21 = mean2-1.5*mean3
print("正常值的范围:",topnum21,bottomnum21)
print("是否存在超出正常范围的值:",any(data1['vol']>topnum21))
print("是否存在小于正常范围的值:",any(data1['vol']<bottomnum21))
输出结果:
正常值的范围: 4625919.582500001 -113825.70250000013
是否存在超出正常范围的值: True
是否存在小于正常范围的值: False
检测存在超出正常范围的值,对该部分值进行替换
replace_value=data1['vol'][data1['vol']<topnum21].max()
data1.loc[data1['vol']>topnum21,'vol']=replace_value
mean1 = data1['amount'].quantile(q=0.25)
mean2 = data1['amount'].quantile(q=0.75)
mean3 = mean2-mean1
topnum21 = mean2+1.5*mean3
bottomnum21 = mean2-1.5*mean3
print("正常值的范围:",topnum21,bottomnum21)
print("是否存在超出正常范围的值:",any(data1['amount']>topnum21))
print("是否存在小于正常范围的值:",any(data1['amount']<bottomnum21))
输出结果:
正常值的范围: 2558165.1642500004 -167064.92425000016
是否存在超出正常范围的值: True
是否存在小于正常范围的值: False
检测存在超出正常范围的值,对该部分值进行替换
replace_value=data1['amount'][data1['amount']<topnum21].max()
data1.loc[data1['amount']>topnum21,'amount']=replace_value
步骤 4 归一化处理
这里采用的最大最小归一化 归一化可以使模型得到更好的鲁棒性
data = data.iloc[:,2:]
data_max = data.max()
data_min = data.min()
data = (data-data_min)/(data_max-data_min)
步骤 5 数据划分并查看数据集信息
dataset_st = np.array(data)
def data_set(dataset, lookback):
dataX, dataY = [], []
for i in range(len(dataset)-lookback):
a = dataset[i:(i+lookback)]
dataX.append(a)
dataY.append(dataset[i+lookback][3])
return np.array(dataX), np.array(dataY)
train_size = int(len(dataset_st)*0.7)
test_size = len(dataset_st)-train_size
train, test = dataset_st[0:train_size], dataset_st[train_size:len(dataset_st)]
print(len(train))
print(len(test))
lookback = 60
trainX, trainY = data_set(train, lookback)
testX, testY = data_set(test, lookback)
print('trianX:,trianY', trainX.shape, trainY.shape)
输出结果:
trianX:,trianY (2560, 60, 7) (2560,)
LSTM回归预测 建模
步骤 1 初始化神经网络
数据集准备完成,接下来我们就需要构建训练模型,我们首先需要建立初始化的神经网络。
model=tf.keras.Sequential([tf.keras.layers.LSTM(120,input_shape=(trainX.shape[1],
trainX.shape[2]),return_sequences=True),
tf.keras.layers.Dropout(0.2),
tf.keras.layers.LSTM(60),
tf.keras.layers.Dropout(0.2),
tf.keras.layers.Dense(30,activation='relu'),
tf.keras.layers.Dense(1)
])
步骤 2 定义学习率更新规则
设置模型的学习率参数。
给出学习率(步长)进行更新
model.compile(
optimizer=tf.keras.optimizers.Adam(0.001),
loss='mean_squared_error',
metrics=["mse"]
)
步骤 3 构建模型训练
神经网络的模型参数更新是一个迭代的过程,所以我们可以将模型训练的过程定义成一个函数,从而进行模型的训练。
history = model.fit(trainX, trainY,
batch_size=64, epochs=25, validation_data=(testX, testY),
validation_freq=1)
步骤 4 构建绘图函数
绘制train loss与epoch的关系图,这样我们就可以查看模型训练的每一步损失值。
def plot_learning_curves(history):
pd.DataFrame(history.history).plot(figsize=(10,6))
plt.grid(True)
plt.title('训练情况')
plt.savefig('./训练情况.jpg')
plt.show()
3实验结果及分析 ****
3 .1 实验结果 ****
评价指标:
MSE: tf.Tensor(25.45738, shape=(), dtype=float32)
MAE: tf.Tensor(5.0175276, shape=(), dtype=float32)
MAPE: tf.Tensor(93.39253, shape=(), dtype=float32)
; 实验 分析
从评价指标可以看出整体误差较小,可以预测效果图上来看,预测情况与实际情况的走势基本一致,但是价格有所偏差,这是值得提升的地方。
整体来说,LSTM模型股票价格预测有一定效果,对证券投资市场具有一定的指导作用。
Original: https://blog.csdn.net/As_Yan_Do/article/details/124649032
Author: 千世先森
Title: LSTM股票价格预测
相关阅读
Title: Anaconda安装tensorflow和keras包
Title: Anaconda安装tensorflow和keras包
1.背景
在Anaconda中无法直接安装这两个包,安装过程异常漫长。
2.准备工作
添加清华源
1.在Anaconda prompt中(可利用全局搜索查找)运行 conda config命令,然后寻找到用户目录下的.condarc文件(如果没找到的话可能是隐藏了,可右键设置显示隐藏文件)
2.将该文件内容更改为
channels:
- http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/peterjc123/
- http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/
- http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/menpo/
- http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/bioconda/
- http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/
- http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
- http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
- http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
show_channel_urls: true
ssl_verify: true
若按上述步骤更改文件后显示invaliderror,则先删除.condarc文件,然后运行conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/bioconda/
最后在新创的.condarc文件中重复上述2操作修改文件内容
3.在Anaconda prompt中运行
conda clean -i
//清除索引缓存,保证用的是镜像站提供的索引
3.建立虚拟环境
1.创建环境
打开Anaconda prompt中输入
conda create --name tensorflow python=3.6
//"tensorflow"是你建立的conda虚拟环境的名字
//创建时若出现旋转横线停止旋转的情况可能是因为上述命令行中输入错误
//不论你之前安装的python版本是什么,在这里建议用3.6,兼容性更强,并且因为需要python,tensorflow和keras版本匹配才能顺利安装使用后面所安装的tensorflow和keras均为与python3.6适配的版本,若不使用python3.6创建虚拟环境,请务必百度与自己安装python版本适配的tensorflow和keras,在此特别强调tensorflow和keras必须版本适配否则不能顺利安装使用
2.进入环境
conda activate tensorflow
//进入名为"tensorflow"的虚拟环境
3.安装包
安装tensorflow
pip install tensorflow==2.0.0 -i https://pypi.tuna.tsinghua.edu.cn/simple
//上面两行是一个命令行
//安装过程中底行会出现Proceed:y/n:只需要输入一个y即可
测试tensorflow是否安装成功
1.首先创建一个新的工程包
2.配置环境
//参考路径,具体以自己的安装路径为准
3.在project下创建一个test.py,内容如下
import tensorflow as tf
A = tf.constant([[1, 2], [3, 4]])
B = tf.constant([[5, 6], [7, 8]])
C = tf.matmul(A, B)
print©
print(tf. version) //注意这里version两侧分别是两条下划 线
4.若运行结果如下则安装成功
pip install keras==2.3.1 -i https://pypi.tuna.tsinghua.edu.cn/simple
//上面两行是一个命令行
测试keras是否安装成功
1.进入python环境
python
2.导入keras包
import keras
3.若结果为如下图则安装成功
; 4.可能遇到的问题
1.官网安装Anaconda速度很慢
建议到清华镜像:https://mirrors.tuna.tsinghua.edu.cn/安装
//镜像列表->anaconda->archive->(摁一下date旁边的箭头可将版本从新到旧排列然后安装最上面即最新版本即可)
2.非首次安装Anaconda后发现大量文件缺失
删除用户目录下的.condarc文件,卸载旧文件包重新下载
3.测试tensorflow包时出现如下错误
点击错误报告中的蓝色链接,进入对应的文件,找到对应的行,改成图。
[En]
Click the blue link in the error report to enter the corresponding file, find the corresponding line, and change it to the figure.
; 4.安装包时出现如下错误
该错误是因为安装的tensorflow与keras版本不匹配导致,请卸载原tensorflow包和keras包,百度与自己虚拟环境python版本适配的tensorflow包和keras包,注意tensorflow必须要与keras版本适配
5.导入问题
在python环境中导入tensorflow若出现报错"importerror cannot found name "或者等了一会都完成不了可以重新进入python环境试试import tensorflow as tf
Original: https://blog.csdn.net/qq_48078689/article/details/124273084
Author: gcj_future
Title: Anaconda安装tensorflow和keras包Original: https://blog.csdn.net/qq_48078689/article/details/124273084
Author: gcj_future
Title: Anaconda安装tensorflow和keras包

PHP语音通知接口开发

windows 11 搭建 TensorFlow GPU 开发环境【RTX 3060】:2 — 基于WSL2 docker 方式的使用

如何进行生成式对抗网络和对抗生成模型

@AliasFor注解

深度学习实战篇之 ( 十七) — TensorFlow之DenseNet

excel进度条怎么设置

Pandas:DataFrame数据的基本属性

python导入文档文件_使用python-docx 如何向word中插入文件对象!python有关word的教程…

VoLTE语音编码标准,NV控制

【知识图谱】哈工大ltp工具包的安装和使用

scipy之傅里叶变换

影视解说短视频如何配音?三个文字转语音小技巧,配音其实也不难

DirectUI消息循环的简单封装

多版本cuda环境管理
