
简介凯斯西储大学CWRU轴承数据集是机械故障诊断领域广泛使用的经典公开资源面向滚动轴承故障识别方向的研究人员、工程师与学生。数据涵盖正常、内环、外环、滚珠等不同状态的振动信号支持从预处理到特征工程再到故障分类的完整研究链路。压缩包共172个文件以165个mat格式原始振动数据为主体配有3个Python程序、2个txt使用说明和2个pyc编译文件资源总大小约230.77MB。将解压后的文件与Python程序置于同一目录即可直接运行方便快速上手。目前已有24495人学习下载。配套的整理脚本和说明文档能帮助使用者避开常见的数据处理问题大幅提高故障诊断实验效率。 先讲个我印象特别深的场景。前几年带新人入门故障诊断我总让他去搜“轴承故障数据集”结果几乎每次排第一的都会是凯斯西储大学CWRU轴承数据集。新人高高兴兴下载下来发现满屏的.mat文件没有中文说明也没有配套读取代码当场就卡住了。这套数据在机械故障诊断领域的地位基本等同于MNIST在图像分类里的地位——几乎所有做轴承故障诊断的论文、课程和比赛初赛都会拿它当第一块试验田。今天我就把CWRU数据集的数据包结构、文件命名规则、Python读取整理思路以及我自己实际使用中踩过的坑一次性讲清楚给出一套可以照着改的代码框架让你从“不知道怎么下手”直接跳到“能跑通第一个分类实验”。1. 为什么一套上世纪90年代的数据到现在还是故障诊断入门第一课1.1 试验台和传感器布置CWRU数据集的采集地点是凯斯西储大学轴承数据中心实验台结构并不复杂一台2马力约1.5千瓦电机、一个扭矩传感器、一个测力计加上电子控制设备。被测轴承安装在电机的驱动端或风扇端常见型号是SKF 6205-2RS JEM深沟球轴承。加速度传感器分别装在驱动端壳体、风扇端壳体和电机基座三个位置其中驱动端和风扇端的信号被用得最多。你可以把整个试验台想象成一个心脏监测场景——轴承是“心脏”加速度传感器是贴在心脏周围的“听诊器”。不同位置听诊器听到的“心音”衰减程度不一样故障产生的冲击传到不同传感器时幅值和波形都会变化。CWRU数据集同时提供驱动端和风扇端数据就是为了让研究者有机会研究“测量点距离故障源远近”对诊断结果的影响。1.2 故障是怎么造出来的单点损伤数据集里的故障类型有三类内圈故障、滚动体故障、外圈故障。制造方式是在完好的轴承上用电机放电加工EDM人为制造单点损伤损伤直径有0.007英寸、0.014英寸、0.021英寸三档换算过来大约是0.1778毫米、0.3556毫米和0.5334毫米。另有少数文件包含0.028英寸的故障但日常实验里三档尺寸已经足够覆盖“早期-中期-晚期”的尺寸梯度。很多新手会问为什么故障直径要用英寸因为这套试验台和轴承都按英制规格设计论文和官方文档也默认英制。实际写论文时换算成毫米更直观。这里要特别注意不要把0.007理解成7毫米它实际是0.007英寸约0.18毫米属于很小的早期缺陷。故障尺寸对应信号里冲击能量的大小三个档次等于给算法设置了三个难度等级。1.3 负荷、转速与信号长度数据集提供了0马力、1马力、2马力、3马力四档负荷。负荷越高电机转速越低。常见参考值是0马力约1797转/分1马力约1772转/分2马力约1750转/分3马力约1730转/分。转速不同同一故障产生的冲击频率也不同这就给跨工况诊断研究提供了天然的测试条件。采样频率方面驱动端数据有12kHz和48kHz两套风扇端主要是12kHz。每个.mat文件大约记录10秒信号12kHz对应约12万个采样点48kHz对应约48万个采样点。初学者看到这个体量可能会有压力其实完全不用担心。真正操作思路不是把整个文件塞进模型而是先明确研究目标再滑窗切样本。这套数据之所以长盛不衰核心原因有两方面一是标签干净文件名自带故障位置、故障直径、负荷信息不用自己标注二是多年积累的“群体记忆”很厚你遇到的绝大多数数据处理问题早有人踩过并留下了答案。对刚入门的人来说用CWRU训练出来的效果可以直接和论文里的指标对比这一点是自己采集数据很难做到的。2. 数据包里到底装了什么目录结构与文件命名规则拆解2.1 解压后的典型目录长什么样从公开渠道下载到的CWRU数据包不同来源的目录结构会有差异但主体内容基本一致。最常见的组织方式是先按采样率分成三块12k Drive End Bearing Fault Data驱动端12kHz故障数据、12k Fan End Bearing Fault Data风扇端12kHz故障数据、48k Drive End Bearing Fault Data驱动端48kHz故障数据。正常状态数据Normal Baseline Data会单独归类有的版本还额外保留Originals等原始目录。不同渠道的整理版本还会按负荷继续分目录比如0hp、1hp、2hp、3hp。这种双维度组织方式让按工况筛选变得方便但如果你写脚本时硬编码了目录路径一旦换一个来源的数据包就会直接跑不起来。我的建议是脚本的第一优先级始终是解析文件名而不是依赖目录层级。文件名才是这个数据集里唯一的“官方标签”目录结构只是辅助。2.2 文件名的解读方式CWRU文件名格式在不同批次里并不完全统一这是老数据集的通病但总体规律一致。拿几个典型文件举例inner_race_007_0.mat内圈故障故障直径0.007英寸负荷0马力ball_014_1.mat滚动体故障故障直径0.014英寸负荷1马力outer_race_021_2.mat外圈故障故障直径0.021英寸负荷2马力normal_0.mat正常状态负荷0马力文件名主体由“故障位置_故障直径_负荷”三段构成。直径部分的写法有时是007有时是0.007大小写也不统一存在InnerRace、inner_race、IR007等多种形式。正常数据文件名可能是normal_0.mat也可能是97.mat这类纯数字命名。外圈故障还要额外注意位置信息部分文件会写成outer_race_007_0.mat中心位置、outer_race_007_6_0.mat6点钟方向、outer_race_007_12_0.mat12点钟方向。这三种位置关系到信号形态差异我在第4章会专门展开。2.3 一张表看清常见的10类样本实际实验里大家一般把任务定为10分类正常加上内圈故障、滚动体故障、外圈故障各三种尺寸。外圈故障优先选用中心位置文件避免位置变量污染结果。下面这张表是我自己建标签时常用的对照表可以直接复制使用。类别故障位置故障直径英寸文件名关键词示例常用标签正常无0normal、970内圈故障inner0.007inner_race_0071内圈故障inner0.014inner_race_0142内圈故障inner0.021inner_race_0213滚动体故障ball0.007ball_0074滚动体故障ball0.014ball_0145滚动体故障ball0.021ball_0216外圈故障outer0.007outer_race_0077外圈故障outer0.014outer_race_0148外圈故障outer0.021outer_race_0219不同论文习惯用“内圈-滚动体-外圈-正常”或“直径优先”的标签顺序这会直接影响混淆矩阵的排列。我的建议是建数据集的第一天就把标签字典写好固定在项目目录下。不要换一篇论文改一次标签映射否则后面核对结果时会非常痛苦。3. Python读取和整理CWRU数据的完整思路3.1 环境准备其实只要三个基础库读CWRU数据并不需要什么重型框架numpy做矩阵运算、scipy读取mat文件、matplotlib画波形图这三样就够跑通全流程。如果Python环境还没配好先装好3.8以上版本再在终端里执行pip install numpy scipy matplotlib。安装numpy时如果提示缺失某些包多半是pip版本太低或镜像源有问题先升级pip再重新安装即可。建议从一开始就把项目目录组织好本文还有配套的精品资源点击获取