涡扇发动机RUL预测

  • 常用的数据处理技术
    • 分段线性退化标签处理
    • 评价指标
    • 单台发动机可视化
      • 单独可视化的效果
      • 查看任意一台发动机的RUL预测情况
  • 总结

常用的数据处理技术

一直以为涡扇发动机的RUL不会有太多人关注,没想到最近有不少粉丝问我,涡扇发动的RUL预测没怎么做单台发动机的可视化。之前由于很早之前也卡在这有一段时间,后来折腾了一下解决了这个问题,然后就基本上没有对该数据集的RUL预测有过较深入的研究。目前,主要是研究滚动轴承的RUL预测,这也是我大论文的使用的主要数据集。

分段线性退化标签处理

在这篇博客 RUL论文复现:深度卷积神经网络在预测学剩余寿命估计中的应用1 中,我主要是将的模型的简单复现,其中的这种图单台发动机可视化的图,首先要做的就是对标签进行, 分段新型标签是目前该数据集提升RUL“所谓的预测精度”的一种方法。
具体的核心代码在RUL论文复现:深度卷积神经网络在预测学剩余寿命估计中的应用-代码里也有,这里就简单贴出来一段

"""
采用分段线性退化假说:参照相关的文献,其分段的RUL认为>=130的RUL值,均标记为RUL=130注意:部分文献的分段RUL=125
"""
#pandas读取数据/True:以,为分割符/names:指定列名
df_train = pd.read_csv('../../dataset/train_FD001.txt',delim_whitespace=True,names=input_file_column_names)rul = pd.DataFrame(df_train.groupby('UnitNumber')['Cycle'].max()).reset_index()
rul.columns = ['UnitNumber', 'max']
#将每一Unitnumber中最大的Cycle找到,并在原来的df_train中添加新的colum,位置为Unitnumber的左边,也即在最右端
df_train = df_train.merge(rul, on=['UnitNumber'], how='left')
#计算出RUL对应的各个值
df_train['RUL'] = df_train['max'] - df_train['Cycle']
#然后在把最大的max去掉
df_train.drop('max', axis=1, inplace=True)df_train
def fun(x):if x >= 125:return 125else:return xdf_train['RUL']=df_train['RUL'].apply(lambda x: fun(x))

评价指标

对于评价指标,一般常用的就是RMSE和Scoring 2008的得分函数。同时也有一部分文献采用一种新的评价指标叫做:准确率。例如对于FD001的测试集,
(1)我可以计算每一台发动机的RUL预测值与真实值之间的误差,error
(2)并判断其是否在区间[-13,10]之间。
(3)如果在区间内,则计算引入计数环节。有多少error在区间内,则计数多少(M)
(4)最后计算accuracy = M/N(FD001测试集发动机的数目)×100%
具体的文件可以参考

方法 年份 作者及文献
BiLSTM-ED 2019 Yu 等 2
RULCLIPPER 2014 Ramasso 等3
import keras.backend as K
from sklearn.metrics import mean_squared_error
import numpy as np
import pandas as pd#1.自定义评价指标RMSE
def RMSE(y_true, y_pred):return K.sqrt(K.mean(K.square(y_pred -y_true)))#2.自定义PHM2008评价函数
def Scoring_2008(Y_true, Y_pred):h = Y_pred - Y_trueg = (-(h-K.abs(h))/2.0)f = ((K.abs(h)+h)/2.0)return K.sum(K.exp(g/13.0)-1)+K.sum(K.exp(f/10.0)-1)
#3.[-13.0,10]之间的相对准确率
def Function_Accuracy(x):i=0for j in range(len(x)):if x[j]+13>=0 and x[j]<=10:i = i+1precent_acc = i/len(x)return precent_acc

单台发动机可视化

单台发动机的可视化,对于丰富文章的内容还是挺有必要的。此外,由于发动机有100来台,不同于公开的轴承数据集只有十几个轴承。因此,单台发动机的RUL预测还可以用于迁移学习做RUL预测,之前就看到郭一篇用该数据集做迁移学习的。文章如下Transfer learning for Remaining Useful Life Prediction Based on Consensus Self-Organizing Models4

单独可视化的效果

基本上文献上对比的单独可视化的发动机id基本上是固定,就是只有那几个发动机的整个RUL的预测效果是最好,因此,才会进行可视化展示。例如FD001#21、FD002#24、FD003#34和FD004#81等,这四台发动机 本身就很很容易预测。
但是如果要去找到表现更好的RUL预测效果,就需要了解每一台发动的具体可视化情况、因此就需要进行单台发动机的可视化。

查看任意一台发动机的RUL预测情况

为了能够找到预测效果较好的额发动机,就需要查看每一台的情况,具体如下。
可以看出102、110和111这三台的RUL预测效果很理想,因此就可以拿过来做可视化,而不用局限于其他文献。

总结

涡扇发动机的RUL预测上手很容易,但是想要做到较好的RMSE和Score还是很有难度的,这主要在于侯建的神经网络模型。


  1. RUL论文复现:深度卷积神经网络在预测学剩余寿命估计中的应用 ↩︎

  2. Remaining useful life estimation using a bidirectional recurrent neural network based autoencoder scheme. Mechanical Systems and Signal Processing ↩︎

  3. Investigating computational geometry for failure prognostics. International Journal of prognostics and health management, 2014 ↩︎

  4. Transfer learning for remaining useful life prediction based on consensus self-organizing models. Reliability Engineering & System Safety, 2020, ↩︎

