• Python TensorFlow循环神经网络RNNLSTM神经网络预测股票市场价格时间序列和MSE评估准确性


    原文链接:http://tecdat.cn/?p=26562

    原文出处:拓端数据部落公众号

    该项目包括:

    • 自 2000 年 1 月以来的股票价格数据。我们使用的是 Microsoft 股票。
    • 将时间序列数据转换为分类问题。
    • 使用 TensorFlow 的 LSTM 模型
    • 由 MSE 衡量的预测准确性

    GPU 设置(如果可用)
     

    gpus = tf.config.experimental.li

    读取数据集

    有几种方法可以获取股市数据。以下数据集是使用 R BatchGetSymbols 生成的。

    1.  
      #加载数据集
    2.  
      # ref.date是数组的第一列
    3.  
      datang = read_csv('stopriceo.csv', header=0)

    pd.pivot_table(datong)
    

    我们的股票时间序列

    我们为这个项目选择了微软(股票代码 MSFT)。

    1.  
      plt.rrms['fgre.dpi'] = 300
    2.  
       
    3.  
      plt.plot(dfte['MSFT'])

    时间序列显然不是平稳的,这是大多数预测模型所假设的属性。我们可以对时间序列应用变换,直到它达到平稳状态。Dickey-Fuller 检验使我们能够确定我们的时间序列是否具有季节性。

    在这里,我们将应用对数转换来解决股票市场的指数行为。

    其他有助于预测模型的转换:

    • 移动平均线
    • 差分化
    1.  
       
    2.  
      df1 = datt['MSFT']
    3.  
       
    4.  
      # 我们对数据集进行了对数转换
    5.  
      df1 = np.log(df1)

    1.  
       
    2.  
      # 替代方案:我们可以对时间序列进行差分,从而去除季节性和平均值的变化。
    3.  
      # 创建一个差分序列
    4.  
       
    5.  
      #dfdiff = diffe(df1,1)

    预处理

    在这里,我们对时间序列数据应用标准预处理。

    在时间序列中,我们没有标签,但我们有时间序列的未来值,因此输出可以是 x(t),给定 x(t-1) 作为输入。这是将数据集构建为监督问题的一种实用(且直观)的方法。

    1.  
      scaer = ixSer(fatue_ange = (0,1))
    2.  
      scer.i_rrm(np.array(df1).rehape(-1,1))

    ​​​​​​​

    LSTM 模型

    我们在这里实现了一个堆叠的 LSTM 模型。

    LSTM 网络是一种递归神经网络,能够学习序列预测问题中的序列依赖性。LSTM 模型主要用于语音识别、自然语言处理的上下文中。最近,它们也被应用于时间序列数据的分析。

    1.  
      from tensorflow.keras.models import Sequential
    2.  
       
    3.  
      model.add(LSTM(50, retsueces = True
    4.  
      #stacked LSTM
    5.  
      model.add(Dropout(0.1))
    6.  
       

    history

    plt.plot(history.history

    ​​​​​​​

    表现

    1.  
      import math
    2.  
      from sklearn.metrics import mean_squared_error

    1.  
      plt.rcParams['figure.dpi'] = 300
    2.  
      plt.rcParams['savefig.dpi'] = 300
    3.  
      #移位预测
    4.  
      lokback = ie_step
    5.  
      trinPrectPot = numpy.empty_like(df1)
    6.  
      traireditPlot[:,:] = np.nan
    7.  
       
    8.  
      in_y = scaler.nesetsfrm(df1)
    9.  
      plt.plot

    1.  
       
    2.  
      plt.plot(iv_y)

    ​​​​​​​

    未来 30 天的预测

    我们现在可以递归地应用该模型,通过估计第二天的 (t+1) 价格,然后再次将其作为输入来推断 t+2 天的价格,依此类推。这个预测当然会有更大的误差,因为每个预测的日子都会带来很大的不确定性。然而,这个预测确实会告诉我们模型是否从过去的数据中学到了任何东西。

    1.  
      # 预测未来30天的情况
    2.  
      len(tesdata) # 1211
    3.  
      # 我认为在test_data中,最后一天是5月22日,例如
    4.  
      # 对于5月23日,我需要100个前一天的数据
    5.  
       
    6.  
      x_input = test_data[(len

    ​​​​​​​​​​​​​​

    1.  
       
    2.  
      while(i<ftue_teps):
    3.  
      if(len(tep_put)>ie_sep):
    4.  
      x_input = np.array(tepinut[1:])
    5.  
      x_input = x_input.reshap

    plt.plot(dy_ew, scaler.inverse_transf

    1.  
       
    2.  
      plt.plot(df3[1000:])


    最受欢迎的见解

    1.用于NLP的Python:使用Keras的多标签文本LSTM神经网络分类

    2.Python中利用长短期记忆模型LSTM进行时间序列预测分析 – 预测电力消耗数据

    3.python在Keras中使用LSTM解决序列问题

    4.Python中用PyTorch机器学习分类预测银行客户流失模型

    5.R语言多元Copula GARCH 模型时间序列预测

    6.在r语言中使用GAM(广义相加模型)进行电力负荷时间序列分析

    7.R语言中ARMA,ARIMA(Box-Jenkins),SARIMA和ARIMAX模型用于预测时间序列数

    8.R语言估计时变VAR模型时间序列的实证研究分析案例

    9.用广义加性模型GAM进行时间序列分析

  • 相关阅读:
    蓝桥杯_基础训练_龟兔赛跑预测
    大数加法
    Splay!
    topsort
    各种方法
    有时候dfs可以简化各种组合的操作
    组合数学
    重新认识三观
    手速狗还是不行啊。。。
    set和map和pair 转自ACdreamers
  • 原文地址:https://www.cnblogs.com/tecdat/p/16302740.html
Copyright © 2020-2023  润新知