公司动态

机械故障诊断公开数据集全攻略:从CWRU到XJTU-SY

📅 2026/8/31 15:43:31
机械故障诊断公开数据集全攻略:从CWRU到XJTU-SY
简介本资源是面向机械故障诊断研究者与工业智能运维工程师的公开数据集汇编聚焦旋转机械、传动系统及液压装置等典型装备的异常识别任务支撑状态监测、故障分类、健康评估等算法开发与模型验证。资源包共349个文件主体为199个MATLAB格式信号数据含振动、声学等时序样本、34个CSV工况与标签文件如train.csv、inner_30_2.csv等、52个zbak备份文件及配套文档docx/doc/pdf总容量915.35MB多模态数据涵盖轴承与齿轮四类典型故障样本、健康基准数据及热成像、油液分析等异构信息。已有153人学习下载适用于机器学习建模、故障演化分析及智能诊断系统开发。所有数据经脱敏处理并附详细采集环境、设备参数与标注规则说明目录结构按故障类型与工况分层组织便于快速定位实验所需子集显著降低数据预处理门槛。 做机械故障诊断这几年我听到最多的抱怨不是算法效果差而是“我该用什么数据跑实验”。公开数据集确实是这个领域最大的门槛之一真正的工业故障数据往往是厂家核心机密想拿实测数据做研究基本靠关系而公开数据集又散落在各个课题组和实验室官网格式五花八门标注标准不统一找起来费劲用起来更费劲。这篇文章我把目前机械故障诊断领域主流、可公开获取的数据集做了系统整理覆盖轴承、齿轮箱、全生命周期退化数据、系统级仿真数据等几大类。每个数据集我都会说清楚它的来源、结构、适用场景、采样参数、官方获取渠道以及我在实际使用中踩过的坑。文末还会附上可以直接跑的Python读取示例方便你拿到数据后快速上手。这篇文章适合谁看如果你正准备做故障诊断方向的研究、需要对比算法效果但苦于找不到统一基准数据或者你是工业现场工程师想了解学术界常用的验证数据长什么样这篇文章都能帮你省下一两周的“找数据”时间。1. 核心数据源概览从CWRU到XJTU-SY的梯队分布1.1 行业最经典的CWRU轴承数据集CWRUCase Western Reserve University轴承数据集学机械故障诊断的人几乎没有不知道的。它由凯斯西储大学电气工程实验室发布是目前引用率最高、使用最广泛的轴承故障公开数据集也是大多数论文用来验证算法有效性的第一块试金石。这套数据采集自一个电机驱动系统实验台包含电机、扭矩传感器、测功机等部件。实验中使用电火花加工技术在轴承上人为制造了单点故障覆盖了滚动体故障、内圈故障、外圈故障三种主要失效模式每种故障又按照直径分为0.007英寸、0.014英寸、0.021英寸、0.028英寸四个等级加上正常状态一共是四种健康状态。采样频率主要有12kHz和48kHz两个版本分别在电机驱动端和风扇端加速度计上采集。它最容易被忽视的细节是负载工况。数据按照电机负载分为0、1、2、3马力四档对应的转速大约在1730到1797 r/min之间。很多初学者拿到数据之后直接取前几千个点做训练完全不管负载差异这样做出来的模型换个工况就“原形毕露”。我自己做跨工况泛化实验时通常把其中一种负载的数据作为训练集其余负载作为测试集这样更能检验模型的域泛化能力。CWRU的下载方式很直接在官方网站上按文件名逐条下载即可。每个压缩包对应一组实验条件文件是Matlab的.mat格式用scipy.io可以直接读取。需要注意的一点是CWRU的文件命名规则不算太友好建议下载后先建一个映射表把文件名对应的故障类型、故障尺寸、负载条件都整理清楚否则后面处理数据时会非常混乱。1.2 比CWRU更“硬核”的帕德博恩轴承数据集德国帕德博恩大学Universität Paderborn发布的轴承数据集相比之下参与度低一些但工程价值很高。这套数据有一个很突出的特点它不仅包含人工损伤通过电火花、钻孔、手动雕刻等方式制造还包含真实磨损损伤通过加速寿命试验台自然跑出来的后者更接近实际工况中的故障形态。帕德博恩轴承数据集的实验台结构较为复杂包含电机、扭矩测量轴、轴承模块、飞轮、负载电机等。振动信号在多个测点同步采集采样频率为64kHz这意味着数据量非常大单组实验的原始文件动辄几GB。数据集中包含了健康状态、人工损伤和真实损伤等不同状态类别每种状态的样本数量并不均衡需要使用者自行处理类别不平衡问题。我自己在帕德博恩数据上做实验最大的感受是它的故障特征不像CWRU那么“干净”。真实磨损数据里混着大量噪声和工况波动直接用CWRU上调参好的模型搬过来准确率会掉得很明显。如果论文里只拿CWRU验证而回避帕德博恩审稿人一眼就能看出来。这个数据集非常适合用来验证算法在“更真实、更脏”的数据上的鲁棒性。获取方式是在帕德博恩大学官网的下载页面申请需要填写使用登记表审核通过后会收到下载链接。文件同样是.mat格式每个文件名包含轴承编号、损伤类型、转速、负载等信息命名规则比CWRU更系统解析起来反而省事。1.3 国内高价值代表XJTU-SY轴承加速寿命数据集西安交通大学与昇阳科技联合发布的XJTU-SY轴承加速寿命试验数据集这几年在RUL剩余使用寿命预测和退化趋势分析方向几乎成了必用数据。它不像CWRU那样只有“正常故障”的离散状态而是完整记录了轴承从健康状态到完全失效的全过程特别适合做退化建模。这套数据采集自一个轴承加速寿命试验台包含三个不同的工况条件转速与径向力组合每个工况下采集了多个轴承的全寿命振动信号。采样频率为25.6kHz每次采集持续1秒间隔1分钟记录一次每个样本包含水平方向和垂直方向两个通道存储为CSV格式整组数据文件按“轴承编号_工况编号”的方式组织结构非常清晰。阅读CSV文件时要注意每行数据量很大25.6k个点但采样时长为1秒所以一个CSV文件就是某个时间断面的一秒时域信号。将多个CSV按时间顺序拼接后你就能得到完整的退化信号序列。我在实际处理时习惯把每个CSV文件当作一个“样本”保留其时间顺序给模型输入时使用滑窗截取子序列这样既能保留退化趋势又能扩充样本量。XJTU-SY还有一个好处是官方提供了对应的失效照片和失效类型标注保持架断裂、外圈磨损等方便研究者结合失效模式做分析。如果做跨工况的寿命预测它的数据规模够用但要注意不同轴之间的寿命差异比较大直接混在一起训练容易导致模型“偷懒”——只学会时间趋势而没有学会真正的退化特征。2. 齿轮箱与传动系统数据集的选型指南2.1 东南大学齿轮箱数据集齿轮箱是工业传动系统的核心部件故障诊断难度比单一轴承更高因为振动信号中混入了齿轮啮合频率、边频带、轴承冲击等多种成分。东南大学发布的齿轮箱数据集在齿轮箱诊断方向上是国内用得比较多的公开数据之一。这套数据来自一个包含两级行星齿轮箱和两级平行轴齿轮箱的传动系统实验台采集了行星齿轮箱在不同健康状态下的振动信号包含正常、行星轮磨损、齿根裂纹、断齿等多种故障类型。采样频率通常设置为12.8kHz或20kHz采集过程中同时记录了电机转速、转矩等工况参数。数据同样以.mat格式存储常用于行星齿轮箱故障识别和齿轮磨损程度评估的研究。使用这套数据时有一个细节需要留意数据是在恒定转速条件下采集的但实际工业应用中齿轮箱转速往往是波动的。做算法验证时如果只用恒定转速数据模型的变工况适应能力会被高估。我建议可以先用东南大学数据做基础实验再用自己采集的非平稳数据做补充验证这样论文的说服力会更强。2.2 加拿大渥太华大学与MFPT数据集对比渥太华大学University of Ottawa轴承数据集和MFPTMechanical Failure Prevention Technology数据集也经常出现在故障诊断论文中但两者侧重点不太一样。渥太华大学数据集是在不同转速和负载条件下采集的轴承振动数据包含了正常状态以及内圈、外圈故障等数据采集条件覆盖更广适合做变工况条件下的轴承故障诊断。MFPT数据集则更像一个“精选集”它来自美国MFPT学会的故障预测测试平台包含正常、外圈故障、内圈故障等数据采样频率为97.7kHz采样时间较长信号非常稳定适合做基础算法验证。个人感受是MFPT数据的信噪比很高、故障特征清晰适合快速跑通算法流程但正因为信号太“干净”用它验证出来的性能在真实工业场景中会有比较大的折扣。渥太华大学数据集噪声更多挑战性更强更适合做泛化实验。两者可以搭配使用MFPT做快速原型验证渥太华数据做鲁棒性评估。2.3 复合故障与齿轮-轴承耦合场景的数据选择工业现场的故障很少是“单一故障”出现更多是齿轮磨损加轴承点蚀同时发生。复合故障诊断也是近两年比较热门的研究方向但公开数据集里真正包含复合故障的并不多。如果你需要做齿轮-轴承复合故障研究目前公开数据中最常被使用的是东南大学齿轮箱数据集中的某些复合故障样本还有一些课题组发布的专用复合故障数据集。不过这一类数据整体比较稀缺很多论文实际上是先在公开数据上验证单一故障诊断再用自采数据补充复合故障实验。如果你没有条件自采数据也可以考虑将单一故障数据在时域或频域上进行合成人为构造复合故障信号——但合成数据与真实复合故障的物理机制差异较大论文里需要明确说明这一点。3. 全生命周期退化数据集从故障诊断走向剩余寿命预测3.1 IMS轴承全生命周期数据IMSIntelligent Maintenance Systems轴承全生命周期数据集由美国辛辛那提大学智能维护系统中心发布是RUL预测领域的老牌公开数据。整套数据来自一个轴承试验台四个轴承同时安装在轴上运行振动信号通过加速度计采集每10分钟记录一次数据文件按“记录批次”存储每个批次包含四个通道的振动信号采样频率为20kHz。IMS数据最大的价值在于它记录了轴承从健康到失效的完整过程既有缓慢的退化过程也有最终阶段的剧烈振荡。做寿命预测的时候最重要的是先定义“寿命终点”。IMS数据的寿命终点通常定义为振动幅值显著增大的时刻但这个阈值如何设直接影响模型训练标签的生成。我在使用时会先检查每个轴承全寿命数据的RMS趋势图人工确认失效点再把标签做分段平滑处理避免因为标签突变导致模型训练不稳定。3.2 FEMTO-ST / PRONOSTIA加速退化数据PRONOSTIA实验台数据由法国FEMTO-ST研究所发布是IEEE PHM 2012数据挑战赛使用的数据集在剩余寿命预测论文里出镜率极高。实验台专门设计用于轴承加速退化试验可以在短时间内让轴承走完整个寿命周期。采样频率为25.6kHz每个样本时长为0.1秒包含水平方向和垂直方向两个通道的振动信号。这套数据的特点是退化过程非常剧烈寿命从几十秒到几小时不等。做预测时常见的一个问题是很多轴承样本的早期退化特征很不明显信号看起来和健康状态几乎一样而后期又突然恶化。初学者往往直接把全寿命数据扔进模型训练结果模型“认为”前期是健康状态、后期是故障状态精度看似很高实际上只是学会了时间先后。我在实验时会把训练样本限制在“第一个报警点之后”的数据否则预测结果会有严重的乐观偏差。3.3 XJTU-SY在RUL预测中的实操要点前面已经介绍过XJTU-SY数据的基本情况这里补充几点RUL预测时的实操经验。很多人下载完XJTU-SY数据后会直接开始切窗训练但忽略了两个问题一是样本不平衡问题健康阶段的样本数量远多于退化阶段直接训练会导致模型偏向多数类二是退化起点的确定问题不同的退化起点设置会得到完全不同的RUL标签。我习惯的做法是先用滑动窗口计算每个样本的RMS或峰值因子画出退化趋势曲线再用3σ准则或者人工目测确定退化起点。标签生成时采用分段线性函数——从退化起点到失效点RUL从1线性递减到0退化起点之前统一设为1。这样处理之后模型学到的退化趋势更稳定评估结果也更接近真实表现。3.4 C-MAPSS数据集与系统级故障诊断C-MAPSSCommercial Modular Aero-Propulsion System Simulation是美国NASA发布的涡扇发动机退化仿真数据集严格来说它不属于传统机械故障诊断的范畴而是面向系统级剩余寿命预测和健康管理。数据来自一个商用涡扇发动机仿真模型包含多个工况条件和故障模式每个样本包含来自21个传感器的多变量时间序列。这个数据集在PHM领域的地位和CWRU在轴承诊断领域的地位类似。它最大的优点是样本数量大、子数据集划分明确FD001到FD004复杂度递增非常适合做序列模型和跨工况泛化研究。缺点是数据是仿真生成的和真实发动机数据存在一定差距而且每个子数据集的规则不同FD001是单工况单故障FD004是多工况多故障使用前一定要仔细阅读数据说明否则很容易把不同子数据集的处理方式混淆。4. 数据集下载与实操复现一个完整的Python读取示例4.1 CWRU数据下载与解析CWRU数据下载下来后通常是zip压缩包解压得到.mat文件。读取.mat文件在Python里很顺手import scipy.io as sio import numpy as np mat sio.loadmat(12kHz_DE_0hp_0.007-Ball.mat) # CWRU的mat文件一般包含多个字段需要打印一下keys确认 print(mat.keys())CWRU每个.mat文件中的字段比较多而且不同文件字段名略有差异。以驱动端12kHz采样数据为例加速度信号通常存储在以“DE”开头的字段中DE_time同时还有“FE_time”风扇端和“BA_time”基座等字段。我建议读取之后立刻把数据转成float32并保存为npy格式这样后续实验加载速度会快得多。4.2 XJTU-SY数据读取与切窗XJTU-SY的CSV格式读取更简单但需要特别注意文件组织方式import pandas as pd import numpy as np # 以工况1的某个轴承为例 data_dir XJTU-SY/35_Hz_12kN/ csv_list sorted(os.listdir(data_dir)) signals [] for csv_file in csv_list: df pd.read_csv(os.path.join(data_dir, csv_file), headerNone) signals.append(df.values) # 此时signals是时间戳列表每个元素是25600×2的矩阵注意sorted()按字符串排序时文件名“10.csv”会排在“9.csv”前面这在拼接时间序列时会出问题。有些版本的文件名带前导零有些不带。稳妥的做法是按文件名中的数值排序例如用keylambda x: int(x.split(.)[0])归一化排序。这个细节能省掉不少莫名其妙的实验bug。4.3 文件格式与预处理的通用建议不同数据集的采样频率差异很大从12kHz到64kHz不等。如果直接混合使用必须先做统一重采样。我的建议是统一降采样到12kHz或16kHz在重采样前最好先用滚动均值或低通滤波器做抗混叠处理否则高频噪声会折叠到低频段。另一个通用建议是每个样本的输入长度尽量保持一致比如统一取2048点或4096点。输入长度太短信息量不足太长则训练开销加大且容易过拟合。数据归一化也是一个常被忽略的问题。有些数据集本身是电压信号有些是加速度信号量纲不同直接拼接使用会引入不必要的偏差。在进入模型之前建议逐样本做标准化或者按传感器通道单独归一化。如果做跨数据集验证比如CWRU上训练、帕德博恩上测试通道差异和采样频率差异都需要提前统一处理否则跨域效果会非常惨烈。5. 数据使用中的常见问题与避坑清单5.1 训练/测试划分不规范导致结果不可复现现在的论文普遍存在一个“隐性作弊”问题同一段信号既出现在训练集里又出现在测试集里。很多公开数据集中同一个工况下的多个样本高度相似如果随机打乱后按比例划分训练集和测试集中很可能出现来自同一连续信号段的片段导致模型“背答案”。我做对比实验时一般坚持“按样本组划分”而不是“按样本点划分”——同一段连续信号的片段只能进入训练集或测试集之一这样评估结果才可信。5.2 数据集间的域偏移与跨域泛化陷阱很多研究者的目标是做一个“通用模型”在CWRU上训练在帕德博恩或者XJTU-SY上测试。但不同数据集之间的域偏移非常大不只是采样频率不同还有传感器安装位置、轴承型号、工况条件、故障制造方式等差异。直接跨数据集测试准确率往往断崖式下降。这不一定是算法问题而更可能是特征分布差异太大。做跨域实验时我建议至少保留部分目标域的少量样本做Domain Adaptation或者使用无监督域自适应方法。纯零样本跨数据集诊断现在仍然是非常难的任务论文里需要谨慎定义实验设置否则很容易被审稿人质疑。5.3 少样本与不平衡场景的处理故障诊断领域普遍面临故障样本稀缺的问题。公开数据集里有些故障类别可能只有几个文件直接训练会严重过拟合。常见的处理方式包括使用SMOTE等过采样方法、基于仿真或GAN生成故障样本、采用小样本学习few-shot learning框架。但要注意合成样本不等于真实故障样本如果合成数据分布与真实分布差异过大反而会误导模型。我比较推荐先把传统的特征提取方法时域统计特征、频域特征、小波包能量等跑一遍用小样本情况下仍然有效的传统方法作为baseline再考虑上深度学习。5.4 引用规范、数据版权与下载渠道维护公开数据集虽然免费开放但基本都有版权协议或使用条款论文中使用后一定要正确引用数据集的发布论文或引用说明。有些数据集官网并不稳定链接会随着课题组成员变动而失效。建议在下载数据后把数据说明文档、文件名映射表、预处理脚本一起整理归档方便日后复现。另外如果你的论文依赖某个数据集应该尽可能把数据下载方式与版本信息写清楚方便其他研究者复现你的实验结果。6. 数据集选择速查表与后续扩展我把上面提到的核心数据集整理成一张速查表方便你按需求快速定位数据集适用对象核心故障类型采样频率存储格式适用场景CWRU轴承内圈/外圈/滚动体单点故障12k/48k HzMAT基础算法验证、分类帕德博恩轴承人工损伤真实磨损64k HzMAT鲁棒性/跨域验证XJTU-SY轴承全寿命退化/多种失效模式25.6k HzCSV剩余寿命预测、退化建模IMS轴承全寿命退化20k HzTXT剩余寿命预测FEMTO/PRONOSTIA轴承加速退化25.6k HzCSV寿命预测挑战赛基准东南大学齿轮箱齿轮箱齿轮磨损/断齿/裂纹12.8k/20k HzMAT齿轮箱故障诊断渥太华大学轴承内圈/外圈故障多种MAT/TXT变工况诊断MFPT轴承内圈/外圈/正常97.7k HzMAT基础算法快速验证C-MAPSS涡扇发动机多工况多故障退化仿真数据TXT系统级寿命预测选数据集不能只盯着“最流行的”。纯粹做分类算法创新CWRU足够起步做工程落地验证帕德博恩的真实磨损数据更能说明问题做寿命预测方向XJTU-SY和FEMTO是绕不开的基准。如果你有条件自建实验台采集数据也建议先用上面这些公开数据完成算法验证再采集自己的数据进行小规模调优这样既有可对比性又有工程说服力。我的个人习惯是不管用什么数据集跑实验第一次跑通后立即生成一张“数据集信息卡片”把这些信息记下来采样频率、通道数量、故障类别数量、每类样本数量、传感器位置、工况条件、数据格式、读取脚本路径、预处理方式。后面写论文或者做对比实验时翻信息卡比重新翻原始说明文档要快得多。这个习惯帮我省了非常多的时间和精力。最后说一个数据使用之外的体会公开数据集的价值在于为整个领域提供了一把统一的“尺子”使得不同团队之间的算法有了可比性。但工业现场的真实数据远比任何一种公开数据复杂和“脏”花时间理解公开数据集背后的实验条件和采集细节永远好过盲目追求模型在新数据上的刷新率。做机械故障诊断数据意识比模型技巧更重要。本文还有配套的精品资源点击获取