【涡扇发动机RUL专题】:分段退化标签,测试集可视化、评价指标相关推荐

  1. 测试集没有标签,应该怎么办?

    作者丨堪村西蒙@知乎(已授权) 来源丨https://zhuanlan.zhihu.com/p/328686799 编辑丨极市平台 1. 概述 为了评估一个模型在计算机视觉任务(例如目标识别)上的表现 ...

  2. R语言图形用户界面数据挖掘包Rattle:加载UCI糖尿病数据集、并启动Rattle图形用户界面、数据集变量重命名,为数据集结果变量添加标签、数据划分(训练集、测试集、验证集)、随机数设置

    R语言图形用户界面数据挖掘包Rattle:加载UCI糖尿病数据集.并启动Rattle图形用户界面.数据集变量重命名,为数据集结果变量添加标签.数据划分(训练集.测试集.验证集).随机数设置 目录

  3. Python计算训练数据集(测试集)中某个分类变量阴性(阳性)标签样本的不同水平(level)或者分类值的统计个数以及比例

    Python计算训练数据集(测试集)中某个分类变量阴性(阳性)标签样本的不同水平(level)或者分类值的统计个数以及比例 目录

  4. python使用matplotlib对比多个模型在测试集上的效果并可视化、设置模型性能可视化结果柱状图(bar plot)标签的小数点位数(例如,强制柱状图标签0.7显示为两位小数0.70)

    python使用matplotlib对比多个模型在测试集上的效果并可视化.设置模型性能可视化结果柱状图(bar plot)标签的小数点位数(例如,强制柱状图标签0.7显示为两位小数0.70) 目录

  5. R语言e1071包中的支持向量机:仿真数据(螺旋线性不可分数据集)、简单线性核的支持向量机SVM(模型在测试集上的表现、可视化模型预测的结果、添加超平面区域与原始数据标签进行对比分析)、如何改进核函数

    R语言e1071包中的支持向量机:仿真数据(螺旋线性不可分数据集).简单线性核的支持向量机SVM(模型在测试集上的表现.可视化模型预测的结果.添加超平面区域与原始数据标签进行对比分析).如何改进核函数 ...

  6. Python使用tpot获取最优模型、将最优模型应用于交叉验证数据集(5折)获取数据集下的最优表现,并将每一折(fold)的预测结果、概率、属于哪一折与测试集标签、结果、概率一并整合输出为结果文件

    Python使用tpot获取最优模型.将最优模型应用于交叉验证数据集(5折)获取数据集下的最优表现,并将每一折(fold)的预测结果.概率.属于哪一折与测试集标签.结果.概率一并整合输出为结果文件 目 ...

  7. 测试集没标签,可以拿来测模型吗?

    文:维建 编:白鹡鸰 背景 正常情况下,我们可以用一个带标签的数据集来测试分类器的表现(称之为测试集).然而,现实中,因为种种因素的制约(标注成本高.标注难度大等 Google:穷人不配搞机器学习), ...

  8. 禁术级竞赛刷分技巧:找到跟测试集最接近的有标签样本

    文 | 苏剑林 单位 | 追一科技 编 | 兔子酱 不管是打比赛.做实验还是搞工程,我们经常会遇到训练集与测试集分布不一致的情况.一般来说我们会从训练集中划分出来一个验证集,通过这个验证集来调整一些超 ...

  9. VOC数据集的划分(训练集,验证集,测试集) 生成txt文件和标签

    训练集,验证集,测试集,生成对应的txt以及标签 以下代码是用于数据集划分,只需要修改config对象中对应的里的Annotations 文件夹和JPEGImages 文件夹路径即可! # 导入的模块 ...

最新文章

  1. 用树莓派DIY车钥匙,开锁仅需90秒
  2. Spark发布1.3.0版本
  3. 经典排序算法之直接选择排序
  4. 用python的turtle画圆-PYTHON练习1-turtle画圆
  5. matlab清理程序onCleanup
  6. Windows API 的数据类型与 Delphi 数据类型对照表
  7. VTK:可视化算法之LOxSeeds
  8. 多少人能过初赛_蜂蜜和水的比例是多少?蜂蜜水怎么冲最好?
  9. java将030A转换为方块_JAVA试题
  10. python简单语法_python的基本语法(一)
  11. 鼠标滚轮事件及解决滚轮事件多次触发问题
  12. java 生成二维码
  13. HTML音乐播放没声音,网页没有声音但系统显示有声音怎么回事?如何解决?
  14. 跨平台开源通讯组件elastic communication
  15. java面向对象练习题一
  16. 谁说互联网行业发展走到了尽头?
  17. python将txt读入矩阵_python读入txt数据,并转成矩阵
  18. 从TIN获取任意坐标点高程(原创)
  19. python struct pack_Python(12)教程11.标准库简介——第二部分
  20. 编程界的修仙秘籍《JavaScript》百炼成仙第1章

热门文章

  1. COMSOL多物理场/FDTD时域有限差分/ RSoft光电器件仿真设计“ 几十种案例解析,助您掌握光电器件仿真模拟
  2. 第一性原理态密度计算的基本原理和应用场景
  3. win10解除限制网速的方法【系统天地】
  4. 华为S9306破解console密码及清空配置
  5. string 转换 LPSTR LPCSTR LPCWSTR
  6. Softcam虚拟摄像机下载破解和使用
  7. php多客服系统,PHP客服系统_ThinkPHP核心多商户版在线客服对接适用场景[PC+WAP+公众号]...
  8. 〖教程〗LadonGO免杀Win10 Defender
  9. 用聚宽量化炒股-5获取数据函数-3)查询单个交易日账务数据函数get_fundamentals
  10. 12000+star的GANSynth,音乐与AI的完美结合