lstm时间序列预测python

关于LSTM时间序列模型,怎么用Python导入训练集和运用测试集

你可以找一个简单的例子看下,比如说数据集是csv,一般来说是用 pandas.read_csv读取
然后随机打乱,再切为2部分一般80%当作训练,剩下20%当作验证
一般还需要归一化一下,然后转换成和你的神经网络输入维度相同的矩阵即可。

  • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/7799433
  • 你也可以参考下这篇文章:Python中使用LSTM网络进行时间序列预测
  • 除此之外, 这篇博客: 基于深度学习的驾驶行为预测方法中的 7 python LSTM模型调用 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • # coding=utf-8
    import os  
    os.environ["TF_CPP_MIN_LOG_LEVEL"]='2' # ֻ��ʾ warning �� Error 
    
    ###data (30000,4),(1000,4),(1000,4):
    import numpy as np
    import tensorflow as tf
    import pandas as pd
    import matplotlib.pyplot as plt
    plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
    plt.rcParams['axes.unicode_minus']=False #用来正常显示负号
    
    TIME_STEPS=28
    NUM_INPUT=4
    
    #从路谱中截取一系列TIME_STEPS=28个值作为训练的样本::
    #X (:,28,4);
    #y (:,1)
    def generate_data(seq):
        X=[]
        y=[]
        for i in range(len(seq)-TIME_STEPS):
            X.append(seq[i:i+TIME_STEPS,:])
            y.append([seq[i+TIME_STEPS,-1]])
        return np.array(X,dtype=np.float32),np.array(y,dtype=np.float32)
        #seq[i:i+TIME_STEPS,:]是二维数组,不用再在外面加【】
        #seq[i+TIME_STEPS,-1]是0维数组=值,需要在外面加【】变成一维表
    
    ###:文件数据处理:
    H_V_n_a_MAX=[433.15,75.246,1764.25,100.]
    file_path = r'C:\Users\li\workspace\temp\e\ttt\data_temp.xlsx'
    dataFrame = pd.read_excel(file_path,sheet_name=0)
    data=dataFrame.values[:,1:] #二维数组
    #数据归一化:
    data=data/H_V_n_a_MAX
    
    #testData_in (:,28,4);
    #testData_out (:,1)
    testData_in,testData_out=generate_data(data)
     
    sess=tf.InteractiveSession()
    new_saver=tf.train.import_meta_graph('../data.meta')
    new_saver.restore(sess, '../data')
    tf.get_default_graph().as_graph_def()
    x_input=sess.graph.get_tensor_by_name('x_input:0')
    y_output=sess.graph.get_tensor_by_name('y_output:0')
     
    try_input=testData_in[:] 
    try_desired=testData_out[:]  
    print(try_desired)
    try_predictions=y_output.eval(feed_dict={x_input:\
                                   np.array([try_input]).reshape((-1,TIME_STEPS,NUM_INPUT))})
    print(try_predictions)
    plt.figure()
    plt.plot(try_predictions*100,label=u'预测油门开度')
    plt.plot(try_desired*100,label=u'实际油门开度')
    plt.ylabel(u'油门开度(%)')
    plt.xlabel(u'时间(s)')
    plt.legend()
    plt.show()
    
  • 您还可以看一下 刘廷龙老师的python实用项目代码分析讲解课程中的 Python预算算法实现lstm小节, 巩固相关知识点