共计 1952 个字符,预计需要花费 5 分钟才能阅读完成。
背景介绍
CMAPSS(Commercial Modular Aero-Propulsion System Simulation)数据集由 NASA 发布,是航空发动机剩余使用寿命(RUL)预测的基准数据集。它广泛应用于预测性维护领域,帮助工程师提前识别发动机故障,降低维护成本。数据集包含四个子集(FD001-FD004),分别模拟不同复杂度的工况:

- FD001:单一工况,无故障模式
- FD002:多工况,无故障模式
- FD003:单一工况,包含故障模式
- FD004:多工况,包含故障模式
数据结构分析
CMAPSS 数据集包含 26 个传感器通道,每个通道对应发动机的特定物理量,例如:
- 传感器 1:总温度(℃)
- 传感器 2:总压力(psi)
- 传感器 3:静压(psi)
- …(其他传感器省略)
工况条件(operating conditions)通过三个参数编码,分别表示飞行高度、马赫数和油门角度。这些参数帮助模型区分不同飞行阶段的发动机状态。
特征工程挑战
处理 CMAPSS 数据时,需解决以下问题:
- 传感器噪声 :部分传感器存在随机波动,可通过滑动平均或低通滤波平滑。
- 缺失值 :某些传感器在特定工况下无数据,需插值或标记处理。
- 初始磨损差异 :不同发动机的初始状态不同,需归一化或引入初始健康指标。
代码示例
数据加载与可视化
import pandas as pd
import matplotlib.pyplot as plt
# 加载数据
train_data = pd.read_csv('CMAPSS/train_FD001.txt', sep=' ', header=None)
sensor_columns = [f'sensor_{i}' for i in range(1, 27)]
train_data.columns = ['engine_id', 'cycle'] + ['op_cond_1', 'op_cond_2', 'op_cond_3'] + sensor_columns
# 绘制传感器趋势图
engine_id = 1 # 选择特定发动机
engine_data = train_data[train_data['engine_id'] == engine_id]
plt.figure(figsize=(12, 6))
for sensor in ['sensor_1', 'sensor_2', 'sensor_3']:
plt.plot(engine_data['cycle'], engine_data[sensor], label=sensor)
plt.xlabel('Cycle')
plt.ylabel('Sensor Value')
plt.legend()
plt.show()
特征提取
# 计算滑动窗口统计特征
def extract_features(df, window_size=5):
features = []
for sensor in sensor_columns:
df[f'{sensor}_mean'] = df[sensor].rolling(window=window_size).mean()
df[f'{sensor}_std'] = df[sensor].rolling(window=window_size).std()
features.extend([f'{sensor}_mean', f'{sensor}_std'])
return df, features
建模实践
模型对比
- RNN:基础循环网络,适合短期依赖。
- LSTM:解决长期依赖问题,性能优于 RNN。
- Transformer:捕捉全局依赖,但需要更多数据。
训练代码片段
import tensorflow as tf
from tensorflow.keras.layers import LSTM, Dense
# 定义 LSTM 模型
model = tf.keras.Sequential([LSTM(64, input_shape=(None, len(features))),
Dense(1)
])
model.compile(optimizer='adam', loss='mse')
# 设置随机种子
tf.random.set_seed(42)
# 训练模型
history = model.fit(X_train, y_train, epochs=50, validation_split=0.2)
避坑指南
- 数据泄露 :确保测试数据不参与训练过程的任何环节(如归一化)。
- 评估指标 :使用 RMSE(均方根误差)和 Score 函数(NASA 提供的评估指标)。
延伸阅读
- 原始论文:Saxena, A., et al. “Damage propagation modeling for aircraft engine run-to-failure simulation.”
- GitHub 项目:https://github.com/nasa/CMAPSS-Dataset
正文完
发表至: 未分类
四天前
