基于深度学习的回归预测课程介绍

一.内容介绍

本文以航空发动机从运行到下发过程中的模拟数据集为研究对象,以计算机的模拟计算为主要方式,旨在构建基于深度学习的航空发动机RUL预测模型,结合机器学习技术和背景专业知识,实现智能化预测。
主要分为两个部分:

1.第一部分是数据预处理,包括参数筛选和滤波平滑处理。

(1)参数筛选:首先对单工况与多工况的数据集构建测量性能监测参数进行筛选,从所有可用的特性中选择有用的条件指标是构建可靠的RUL预测模型的第一步,方法1,计算各个发动机性能变化的的线性回归模型,并利用各性能参数回归模型的斜率绝对值大小来对单工况与多工况下的性能监测参数进行筛选,选出具有单调增长或下降态势的退化参数,方法2,为准确的RUL预测提供了三个特征选择指标:单调性、趋势性和预测性,这些指标将已确定的条件指标按0到1的范围进行排序,高阶特征可以更可靠地跟踪退化过程,因此更适合训练RUL预测模型,在后面的内容中,会详细的对这三个函数进行讲解。
(2)滤波平滑和归一化处理:由于获得的发动机退化参数存在着噪声干扰和随机性波动问题,使用一维数字滤波器对退化参数进行滤波处理,清除数据中的噪声,采用局部加权回归(Lowess)来平滑数据,弱化退化数据中的随机波动,提高RUL预测的准确度,采用归一化缩放方式,将数据缩放至0—1之间,消除每台发动机退化数据中维度和大小不统一的问题,利用上述方法分别对发动机的训练数据和试验数据进行了处理。
(3)注意:对于CMAPSS中的多工况的数据,由于其变化过程相比较与单工况的数据较为复杂,在后面的章节中会单独拿出来进行介绍和处理。

2.第二部分是建立以深度学习为基础的航空发动机RUL预测模型

根据训练数据建立以深度学习为基础的航空发动机RUL预测模型,最后依照测试数据集对所建立的模型进行测试,得出最终的RUL预测结果,检验模型的稳定性和准确性,完成以深度学习为基础的RUL的预测研究。其中用到的模型有循环神经网络模型——RNN(递归神经网络模型)、LSTM(长短期记忆神经网络模型)、BLSTM(双向长短期记忆神经网络模型)、GRU(门控循环单元)和BGRU(双向门控循环单元);卷积神经网络模型(CNN);注意力机制——自注意力机制、残差自注意力机制和多头自注意力机制;CNN-循环神经网络模型的混合模型;基于注意力机制的深度混合模型;Transformer模型。

二.软件说明

本文的深度学习部分均采用的Pytorch编程。对于数据预处理部分,如参数筛选、参数的滤波和平滑处理以及后面对多工况数据的工况聚类划分以及Z-score标准化处理,均由MATLAB实现。
如果你只是想学习并了解深度学习的编程,我会把用到的数据打包并处理好上传,大家只需要看深度学习部分的编程即可。

三.各个章节的内容说明

为了帮助大家更好地理解模型,每个章节介绍的时候都会依从原理介绍+实操代码的原则。

四.特别说明

真正了解了深度学习之后,你就会发现不同模型的构建以及拼接就如同搭积木一样——通俗点说就是对应好不同模型的输入跟输出,你的模型就能跑的通。然而pytorch的不足之处在于没法直接展示所搭建的模型的各个参数值,本人通过重建模型法可实现各个不同模型之间的参数变化的可视化展示。以CNN 模型为例子,输入的尺寸为三维(3000,50,17),经过卷积计算、池化计算以及全连接层之后的变化过程可视化代码如下:

#%%
from sklearn.preprocessing import MinMaxScaler,StandardScaler
from sklearn.metrics import mean_absolute_error as MAE
from sklearn.metrics import mean_squared_error as MSE
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
from tqdm import tqdm
import seaborn as sns
import pickle
import torch.nn as nn
import torch.nn.functional as F
import torch
import shutil
seed=1
device = torch.device('cuda:0' if torch.cuda.is_available() else 'cpu')#使用GPU CPU
#device = 'gpu'
torch.manual_seed(seed)#随机情况
print("当前设备:",device)

fcNodes = 100

x = torch.randn(3000, 50, 17)
print("输入尺寸",x.shape)
x = x.permute(0, 2, 1)
print("经过转置后的尺寸",x.shape)
x = nn.Conv1d(17, 100, stride=1, padding=0, kernel_size=48)(x)
print("经过卷积层后的尺寸",x.shape)

x = nn.MaxPool2d(2, stride=1)(x)
print("经过池化层后的尺寸",x.shape)
x = x.permute(0, 2, 1)
print("经过转置后的尺寸",x.shape)

x = x.contiguous().view(-1, 198)
print("转换成二维的尺寸",x.shape)
x = nn.Linear(198, 100)(x)
print("经过第一个全连接的尺寸",x.shape)
x = nn.Linear(100, 1 * 1)(x)
print("经过第二个全连接的尺寸",x.shape)

最终的输出结果为:

输入尺寸 torch.Size([3000, 50, 17])
经过转置后的尺寸 torch.Size([3000, 17, 50])
经过卷积层后的尺寸 torch.Size([3000, 100, 3])
经过池化层后的尺寸 torch.Size([3000, 99, 2])
经过转置后的尺寸 torch.Size([3000, 2, 99])
转换成二维的尺寸 torch.Size([3000, 198])
经过第一个全连接的尺寸 torch.Size([3000, 100])
经过第二个全连接的尺寸 torch.Size([3000, 1])

通过清晰明了的可视化,就可以帮助我们更好地搭建深度学习模型,只要对应好输入跟输出,代码就能跑的通!

