码农知识堂 - 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

  • 相关阅读:
    【Go 基础篇】Go语言闭包详解:共享状态与函数式编程
    MQ - 01 消息队列发展史&MQ通用架构
    一个tomcat下如何部署多个项目?
    Java学习笔记3.11.2 垃圾回收 - 垃圾回收的实现方式
    org.jetbrains.idea.maven.server.RemoteMavenServer36
    Java方法的重载/方法的内存/基本数据类型与引用数据类型/方法的值传递
    如何零基础自学 Python ?听我娓娓道来
    RabbitMQ 和 Kafka有什么异同?
    缓存与数据一致性问题
    药智网数据库介绍
  • 原文地址:https://blog.csdn.net/qq_47941078/article/details/126298543
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号