您现在的位置是:首页 > 技术教程 正文

基于pytorch搭建多特征LSTM时间序列预测代码详细解读(附完整代码)

admin 阅读: 2024-03-23
后台-插件-广告管理-内容页头部广告(手机)

文章目录

  • LSTM时间序列预测
    • 数据获取与预处理
    • 模型构建
    • 训练与测试

LSTM时间序列预测

对于LSTM神经网络的概念想必大家也是熟练掌握了,所以本文章不涉及对LSTM概念的解读,仅解释如何使用pytorch使用LSTM进行时间序列预测,复原使用代码实现的全流程。

数据获取与预处理

首先预览一下本次实验使用的数据集,该数据集共有三个特征,将最后一列的压气机出口温度作为标签预测(该数据集是我在git上收集到的)
数据集

定义一个xls文件读取的函数,其中data.iloc()函数是将dataframe中的数据进行切片,返回数据和标签

# 文件读取 def get_Data(data_path): data=pd.read_excel(data_path) data=data.iloc[:,:3] # 以三个特征作为数据 label=data.iloc[:,2:] # 取最后一个特征作为标签 print(data.head()) print(label.head()) return data,label
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

使用sklearn中的preprocessing模块中的归一化函数对数据进行归一化处理,其中data=data.values函数是将dataframe中的数据从pd格式转换np数组,删除轴标签,fit_transform函数是fit()和transform()的组合,是将fit和transform合并,一步到位的结果,最后返回data,label和归一化的标签值

# 数据预处理 def normalization(data,label): mm_x=MinMaxScaler() # 导入sklearn的预处理容器 mm_y=MinMaxScaler() data=data.values # 将pd的系列格式转换为np的数组格式 label=label.values data=mm_x.fit_transform(data) # 对数据和标签进行归一化等处理 label=mm_y.fit_transform(label) return data,label,mm_y
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

我们将数据进行归一化之后,数据是np数组格式,我们需要将其转换成向量的格式存储在列表当中,因此,先创建两个空列表,建立一个for循环将预处理过的数据最后按x.size(0),seq_length,features)的纬度输出至列表当中。其中seq_length代表的是时间步长,x.size(0)则表示的是数据的第一维度,features代表的是数据的特征数。打印x,y的维度并返回x,y。

# 时间向量转换 def split_windows(data,seq_length): x=[] y=[] for i in range(len(data)-seq_length-1): # range的范围需要减去时间步长和1 _x=data[i:(i+seq_length),:] _y=data[i+seq_length,-1] x.append(_x)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
标签:
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

在线投稿:投稿 站长QQ:1888636

后台-插件-广告管理-内容页尾部广告(手机)
关注我们

扫一扫关注我们,了解最新精彩内容

搜索