• 【深度学习实践(三)】RNN实现股票预测


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

    学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰。
    热爱写作,愿意让自己成为更好的人…

      👉引言💎

    在这里插入图片描述

    铭记于心
    🎉✨🎉我唯一知道的,便是我一无所知🎉✨🎉

    【深度学习实践(三)】RNN实现股票预测

    1 RNN是什么

    1.1 RNN的基本概念

    RNN是一个不断循环的神经网络,它在循环的过程当中是具有记忆性的,可以根据前面的输入状态循环调整模型,

    • 比如时序神经网络:

      处理“具有时序关系的输入序列”。也就是说,一个输入对应的输出,还取决于其“上文”的应用场合,如文字分类,自然语言处理
      *加粗样式

    1.2 RNN的应用场景

    RNN的应用范围非常广泛,举出部分例子:

    • Many To One

      • 情感分析。输入一段评论,输出该段评论是好评还是差评。

      • 关键信息提取。输入一篇文章,输出该文章中的关键信息。

    • Many To Many

      • 语音识别。输入一段语音,输出对应的文字。

      • 语言翻译。输入一段某国的文字或语音,输出一段另一个国家的对应意思的文字或语音。

      • 聊天机器人。输入一句话,输出回答。

    • 其他

      • 句子文法结果分析。输入一个句子,输出该句子的文法结构。

      • 句子自编码

    2 前期准备

    • 设置GPU

      (模型的训练通常需要加工处理大量数据,这时候GPU的强大算力就体现出来了,一块好的GPU就像一个好鼎,就能练出来更好的丹药)

      import tensorflow as tf
      gpus = tf.config.list_physical_devices("GPU")
      
      
      • 1
      • 2
      • 3
    • 数据预处理

      将加载好的数据进行预处理

      • 加载数据,将数据集加载到内存中

      • 用平均值或者0代替空值,奇异值;

      • 归一化,消去量纲影响等

    3 模型训练与预测

    • 神经网络程序大概分为如下几个步骤:

      1. 选择模型

      2. 构建网络层

      3. 编译

      4. 训练

      5. 预测

    3.1 构建模型

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

    3.2 激活模型

    model.compile(optimizer=tf.keras.optimizers.Adam(0.001),
                  loss='mean_squared_error')  # 损失函数用均方误差
    
    
    • 1
    • 2
    • 3

    3.3 训练模型

    history = model.fit(x_train, y_train, 
                        batch_size=64, 
                        epochs=20, 
                        validation_data=(x_test, y_test), 
                        validation_freq=1)      
    model.summary()
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    在这里插入图片描述

    • 预测

      predicted_stock_price = model.predict(x_test)                       
      predicted_stock_price = sc.inverse_transform(predicted_stock_price) 
      real_stock_price = sc.inverse_transform(test_set[60:])             
      
      
      
      • 1
      • 2
      • 3
      • 4
      • 5

    在这里插入图片描述

    • 评估

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

    参考文章链接

    🌹写在最后💖
    路漫漫其修远兮,吾将上下而求索!伙伴们,再见!🌹🌹🌹在这里插入图片描述

  • 相关阅读:
    LINUX系统下多进程的创建与通信前后台进程设计
    mysql之order by工作原理
    .NET Core 实现Excel的导入导出
    力扣-232.用栈实现队列
    【洛谷】P5662 纪念品
    VMware环境配置
    Electron学习(四)之应用程序打包
    Codeforces Round 905 (Div. 3) 题解 A-E
    急躁型人格分析,如何改变急躁性性格?
    机器学习(三十九):遗传算法对机器学习(分类)模型的寻优
  • 原文地址:https://blog.csdn.net/runofsun/article/details/126309681