1.背景
在工程领域,了解不同的工程系统和组件非常重要,不仅要了解它们当前的性能,还要了解它们的性能如何随着时间的推移而降低。这扩展到了预测领域,它试图根据系统或组件的过去和现在的状态来预测其未来。这个领域中的一个常见问题是估计剩余使用寿命,或者系统或组件功能将持续多长时间。这个问题的著名数据集是PHM和C-MAPSS数据集。这些数据集包含不同涡扇发动机随时间产生的模拟传感器数据,并已用于研究剩余使用寿命的估计。
2.C-MAPSS数据集
数据集:FD001
训练轨迹:100
测试轨迹:100
条件:一个(海平面)
故障模式:ONE(HPC降级)
数据集:FD002
训练轨迹:260
测试轨迹:259
条件:六
故障模式:ONE(HPC降级)
数据集:FD003
训练轨迹:100
测试轨迹:100
条件:一个(海平面)
故障模式:两种(HPC降级,风扇降级)
数据集:FD004
训练轨迹:248
测试轨迹:249
条件:六
故障模式:两种(HPC降级,风扇降级)
实验场景
数据集由多个多元时间序列组成。每个数据集进一步分为训练和测试子集。每个时间序列都来自不同的引擎,即,可以认为数据来自相同类型的引擎。每个发动机以不同程度的初始磨损和制造变化开始,这是用户未知的。该磨损和变化被认为是正常的,即,不被认为是故障状况。有三种对发动机性能有重大影响的运行设置。这些设置也包含在数据中。数据被传感器噪声污染。
在每个时间序列开始时,发动机均正常运行,并且在该时间序列中的某个时刻出现故障。在训练集中,故障的严重程度会不断增加,直到系统出现故障为止。在测试集中,时间序列在系统故障之前的某个时间结束。竞赛的目的是预测测试装置失效前的剩余运行循环数,即发动机将继续运行的最后一个循环后的运行循环数。还提供了测试数据的真实剩余使用寿命(RUL)值的向量。
数据以zip压缩文本文件形式提供,其中包含26列数字,并以空格分隔。每行是在单个操作周期内获取的数据的快照,每列是不同的变量。这些列对应于:
1)单位编号
2)时间,以周期为单位
3)操作设定1
4)操作设定2
5)操作设置3
6)传感器测量1
7)传感器测量2
…
26)传感器测量26
百度云盘下载:
链接:https://pan.baidu.com/s/1RXJhR3iiZGbxi4c1MbndhQ
提取码:nr9l
3.代码
import torch
import torch.nn as nn
import torch.nn.functional as F
import pandas as pd
from sklearn import preprocessing
import numpy as np
import torch.utils.data as Data
import matplotlib.pyplot as plt
device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
torch.manual_seed(2020)
train_df = pd.read_csv('train_FD001.txt', sep=" ", header=None) # train_dr.shape=(20631, 28)
train_df.drop(train_df.columns[[26, 27]], axis=1, inplace=True) # 去掉26,27列并用新生成的数组替换原数组
train_df.columns = ['id', 'cycle', 'setting1', 'setting2', 'setting3', 's1', 's2', 's3', 's4', 's5',
's6', 's7', 's8', 's9', 's10', 's11', 's12', 's13', 's14', 's15', 's16', 's17',
's18', 's19', 's20', 's21']
# 先按照'id'列的元素进行排序,当'id'列的元素相同时按照'cycle'列进行排序
train_df = train_df.sort_values(['id', 'cycle'])
test_df = pd.read_csv('test_FD001.txt', sep=" ", header=None)
test_df.drop(test_df.columns[[26, 27]], axis=1, inplace=True)
test_df.columns = ['id', 'cycle', 'setting1', 'setting2', 'setting3', 's1', 's2', 's3', 's4', 's5',
's6', 's7', 's8', 's9', 's10', 's11', 's12', 's13'