lstm时间序列预测python代码,lstm时间序列预测pytorch代码

  lstm时间序列预测python代码,lstm时间序列预测pytorch代码

  PM2.5数据集LSTM实现预测数据集描述的主要步骤。环境的所有代码都被转换成监管数据。导入数据集被规范化为监管数据。删除不需要预测的列,并将其分为定型集和数据集。LSTM对实际值和预测值之间的比较进行了反规范化。

  描述数据集

  本实验使用的PM2.5空气质量数据集来自UCI公共数据集网站,包含一系列与空气质量相关的天气数据。这个数据集是一个多变量时间序列,每个记录的时间间隔为一个小时。有43,824个示例,其中前24个未在数据集中使用。这个数据集是美国驻华大使馆从2010年初到2014年底收集的空气质量数据。本实验选取了43800个有真实值的项目作为实验数据,预测的因变量值为PM2.5

  主要步骤实验过程主要分为以下几个步骤:

  读取数据文件。将时间序列数据转化为监督学习问题,并对数据进行归一化处理。去掉这个实验中无用的列。数据集分为测试集、训练集和验证集。Keras和tensorflow训练单层LSTM网络。使用测试集进行预测。数据的逆规范化。MAE(平均绝对误差)和RMSE(均方根误差)评估训练集的预测结果。比较图像和真实值之间的曲线。环境keras: 2.3.1,TensorFlow: 2.1.0,Python 3.7

  全部代码//都是机器学习常用最新的工具包从数学导入sqrtfrom numpy导入从matplotlib串联导入熊猫的pyplotfrom导入来自熊猫的阅读_ CSV导入数据帧来自熊猫导入concatfrom sklearn。预处理导入sk学习的labelen编码器。韵律学导入来自sk学习的均方误差。韵律学导入keras的mean _ absolute _ error。模型导入来自keras.layers的序列导入来自keras.layers的Densefrom导入长短期记忆网络转化为监督数据def series_to_supervised(data,n_in=1,n_out=1,dropnan=True):如果类型(数据)是列出其他数据。shape[1]df=data frame(data)cols,names=list(),list()for i in range(n_in,0,-1):cols。追加(df。shift(I))names=[( var % d(t-% d) %(j 1,I))for j in range(n _ vars)]for I in range(0,n _ out):cols。追加(df。shift(-I))if I==0:names=[( var % d(t) %(j 1))for j in range(n _ vars)else:names=[( var % d(t % d) %(j 1,I))for j in range(n _ vars)]agg=concat(cols,axis=1)agg。columns=names if dropnan:agg。dropna(原地=真)返回agg导入数据集dataset=read_csv(PM2.5.csv ,header=0,index _ col=0)values=dataset。值编码器=标签编码器()值[:4]=编码器。fit _ transform(values[:4])值=值。astype(浮点32 )归一化scaler=minmax scaler(feature _ range=(0,1))scaled=scaler。拟合_转换(值)转化为监督数据reframed=series _ to _ supervised(scaled,1,1)删除不需要预测的列重构。下降(重新架构。columns[[9,10,11,12,13,14,15]],axis=1,in place=True)print(reframed。head())分割为训练集和数据集值=重新构建。值sn _ train _ hours=10000 train=values[:n _ train _ hours,]test=values[n _ train _ hours:]#划分自变量和因变量火车_X,火车_y=火车[:-1],火车[:-1]测试_X,test_y=test[:-1],test[:-1]train _ X=train _ X . shape((train _ X . shape[0],1,train _ X . shape[1]))test _ X=test_X.shape((test _ X . shape[0],1,test _ X . shape[1]))print(train _ X . shape,train_y.shape,test _ X . shape,test _ y . shape)LSTM打印( LSTM )模型=顺序()模型。加(LSTM(128反归一化inv_yhat=concatenate((yhat,test_X[:1:]),axis=1)inv _ yhat=scaler。逆变换(inv _ yhat)inv _ yhat=inv _ yhat[:0]inv _ y=scaler。逆变换(测试X)inv _ y=inv _ y[:0]真实值与预测值的对比pyplot.figure(figsize=(10,5))pyplot.title(100小时)pyplot.plot(inv_y[:100],label= Real )py plot。plot(inv _ yhat[:100],label= LSTM )py plot。图例()py图。显示()

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: