【涡扇发动机RUL专题】:分段退化标签,测试集可视化、评价指标
涡扇发动机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还是很有难度的,这主要在于侯建的神经网络模型。
RUL论文复现:深度卷积神经网络在预测学剩余寿命估计中的应用 ↩︎
Remaining useful life estimation using a bidirectional recurrent neural network based autoencoder scheme. Mechanical Systems and Signal Processing ↩︎
Investigating computational geometry for failure prognostics. International Journal of prognostics and health management, 2014 ↩︎
Transfer learning for remaining useful life prediction based on consensus self-organizing models. Reliability Engineering & System Safety, 2020, ↩︎
【涡扇发动机RUL专题】:分段退化标签,测试集可视化、评价指标相关推荐
- 测试集没有标签,应该怎么办?
作者丨堪村西蒙@知乎(已授权) 来源丨https://zhuanlan.zhihu.com/p/328686799 编辑丨极市平台 1. 概述 为了评估一个模型在计算机视觉任务(例如目标识别)上的表现 ...
- R语言图形用户界面数据挖掘包Rattle:加载UCI糖尿病数据集、并启动Rattle图形用户界面、数据集变量重命名,为数据集结果变量添加标签、数据划分(训练集、测试集、验证集)、随机数设置
R语言图形用户界面数据挖掘包Rattle:加载UCI糖尿病数据集.并启动Rattle图形用户界面.数据集变量重命名,为数据集结果变量添加标签.数据划分(训练集.测试集.验证集).随机数设置 目录
- Python计算训练数据集(测试集)中某个分类变量阴性(阳性)标签样本的不同水平(level)或者分类值的统计个数以及比例
Python计算训练数据集(测试集)中某个分类变量阴性(阳性)标签样本的不同水平(level)或者分类值的统计个数以及比例 目录
- python使用matplotlib对比多个模型在测试集上的效果并可视化、设置模型性能可视化结果柱状图(bar plot)标签的小数点位数(例如,强制柱状图标签0.7显示为两位小数0.70)
python使用matplotlib对比多个模型在测试集上的效果并可视化.设置模型性能可视化结果柱状图(bar plot)标签的小数点位数(例如,强制柱状图标签0.7显示为两位小数0.70) 目录
- R语言e1071包中的支持向量机:仿真数据(螺旋线性不可分数据集)、简单线性核的支持向量机SVM(模型在测试集上的表现、可视化模型预测的结果、添加超平面区域与原始数据标签进行对比分析)、如何改进核函数
R语言e1071包中的支持向量机:仿真数据(螺旋线性不可分数据集).简单线性核的支持向量机SVM(模型在测试集上的表现.可视化模型预测的结果.添加超平面区域与原始数据标签进行对比分析).如何改进核函数 ...
- Python使用tpot获取最优模型、将最优模型应用于交叉验证数据集(5折)获取数据集下的最优表现,并将每一折(fold)的预测结果、概率、属于哪一折与测试集标签、结果、概率一并整合输出为结果文件
Python使用tpot获取最优模型.将最优模型应用于交叉验证数据集(5折)获取数据集下的最优表现,并将每一折(fold)的预测结果.概率.属于哪一折与测试集标签.结果.概率一并整合输出为结果文件 目 ...
- 测试集没标签,可以拿来测模型吗?
文:维建 编:白鹡鸰 背景 正常情况下,我们可以用一个带标签的数据集来测试分类器的表现(称之为测试集).然而,现实中,因为种种因素的制约(标注成本高.标注难度大等 Google:穷人不配搞机器学习), ...
- 禁术级竞赛刷分技巧:找到跟测试集最接近的有标签样本
文 | 苏剑林 单位 | 追一科技 编 | 兔子酱 不管是打比赛.做实验还是搞工程,我们经常会遇到训练集与测试集分布不一致的情况.一般来说我们会从训练集中划分出来一个验证集,通过这个验证集来调整一些超 ...
- VOC数据集的划分(训练集,验证集,测试集) 生成txt文件和标签
训练集,验证集,测试集,生成对应的txt以及标签 以下代码是用于数据集划分,只需要修改config对象中对应的里的Annotations 文件夹和JPEGImages 文件夹路径即可! # 导入的模块 ...
最新文章
- 用树莓派DIY车钥匙,开锁仅需90秒
- Spark发布1.3.0版本
- 经典排序算法之直接选择排序
- 用python的turtle画圆-PYTHON练习1-turtle画圆
- matlab清理程序onCleanup
- Windows API 的数据类型与 Delphi 数据类型对照表
- VTK:可视化算法之LOxSeeds
- 多少人能过初赛_蜂蜜和水的比例是多少?蜂蜜水怎么冲最好?
- java将030A转换为方块_JAVA试题
- python简单语法_python的基本语法(一)
- 鼠标滚轮事件及解决滚轮事件多次触发问题
- java 生成二维码
- HTML音乐播放没声音,网页没有声音但系统显示有声音怎么回事?如何解决?
- 跨平台开源通讯组件elastic communication
- java面向对象练习题一
- 谁说互联网行业发展走到了尽头?
- python将txt读入矩阵_python读入txt数据,并转成矩阵
- 从TIN获取任意坐标点高程(原创)
- python struct pack_Python(12)教程11.标准库简介——第二部分
- 编程界的修仙秘籍《JavaScript》百炼成仙第1章
热门文章
- COMSOL多物理场/FDTD时域有限差分/ RSoft光电器件仿真设计“ 几十种案例解析,助您掌握光电器件仿真模拟
- 第一性原理态密度计算的基本原理和应用场景
- win10解除限制网速的方法【系统天地】
- 华为S9306破解console密码及清空配置
- string 转换 LPSTR LPCSTR LPCWSTR
- Softcam虚拟摄像机下载破解和使用
- php多客服系统,PHP客服系统_ThinkPHP核心多商户版在线客服对接适用场景[PC+WAP+公众号]...
- 〖教程〗LadonGO免杀Win10 Defender
- 用聚宽量化炒股-5获取数据函数-3)查询单个交易日账务数据函数get_fundamentals
- 12000+star的GANSynth,音乐与AI的完美结合