手把手教你：基于LSTM的股票预测系统

目录

• 数据预处理。
• 模型构建及训练，使用tensorflow构建LSTM网络。
• 预测股票的时序走势，并评估模型
[En]

predict the timing trend of stocks and evaluate the model.*

[En]

It is precisely because I found that most of the online posts are only for the introduction of the principle, the realization of the function is relatively few.

[En]

If you have the above ideas, you are in the right place!

[En]

Don’t talk too much nonsense, just get to the point!

[En]

First of all, our work this time is mainly aimed at a forecast of commodity index, which are: chemical industry, precious metals and non-ferrous metals.

• 接下来是模型预测的结果。在这里，我使用：化工产品来观察模型预测的时间序列结果：
[En]

next is the result of the model prediction. Here I use: chemical products to observe the time series results of the model prediction:*

• 可见红色曲线为化工产品时序，绿色曲线为预测
[En]

it can be seen that the red curve is the time sequence of chemical products and the green curve is the prediction.*

; 三、环境安装

1.环境要求

• tensorflow >= 2.0
• pandas
• scikit-learn
• numpy
• matplotlib
• joblib

1.数据预处理

• 首先，我们需要将计时问题转化为有监督的学习，然后才能进行培训。以下代码将输入的时间序列的收盘价转换为每日收益率，并将落后一天(默认为一天)的收益率的观测值作为监督学习值。
[En]

first of all, we need to convert the timing problem into supervised learning before we can carry out training. The following code converts the closing price of the entered time series into the daily rate of return and takes the observed value of the rate of return one day behind (the default is one day) as the supervised learning value.*

def series_to_supervised(data, n_in=1, n_out=1, dropnan=True):"""    将时间序列转换为监督学习问题    Arguments:        data: 输入数据需要是列表或二维的NumPy数组的观察序列。        n_in: 输入的滞后观察数（X）。值可以在[1..len（data）]之间，可选的。默认为1。        n_out: 输出的观察数（y）。值可以在[0..len（data）-1]之间，可选的。默认为1。        dropnan: Bool值，是否删除具有NaN值的行，可选的。默认为True。    Returns:        用于监督学习的Pandas DataFrame。"""    n_vars = 1 if type(data) is list else data.shape[1]    df = DataFrame(data)    cols, names = list(), list()    for i in range(n_in, 0, -1):        cols.append(df.shift(i))        names += [('var%d(t-%d)' % (j + 1, i)) for j in range(n_vars)]    for i in range(0, n_out):        cols.append(df.shift(-i))        if i == 0:            names += [('var%d(t)' % (j + 1)) for j in range(n_vars)]        else:            names += [('var%d(t+%d)' % (j + 1, i)) for j in range(n_vars)]    agg = concat(cols, axis=1)    agg.columns = names    if dropnan:        agg.dropna(inplace=True)    agg.drop(agg.columns[[6, 8, 10]], axis=1, inplace=True)    print("*" * 20)    print("完成监督学习转换：")    print(agg.head())    return agg
• 二是在数据构建完成后，将训练数据与测试数据按一定比例分离。
[En]

the second is to separate the training data from the test data at a certain rate after the data construction is completed.*

2.预测模型构建

• 因为使用的是LSTM做回归预测，因此模型输出应该不是分类的类别，而是回归值。模型构建代码如下：
def model_create(train_X):"""    搭建LSTM模型    :param train_X:    :return:"""    model = Sequential()    model.add(LSTM(64, input_shape=(train_X.shape[1], train_X.shape[2])))    model.add(Dropout(0.5))    model.add(Dense(1, activation='relu'))    model.compile(loss='mae', optimizer='adam', metrics=['mse'])    return model

3.模型训练

3.1 训练参数定义

• 设置批处理batch_size：100，博主总共跑了100个epoch。
    callbacks = [        TensorBoard(log_dir=my_log_dir)    ]    history1 = lstm_gjs.fit(train_x_gjs, train_y_gjs, epochs=100, batch_size=100,                            validation_data=(test_x_gjs, test_y_gjs), callbacks=callbacks,                            verbose=2, shuffle=False)    lstm_gjs.save_weights('models/' + 'model_lstm_gjs.tf')

3.2 训练loss及MSE

• 训练和测试集的loss，可以看到训练至30个epoch左右，loss已经收敛，同时MSE也较低。
• 贵金属训练曲线：
• 有色金属训练曲线：

• 化工商品训练曲线：

; 五、完整代码地址

[En]

Due to the large amount of project code and data set, interested students can download the complete code. If you encounter any questions during use, you can comment on them in the comments area, and I will answer them one by one.

【代码分享】手把手教你：基于LSTM的股票预测系统

Original: https://blog.csdn.net/weixin_43486940/article/details/123086000
Author: 大雾的小屋
Title: 手把手教你：基于LSTM的股票预测系统

(0)

大家都在看

• opencv目标检测

