关于LSTM时间序列模型,怎么用Python导入训练集和运用测试集
你可以找一个简单的例子看下,比如说数据集是csv,一般来说是用 pandas.read_csv读取
然后随机打乱,再切为2部分一般80%当作训练,剩下20%当作验证
一般还需要归一化一下,然后转换成和你的神经网络输入维度相同的矩阵即可。
# 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()