码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 深度学习21天——循环神经网络(RNN)实现股票预测 |(第9天)


    目录

    一、前言

    1.1 循环神经网络(RNN)

    1.2 模块

    1.2.1 数据加载

    1.2.2 import sklearn

    1.2.3 import pandas

    二、其他

    2.1 归一化

    2.2 模型构建

    2.3 评估

     活动地址:CSDN21天学习挑战赛

    学习:深度学习100例-循环神经网络(RNN)实现股票预测 | 第9天_K同学啊的博客-CSDN博客

    一、前言

    1.1 循环神经网络(RNN)

           简而言之,循环神经网络带有上一次网络输出的“记忆”,即 当前网络的隐藏层的输入不仅和它的输入层有关,还和上一网络隐藏层的输出有关

    也可参考:深度学习之RNN(循环神经网络)_笨拙的石头的博客-CSDN博客_rnn

    1.2 模块

    1.2.1 数据加载

    1. import os,math
    2. from tensorflow.keras.layers import Dropout, Dense, SimpleRNN
    3. from sklearn.preprocessing import MinMaxScaler
    4. from sklearn import metrics
    5. import numpy as np
    6. import pandas as pd
    7. import tensorflow as tf
    8. import matplotlib.pyplot as plt
    9. # 支持中文
    10. plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签
    11. plt.rcParams['axes.unicode_minus'] = False # 用来正常显示负号

    plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签
    plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号

    是为了解决 matplotlib 的如坐标轴中文出现乱码问题,若还出现乱码。则需要在中文字符前加上i,如:plt.xlabel(u"这是x轴")

    1.2.2 import sklearn

    参考:非常详细的sklearn介绍_机器学习算法那些事的博客-CSDN博客_sklearn

    Sklearn (全称 Scikit-Learn) 是基于 Python 语言的机器学习工具。它建立在 NumPy, SciPy, Pandas 和 Matplotlib 之上

    在 Sklearn 里面有六大任务模块:分别是分类、回归、聚类、降维、模型选择和预处理

    preprocessing:预处理

    1.2.3 import pandas

    参考:Pandas入门详细教程_Python数据之道的博客-CSDN博客

    总结了这67个pandas函数,完美解决数据处理,拿来即用!_数据分析与统计学之美的博客-CSDN博客

    pandas,python+data+analysis的组合缩写,是python中基于numpy和matplotlib的第三方数据分析库,与后两者共同构成了python数据分析的基础工具包,享有数分三剑客之名

    1. data = pd.read_csv('./datasets/SH600519.csv') # 读取股票文件
    2. data
    1. """
    2. 前(2426-300=2126)天的开盘价作为训练集,表格从0开始计数,2:3 是提取[2:3)列,前闭后开,故提取出C列开盘价
    3. 后300天的开盘价作为测试集
    4. """
    5. training_set = data.iloc[0:2426 - 300, 2:3].values
    6. test_set = data.iloc[2426 - 300:, 2:3].values

    data.iloc [0:2426 - 300, 2:3].values:获取(2426-300)行,第2列数据的值(values)

    二、其他

    2.1 归一化

    1. sc = MinMaxScaler(feature_range=(0, 1)) # 初始化一个MinMaxScaler对象
    2. training_set = sc.fit_transform(training_set) # 先拟合,再转换成标准化
    3. test_set = sc.transform(test_set)

    sc = MinMaxScaler(feature_range=(0, 1)):将数据映射到[0, 1]中,此即 归一化

    scaler = MinMaxScaler():自动归一化

    也可以映射到其他区间 scaler2 = MinMaxScaler(feature_range=[1,2])
    一定要先 fit_transform 再 transform

    参考:【机器学习】数据归一化——MinMaxScaler理解_GentleCP的博客-CSDN博客_minmaxscaler

    Python:sklearn数据预处理中fit(),transform()与fit_transform()的区别_健康平安的活着的博客-CSDN博客_sc.transform

    2.2 模型构建

    1. model = tf.keras.Sequential([
    2. SimpleRNN(100, return_sequences=True), #布尔值。是返回输出序列中的最后一个输出,还是全部序列。
    3. Dropout(0.1), #防止过拟合
    4. SimpleRNN(100),
    5. Dropout(0.1),
    6. Dense(1)
    7. ])

    return_sequences=False,意思是RNN只输出最后一个状态向量,把之前的状态向量全都扔掉

    Dropout(0.1):是为了防止过拟合,通过随即丢失节点来防止过拟合,在训练过程中,一些层的输出被随机忽略或“丢弃”,这种效果使原本的图层看起来像具有不同节点数,并且与前一个图层的连接关系也发生了变化。实际上,在训练期间对图层的每次更新都会对设置图层的不同“视图”执行。0.1是失活概率,即指定图层输出单元被丢弃的概率,若无法确定,可以从0.1到1尝试,增量为0.1

    RNN模型与NLP应用笔记(3):Simple RNN模型详解及完整代码实现_番茄炒狼桃的博客-CSDN博客

    深度学习基础之Dropout_Wang_AI的博客-CSDN博客

    2.3 评估

    1. """
    2. MSE :均方误差 -----> 预测值减真实值求平方后求均值
    3. RMSE :均方根误差 -----> 对均方误差开方
    4. MAE :平均绝对误差-----> 预测值减真实值求绝对值后求均值
    5. R2 :决定系数,可以简单理解为反映模型拟合优度的重要的统计量
    6. 详细介绍可以参考文章:https://blog.csdn.net/qq_38251616/article/details/107997435
    7. """
    8. MSE = metrics.mean_squared_error(predicted_stock_price, real_stock_price)
    9. RMSE = metrics.mean_squared_error(predicted_stock_price, real_stock_price)**0.5
    10. MAE = metrics.mean_absolute_error(predicted_stock_price, real_stock_price)
    11. R2 = metrics.r2_score(predicted_stock_price, real_stock_price)
    12. print('均方误差: %.5f' % MSE)
    13. print('均方根误差: %.5f' % RMSE)
    14. print('平均绝对误差: %.5f' % MAE)
    15. print('R2: %.5f' % R2)

    metrics:评价指标函数

    Sklearn.metrics函数_*Snowgrass*的博客-CSDN博客_sklearn.metrics

  • 相关阅读:
    机器学习笔记 YOLOv9模型相关论文简读
    Transformer推理性能优化技术很重要的一个就是K V cache,能否通俗分析,可以结合代码?
    SELF-RAG: 让LLM集检索,生成跟评判等多种能力于一身
    明修"栈"道——越过Android启动栈陷阱
    数据库高级 III
    再看目标检测map指标
    Docker Desktop使用宿主机Windows的配置文件持久化存储数据
    商用工程运输车辆智能交通精细数字化管理中的大数据应用
    【深度学习实验】线性模型(二):使用NumPy实现线性模型:梯度下降法
    如何理解受控和非受控件组件?
  • 原文地址:https://blog.csdn.net/qq_47941078/article/details/126298543
  • 最新文章
  • 【JVM】编译执行与解释执行的区别是什么?JVM 使用哪种方式?
    用 Hashids 优雅解决 C 端自增 ID 暴露问题
    V8引擎 精品漫游指南--Ignition篇(上) 指令 栈帧 槽位 调用约定 内存布局 基础内容
    LLVM Pass快速入门(四):代码插桩
    milkup:桌面端 markdown AI续写和即时渲染
    基于项目工程构建SBOM(软件物料清单)的研究
    鸿蒙应用开发UI基础第二节:鸿蒙应用程序框架核心解析与实操
    .NET 中如何快速实现 List 集合去重?
    扣子Coze实战:从0到1打造抖音+小红书热点监控智能体
    浅谈数据访问层
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号