目前常用的实用性目标检测与跟踪的方式方法有以下两种： 1. 帧差法 视频是由一帧帧的图片顺序播放组成， 通过对比前一帧的图像与现在这一帧对比，该方法对于运动目标过于敏感， 而且需要…

人工智能 2023年6月17日
0201
• Pandas DataFrame为什么弃用.ix【个人看法】

以下谈一点个人的看法 一、pandas的两种索引方式 众所周知，.loc,.iloc是两种常用的索引方式，分别是基于标签索引，基于位置索引。具体用法不再赘述。曾经还有一种混合索引….

人工智能 2023年7月8日
0168
• 图解机器学习算法(9) | GBDT模型详解（机器学习通关指南·完结）

作者：韩信子@ShowMeAI 教程地址：https://www.showmeai.tech/tutorials/34 本文地址：https://www.showmeai.tech…

人工智能 2023年6月25日
0158
• NNDL 实验五 前馈神经网络（3）鸢尾花分类

NNDL 实验五 前馈神经网络（3）鸢尾花分类 文章目录 一、深入研究鸢尾花数据集 二、4.5 实践：基于前馈神经网络完成鸢尾花分类 * 4.5.1 小批量梯度下降法 &#8211…

人工智能 2023年7月2日
0135
• 多模态融合2022|TransFusion: Robust LiDAR-Camera Fusion for 3D Object Detection with Transformers

论文题目：TransFusion: Robust LiDAR-Camera Fusion for 3D Object Detection with Transformers会议：C…

人工智能 2023年6月11日
0177
• 2021年“泰迪杯”数据分析技能赛A题

2021年”泰迪杯”数据分析技能赛A题 通讯产品销售和盈利能力分析 摘要 进入本世纪以来，我国通讯产品得到了飞速发展，其技术先进，价格便宜，深受世界各国和地…

人工智能 2023年7月16日
0157
• Python-中北大学人工智能OpenCV人脸识别（根据图片训练数据，根据训练好的数据识别人脸）

文章目录 1. 根据训练照片训练数据模型 2. 根据训练的数据文件，进行人脸识别 根据训练照片训练数据模型 训练流程： 读取文件夹下的所有文件，使用PIL 库中的Image方法打开…

人工智能 2023年7月26日
0132
• 均值滤波(Mean filtering)

1.概念介绍 均值滤波是典型的 &#x7EBF;&#x6027;&#x6EE4;&#x6CE2;&#x7B97;&#x6CD5;，是…

人工智能 2023年7月5日
0118
• 【快速理解张量】通过torch.rand和举例通俗解释张量tensor

问题描述： 深度学习的核心就是卷积，而卷积的核心那就是张量。 那么如何理解张量（tensor）就成了深度学习路途中不可缺少的一步，讲真的，刚学习深度学习那会儿张量实在是困惑了自己很…

人工智能 2023年6月23日
0185
• Python + openCV获取灰度图的三种方式

需要用到的代码： import cv2 as cv import matplotlib.pyplot as plt img = cv.imread(src,0) cv.imshow…

人工智能 2023年6月2日
0155
• 探寻从小白成长为深度学习大佬的过程，一些超级干货分享

大家好。我是玉峰。今天我想和大家分享的是我自己总结的深度学习的四个步骤，自我总结，难免会有错误，欢迎改正。 [En] Hello, everyone. I am Yufeng. W…

人工智能 2023年5月23日
0151
• 人工智能导论(6)——机器学习(Machine Learning)

文章目录 一、 概述 二、 重点内容 三、 思维导图 四、 重点知识笔记 * 1. 概述 – 1.1 基本概念 1.2 机器学习的分类 2. 常见有监督学习算法 &#8…

人工智能 2023年6月30日
0149
• 小程序中如何访问mysql数据库

目录 1 开通云上的mysql 2 创建自定义连接器 3 创建云函数 4 安装依赖 5 出参映射 6 在小程序中使用连接器 总结 日常我们在开发小程序的时候，总是希望把数据提交回数…

人工智能 2023年5月30日
0167
• 普通最小二乘法平面直线回归问题的三种实现(Python)

最小二乘法（Least Squares Method）由马里·勒让德在1806年发现，距今已经有两个世纪。它是一种数学回归分析工具，可以应用于误差估计、不确定性度量、预测等任务。 …

人工智能 2023年6月18日
0176
• 安装Apollo时常见的错误总结和使用窍门

安装Apollo时常见的错误总结 进入docker后编译时报错： ERROR: An error occurred during the fetch of repository ‘…

人工智能 2023年7月5日
0114
• 从零构建知识图谱-第二章知识图谱技术体系

目录 一、知识表示与知识建模 1、知识表示的概念 （1）知识表示的五种角色 （2）综合描述 2.知识表示的方法和形式 （1）描述逻辑 （2）描述语言 3.知识建模 （1）知识建模的…

人工智能 2023年6月1日
0194