五.基于MATLAB 将C-MAPSS zip格式中的数据输出到excel中

基于pytorch的深度学习模型的输入,本文采用的是读取EXCEL的格式,代码如下所示:

#%%
from sklearn.preprocessing import MinMaxScaler,StandardScaler
from sklearn.metrics import mean_absolute_error as MAE
from sklearn.metrics import mean_squared_error as MSE
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
from tqdm import tqdm
import seaborn as sns
import pickle
import torch.nn as nn
import torch.nn.functional as F
import torch
import shutil

### 超参数设置
#输入列
# inCols = ['循环数','setting1', 'setting2', 'setting3', 's1', 's2', 's3',
#           's4', 's5', 's6', 's7', 's8', 's9', 's10', 's11', 's12', 's13', 's14',
#           's15', 's16', 's17', 's18', 's19', 's20', 's21']
inCols = ['循环数','setting1', 'setting2', 's2', 's3',
          's4','s6','s7','s8' ,'s9', 's11','s12', 's13', 's14',
          's15', 's17', 's20', 's21']

#输出列
outCols = ['剩余寿命']
#输入时间步
inStep = 50
#输出时间步
outStep = 1
#LSTM节点数
lstmNodes = 90
#CNN节点数
cnnNodes = 100
#全连接层节点数
fcNodes = 100
#学习率
lr = 1e-4
#批处理量
batchSize = 4000
#训练次数
epochs =1200
#随机种子
seed=1

#%% md
"""
import torch
print(torch.__version__)

print(torch.version.cuda)
print(torch.backends.cudnn.version())
"""


### pytorch设置

device = torch.device('cuda:0' if torch.cuda.is_available() else 'cpu')#使用GPU CPU
#device = 'gpu'
torch.manual_seed(seed)#随机情况
print("当前设备:",device)

### 读取数据

# %%

trainData = pd.read_excel("pinghua130train_FD001.xlsx")
testData = pd.read_excel("pinghuatest_FD001.xlsx")
trainData.head()

因此,需要将原始数据C-MAPSS zip格式中的数据输出到excel中,数据处理采用MATLAB,具体操作步骤如下(不用担心,我会上传处理好的数据):

步骤1.发动机退化模拟数据集下载到一个名为“CMAPSSData.zip”的文件中,并将其解压缩到当前目录中名为“data”的文件夹中。

filename = "CMAPSSData.zip";
if ~exist(filename,'file')
    url = "https://ti.arc.nasa.gov/c/6/";
    websave(filename,url);
end

dataFolder = "data";
if ~exist(dataFolder,'dir')
    mkdir(dataFolder);
end
unzip(filename,dataFolder)

步骤2.把table转化为excel,需要注意的是,vertcat只能转化一列,因此先把剩余寿命那一列拆开

file = fullfile(dataFolder,"train_FD002.txt");%提取训练集

rawTrain_x = localLoadData(file);   %获得训练的输入项
C_x = table2cell(rawTrain_x)  %将table转化为cell
out_x = vertcat(C_x{:});   %将cell转化为excel

rawTrain_y = localLoadData1(file); 
C_y = table2cell(rawTrain_y)  %将table转化为cell
out_y = vertcat(C_y{:})+1;   %将cell转化为excel

步骤3.将out_xout_y复制到excel中。

六.总结

是深度学习使得你我相遇在CSDN中,回顾我自己在深度学习领域中的学习经历,确实走了不少弯路,自己也迷茫过,不知道如何下手,整天看着花里胡哨的论文,更不知道自己该从哪里下手。首先,感谢大家的信任!!!请大家放心,我定会把我对深度学习的所学(代码源码)传授给大家!!!希望我的这个小课程可以给你带来一些小惊喜(如果有些许意外,我会吸取大家的意见!!!积极改正),也希望我的课程能给你的科研带来一些帮助,当然更希望我的课程能帮助大家更好地入门深度学习。在下非计算机科班出身,有些说的不通透的地方希望大家谅解,当然我会尽全力给大家整理好每一章的内容,最最最关键的,代码请大家放心,我会原版的搬出与你们共享。说些题外话,大家科研之余也要适当的娱乐,要知道劳逸结合,多多锻炼身体。最后的最后,祝我们大家都得偿所愿!

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论

已下架不支持订阅

深度学习回归预测模型是一种使用深度神经网络进行回归预测模型回归预测是指根据输入数据的特征,预测连续的目标变量值。深度学习回归模型通过多个层次的神经元组成的网络来学习输入数据中的非线性关系,从而实现对目标变量的预测。 构建深度学习回归预测模型的一般步骤如下: 1. 数据准备:收集并预处理用于训练和测试的数据集。这包括数据清洗、特征选择和标签编码等。 2. 构建网络结构:选择合适的深度神经网络结构,如多层感知器(MLP)或卷积神经网络(CNN)。网络结构的设计应考虑输入数据的特征和目标变量的性质。 3. 模型训练:使用训练数据对深度学习模型进行训练。这涉及到选择适当的损失函数和优化算法,并迭代地更新模型的权重和偏置。 4. 模型评估:使用测试数据集评估模型的性能。常见的评估指标包括均方误差(MSE)、均方根误差(RMSE)和决定系数(R-squared)等。 5. 模型调优:根据评估结果对模型进行调优,如调整网络结构、超参数调整等,以提高模型的性能和泛化能力。 深度学习回归预测模型在许多领域都有广泛的应用,如金融预测、销售预测、房价预测等。它能够处理复杂的非线性关系,并具有较强的预测能力。然而,构建和训练深度学习模型需要大量的数据和计算资源,并且需要仔细调整模型参数以避免过拟合。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Striving521

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值