从一次深夜停机说起:旋转机械故障数据集到底能帮你做什么
【免费下载链接】Rotating-machine-fault-data-setOpen rotating mechanical fault datasets (开源旋转机械故障数据集整理)项目地址: https://gitcode.com/gh_mirrors/ro/Rotating-machine-fault-data-set
凌晨两点,某风电场的运维值班室里,报警灯突然亮起。中速轴轴承的温度比平时高了 12 摄氏度,振动幅值一路爬升,运维团队连夜赶赴机舱。事后拆检发现,外圈已经出现了明显的剥落——如果再晚几天发现,齿轮箱可能整体报废,一次更换的成本就是几十万元。
这样的故事每天都在工厂、电厂、轨道交通线上演。问题的核心是:设备不会提前告诉我们它"哪里疼",但它会留下信号——振动、温度、声音——就像病人发出的呻吟。而"旋转机械故障数据集",正是把设备这些"呻吟"整理成可学习的病历档案,让算法能够听懂并提前预警。
把振动信号想成设备的"心跳"
如果你去医院体检,医生会听心跳、测血压、看心电图。工业设备也一样:轴承、齿轮每转一圈,都会产生周期性的振动,这个波形就是它的"心跳"。
健康时,心跳平稳规律;当轴承内圈出现一道细小的裂纹,滚珠滚过裂纹时会产生规律的"冲击脉冲",反映在振动波形上,就是每隔固定间隔出现的尖峰。更妙的是,不同故障位置——内圈、外圈、滚动体——对应的冲击频率各不相同,就像不同的心律失常各有特征。把这段波形交给算法学习,它就能像心内科医生看心电图一样,判断"这台设备得的是什么病"。
但问题来了:真实工厂里,故障样本太稀缺了。谁也不可能故意让昂贵设备跑到坏掉来攒数据。于是,全球多所大学和研究机构设计了一系列实验平台,人为制造故障、施加负载、加速轴承老化,把实验全程的振动信号保存下来。这些散落在世界各地的数据,就是本项目Rotating-machine-fault-data-set要整理和提供的东西——一份公开的、跨机构的"设备病历档案库",专门服务于工业设备健康监测与预测性维护研究。
新手最常问的 5 个问题
1. 这份数据能做什么?三类典型任务:故障分类(判断设备是否故障、故障在哪)、退化趋势分析(设备还能用多久)、以及验证信号处理和深度学习算法。
2. 适合哪些人?正在做毕业设计或论文的机械/自动化专业学生、想入行工业智能的算法工程师、负责设备点检的运维人员,都可以从中受益。
3. 需要什么基础?会 Python、了解一点 NumPy 和简单的机器学习概念就足够了。信号处理知识可以在实践中边做边补。
4. 数据是什么格式?多为 MATLAB 的.mat文件和文本文件,Python 里用scipy.io.loadmat就能读取,也有 ASCII 格式可以直接读。
5. 用了别人的数据会不会有版权问题?项目内均为开源数据,但引用研究时需按各数据源版权方要求进行标注,仓库的doc/目录下每份数据集说明都给出了对应的论文引用信息。
从零跑通第一个故障分类 Demo
下面我用最经典的 CWRU 数据集(美国凯斯西储大学轴承数据中心)演示完整流程。它被誉为"轴承诊断领域的 MNIST",故障特征明显、文献丰富,是入门首选。它的详细说明见 doc/CWRU.md。
第一步:准备数据与环境
# 克隆仓库,查看数据获取说明 git clone https://gitcode.com/gh_mirrors/ro/Rotating-machine-fault-data-set pip install numpy scipy scikit-learn matplotlib第二步:加载数据并切分样本
import numpy as np from scipy.io import loadmat def load_sample(path, channel='DE_time', length=1200): """读取一段振动信号,并切成固定长度的样本""" data = loadmat(path)[channel].flatten() return [data[i:i+length] for i in range(0, len(data)-length, length)]以 12kHz 采样率为例,每 0.1 秒就是 1200 个采样点,可以作为一个样本。分别加载正常、内圈故障、外圈故障三类的数据,各切几百段,打上标签。
第三步:提取简单特征
def extract_features(sig): return [ np.sqrt(np.mean(sig**2)), # 均方根 RMS,反映振动强度 np.mean(np.abs(sig - np.mean(sig))**3) / np.std(sig)**3, # 偏度 np.mean((sig - np.mean(sig))**4) / np.std(sig)**4, # 峭度,冲击越强值越大 np.max(np.abs(sig)), # 峰值 ]峭度是这里最"懂行"的特征:健康轴承的峭度接近 3,出现冲击性故障时会明显抬升,能直观感受到"病征"。
第四步:训练与验证
from sklearn.ensemble import RandomForestClassifier from sklearn.model_selection import train_test_split from sklearn.metrics import accuracy_score X = np.array([extract_features(s) for s in all_samples]) y = np.array(labels) X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42, stratify=y) clf = RandomForestClassifier(n_estimators=200).fit(X_train, y_train) print("准确率:", accuracy_score(y_test, clf.predict(X_test)))即便只用这 4 个时域特征,随机森林在 CWRU 上通常也能达到 95% 以上的准确率。换用更复杂的频域、时频特征或深度学习模型,就是大家论文里的常规操作了。
避坑指南:那些让你白跑一周实验的坑
坑一:数据格式不统一不同机构的数据结构五花八门,有的存在嵌套结构里,有的含多通道。建议先写一个统一的加载函数,把各类数据都规整成(样本数, 长度)的二维数组,再开始后续工作。
坑二:样本重叠导致"虚假高分"切样本时如果滑动步长过小,训练集和测试集里会出现来自同一段原始信号的样本,模型其实是"背答案"。务必按"文件级"划分数据集,保证训练、测试样本互不重叠。
坑三:工况不同导致模型失灵在 0 马力负载下训练的分类器,拿到 3 马力数据上往往大幅退化,因为转速、负载改变了振动能量分布。解决思路是训练时混入多种工况,或使用迁移学习、域自适应技术。CWRU 之外,加拿大渥太华大学数据就专门提供变转速工况,非常适合这类研究(见 doc/README 第 14 节)。
坑四:把"人工故障"当成"真实故障"多数实验室数据是用电火花加工人为制造缺陷,特征相对"干净"。真实故障往往伴随多种退化同时发生,因此建议在掌握基础后,再挑战 MFPT 附带的风机轴承真实故障案例(见 doc/MFPT.md),体会理想与现实的差距。
一份档案,二十个来源,一个正在生长的生态
这个项目不是"某一家机构的数据",而是一份横跨全球的索引档案:美国凯斯西储大学的 CWRU、机械故障预防技术学会 MFPT、辛辛那提大学的 IMS 轴承退化数据,德国帕德博恩大学的电流-振动联合数据集,法国 FEMTO-ST 的加速退化实验,以及国内的西安交通大学 XJTU-SY 全寿命周期数据、东南大学齿轮箱数据、上海交通大学轴承数据等,合计二十余个数据源,每个数据源都有独立的说明文档、下载入口和配套论文。
尤其值得关注的是两类"进阶"数据:一类是 XJTU-SY 这类记录轴承从健康到完全失效全过程的数据(见 doc/XJTU_SY.md),它支撑的是剩余使用寿命预测——不是"有没有病",而是"还能撑多久";另一类是电机异音质检竞赛数据(见 doc 第 18 节),模拟的是工厂流水线上用 AI 替代人工听音的落地场景,离生产实际只有一步之遥。
更难得的是,项目维护者本身就是这个领域的工程师,长期活跃在数据使用、信号处理、智能诊断与寿命预测的交流中,社区氛围开放,欢迎在 Issues 里提问、分享心得,也欢迎提供新的公开数据源。可以说,这不仅是数据集,更是一群同行共建的"故障诊断地图"。
下一步,你该做什么
如果你正处于"想学故障诊断却不知道数据从哪来"的阶段,我的建议很直接:
- 克隆仓库,通读
README.md的目录,了解每份数据的定位; - 从 CWRU 入手,把上面的 Demo 完整跑通,建立"信号→特征→分类"的直觉;
- 换用 XJTU-SY 或 IMS 数据,尝试做一次简单的退化趋势分析;
- 把实验结果与公开论文对比,并注意按数据源要求正确引用。
数据是工业智能的燃料。这份开源整理把全球最优质的研究数据集中呈现在你面前,省下的找数据时间,足够你多跑几十组实验。设备不会说话,但它的振动信号里藏着答案——现在,读懂这份"病历档案"的工具和钥匙,都已经交到你手上了。
【免费下载链接】Rotating-machine-fault-data-setOpen rotating mechanical fault datasets (开源旋转机械故障数据集整理)项目地址: https://gitcode.com/gh_mirrors/ro/Rotating-machine-fault-data-set
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考