最强解析!CWRU轴承数据集Python实战:从数据加载到模型部署全流程

CWRU(凯斯西储大学) 轴承数据集简介 凯斯西储数据集介绍 阅读详情

1. 从零开始:为什么CWRU轴承数据集是故障诊断的“必修课”?

如果你刚接触工业设备的故障诊断,或者想找一个经典、干净、又足够有挑战的数据集来练手,那凯斯西储大学的这个轴承数据集,绝对是你的不二之选。我刚开始做这个方向的时候,也试过不少公开数据,但要么数据量太小,要么工况太单一,要么就是数据格式乱七八糟,预处理就得花掉一大半时间。CWRU轴承数据集不一样,它就像教科书里的标准例题,结构清晰,背景明确,几乎成了这个领域论文和项目的“基准线”。你去看任何一篇关于旋转机械故障诊断的顶会文章,十有八九都会用它来做性能对比。所以,搞定它,你不仅是在完成一个项目,更是在掌握一套行业通用的“语言”和“标尺”。

这个数据集到底好在哪?首先,它非常“真实”。数据是在一个真实的实验台架上采集的,模拟了电机驱动端和风扇端的轴承在不同负载(0到3马力)下运行的状态。故障类型也覆盖得很全,从最轻微的单点损伤(比如轴承内圈、外圈、滚动体上有一个小坑),到更严重的复合故障都有。传感器采集的是振动信号,这是工业现场最常用、也最有效的监测手段之一。其次,它非常“干净”。数据已经按不同的故障位置、故障尺寸(从0.007英寸到0.021英寸)、电机负载和采样频率(12kHz和48kHz)分门别类地整理好了。你不需要自己去猜测哪个文件对应什么状态,省去了大量数据清洗和标注的麻烦。这对于我们快速搭建原型、验证算法想法来说,简直是天大的福音。

那么,这个实战项目要做什么?我们的目标很明确:用Python构建一个端到端的轴承故障诊断系统。从把那一堆.mat数据文件读进内存开始,到把它们变成模型能“吃”的格式,再到设计并训练一个能准确识别“健康”、“内圈故障”、“外圈故障”、“滚动体故障”的智能模型,最后把这个模型打包保存,甚至做成一个简单的Web应用来演示。整个过程,我会把我踩过的坑、试过的好方法、以及那些让代码跑得更稳的小技巧,都毫无保留地分享给你。不管你是数据科学新手,还是想在这个领域深耕的算法工程师,跟着这个流程走一遍,你都能获得一个可以直接复用到自己项目里的“工业级”模板。

2. 数据加载与预处理:把“原始振动”变成“规整表格”

拿到数据的第一步,千万别急着往模型里塞。很多新手项目效果不好,问题往往就出在数据准备的草率上。CWRU的数据文件是MATLAB的.mat格式,这在科研领域很常见。我们用Python的scipy.io库就能轻松读取。

import numpy as np
import pandas as pd
from scipy.io import loadmat
import os

# 假设你的数据放在 ‘CWRU/‘ 目录下,结构是:驱动端/12k驱动端轴承数据/...
data_path = ‘CWRU/12k驱动端轴承数据/‘
file_list = os.listdir(data_path)

# 我们先加载一个文件看看结构
sample_file = ‘97.mat‘  # 例如,97对应的是驱动端内圈故障,0.007英寸损伤,1马力负载
sample_data = loadmat(os.path.join(data_path, sample_file))

# 查看这个.mat文件里有什么键
print(sample_data.keys())

你会发现,文件里通常包含一个类似‘X097_DE_time‘的键,其对应的值就是一个长长的振动信号序列。这里DE代表驱动端加速度计数据。我们需要把这个一维时间序列信号,以及它的标签(健康还是哪种故障)提取出来。

但这里有个关键点:我们不能直接用整个长时间序列去训练。一个信号文件可能有几十万甚至上百万个点,直接扔进模型计算量巨大,而且序列太长,模型也很难学到有效的局部特征。标准的做法是进行滑动窗口分割。想象一下,你用一把固定长度的尺子,在长长的信号带上滑动,每次截取一小段,这一小段就是一个样本。这样,一个长文件就能生成成百上千个训练样本,极大地扩充了数据量。

def segment_signal(data, window_size, step_size):
    """将一维信号按滑动窗口分割成多个样本"""
    segments = []
    num_samples = len(data)
    for start in range(0, num_samples - window_size + 1, step_size):
        segment = data[start:start + window_size]
        segments.append(segment)
    return np.array(segments)

# 假设我们读取了振动信号 ‘signal‘ 和对应的标签 ‘label‘
window_size = 1024  # 每个样本的长度,也是后续模型输入的长度。这个值需要根据信号频率和故障特征周期来调整。
step_size = 512     # 滑动步长,步长越小,生成的样本越多,但样本间相关性也越大。

segments = segment_signal(signal, window_size, step_size)
# 此时 segments 的形状是 (n_samples, window_size)
# 为每一个segment都赋予相同的标签 label
labels = np.full(len(segments), label)

接下来是数据标准化。振动信号的幅值可能因为负载不同而有很大差异,为了不让模型被这些量纲差异所误导,我们需要对每个特征(这里是信号的每个时间点)进行标准化,通常使用Z-score标准化,即减去均值再除以标准差,使得数据分布接近均值为0,标准差为1。

from sklearn.preprocessing import StandardScaler

# 假设我们已将所有样本堆叠成一个大矩阵 all_segments,形状为 (total_samples, window_size)
scaler = StandardScaler()
# 注意:拟合时应该只使用训练集数据,避免数据泄露
scaler.fit(train_segments)
train_segments_scaled = scaler.transform(train_segments)
test_segments_scaled = scaler.transform(test_segments)

最后,别忘了划分

故障诊断--深入研究CWRU数据集 通过在轴承上人为制造故障,采集了多种故障类型和不同故障尺寸的振动数据。该数据集包括正常状态和多种故障状态下的轴承振动信号。数据负载条件指的是数据采集时设备或者系统所承受的工作负荷或外部施加的力/功率。比如,在故障诊断中,负载条件可能指电机输出的扭矩或者功率,不同负载导致轴承振动信号的变化。数据采集时 电机的负载分为四种:0马力(空载)、1马力、2马力、3马力。:故障直径分别为0.007英寸、0.014英寸、0.021英寸和0.028英寸。轴承在无故障状态下的振动信号。:包括内圈故障、外圈故障和滚动体故障。 阅读详情

相关推荐

CWRU数据集-美国西储大学轴承数据

1.实验平台 1.1 平台组成 一个1.5KW(2马力)的电动机(图左侧); 一个扭矩传感器/ 译码器(图中间连接处); 一个功率测试计(图右侧); 电子控制器(图中没显示) 1.2 待测轴承 待检测的轴承支撑着电动机的转轴; 驱动端(Drive End)轴承为SKF6205 ,采样频率为12Khz和48Khz; 风扇端(Fan End)轴承为SKF6203 ,采样频率...

博客 4593

python实战故障诊断之CWRU数据集(一):数据集初识

在完成了振动信号处理的基础篇与高级篇后,不少读者建议采用真实数据对各类振动信号算法进行剖析。经过几个月的搜集与积累,笔者决定从公开的凯斯西储大学(CWRU)轴承数据入手,以新南威尔士大学RobertB.Randall教授数十年多篇论文为切入点,继续与大家探索隐藏在振动信号中的奥秘。.........

白银时代的博客 1万+

CWRU轴承故障数据集的整理与应用

在工业设备中,轴承的健康状况直接关联着整个机械系统的稳定运行。轴承故障会导致设备效率下降,甚至引起严重的工作事故。因此,轴承的健康监测和故障预测成为工业自动化的热点研究领域。CWRU(Case Western Reserve University)轴承故障数据集是一个广泛使用的公开数据集,其包含了多种运行条件和故障类型下采集的轴承振动数据。该数据集的发布,为轴承故障诊断和预测技术的研究提供了重要的实验平台。

weixin_28999139的博客 2282

CWRU轴承数据集(附说明文件)

CWRU轴承数据集(附说明文件)。包含所有原始数据,以mat文件格式保存。 CWRU轴承数据集(附说明文件)。包含所有原始数据,以mat文件格式保存。 CWRU轴承数据集(附说明文件)。包含所有原始数据,以mat文件格式保存。 CWRU轴承数据集(附说明文件)。包含所有原始数据,以mat文件格式保存。 CWRU轴承数据集(附说明文件)。包含所有原始数据,以mat文件格式保存。 CWRU轴承数据集(附说明文件)。包含所有原始数据,以mat文件格式保存。 CWRU轴承数据集(附说明文件)。包含所有原始数据,以mat文件格式保存。 CWRU轴承数据集(附说明文件)。包含所有原始数据,以mat文件格式保存。 CWRU轴承数据集(附说明文件)。包含所有原始数据,以mat文件格式保存。 CWRU轴承数据集(附说明文件)。包含所有原始数据,以mat文件格式保存。 CWRU轴承数据集(附说明文件)。包含所有原始数据,以mat文件格式保存。 CWRU轴承数据集(附说明文件)。包含所有原始数据,以mat文件格式保存。 CWRU轴承数据集(附说明文件)。包含所有原始数据,以mat文件格式保存。

凯斯西储大学(CWRU)轴承数据集(含数据包+整理Python程序+使用说明)

使用方法: import cwru data = cwru.CWRU("12DriveEndFault", "1797", 384) 再用 data.X_train, data.y_train, data.X_test, data.y_test, data.labels, data.nclasses 详解: data.X_train:训练数据的纯特征数据 data.y_train:训练数据的标签(0-15,共16个数字) data.labels:标签0-15对应的具体的故障诊断类型名称 data.nclasses:一共多少类,输出16 12DriveEndFault:采样频率12kHz的驱动端故障数据 1797:每分钟转速,负载不同对应转速就不同: 0hp(马力)——1797 1hp(马力)——1772 2hp(马力)——1750 3hp(马力)——1730 384:每列信号长度,训练样本和测试样本的大小会随之改变,可用如下函数计算具体样本长度 i = 0 j = 0 k = 0 for num in data.y_train: j = j+1 #总的训练样本数据个数 if num == 13: #训练样本每种类型的样本长度,1-14差不多长,15(正常类型)大概是其它的2倍 i = i+1 for num in data.y_test: k = k+1 #测试样本数据个数 print(i, j, k) 试了一下300-700比较合适 ('0.007-Ball', '0.007-InnerRace', '0.007-OuterRace12', '0.007-OuterRace3', '0.007-OuterRace6', '0.014-Ba

从GWAS到单细胞:利用seismic包精准定位疾病相关的关键细胞亚群与驱动基因

本文详细介绍了如何利用seismic包将GWAS与单细胞测序数据结合,精准定位疾病相关的核心细胞亚群与驱动基因。通过创新的统计算法和实战案例,帮助研究者从遗传汇总数据中挖掘关键生物学机制,提升疾病研究的精准度和效率。

weixin_29215815的博客 434

从零开始:EAS2+Elmo+Maxon电机调试全流程(含电流环优化技巧)

本文详细解析了从零开始搭建基于EAS2软件、Elmo驱动器和Maxon电机的运动控制系统的全流程。内容涵盖硬件连接规范、EAS2基础配置、核心的电流环模型辨识与手动优化技巧,以及速度环、位置环的搭建与调试策略,旨在帮助工程师构建稳定、高性能的伺服控制核心。

i0j1k2l3m的博客 493

视觉语言模型对抗攻击与防御:从传统方法到多模态挑战

本文深入探讨了视觉语言模型(VLM)面临的对抗攻击与防御挑战,从传统单模态攻击到多模态威胁的演进。分析了包括FGSM、PGD等经典攻击方法,以及新兴的多模态攻击如跨模态对抗样本和越狱攻击。同时提出了跨模态一致性检查、动态防御机制等创新防御策略,并结合医疗影像诊断等实战案例,为提升AI系统安全性提供了重要见解。

weixin_29231725的博客 385

聚类分析之——Kmeans算法(一)

原创地址:http://www.toutiao.com/i6399454239554273794/ 聚类分析是一种静态数据分析方法,常被用于数据挖掘、机器学习、模式识别等领域,聚类是一种无监督式的学习方法。它是在未知样本类别的情况下,通过计算样本彼此间的距离(欧式距离,马式距离,汉明距离,余弦距离等)来估计样本所属类别。从结构性来划分,聚类方法分为自上而下和自下而上两种方法。聚类的算法有很多

june2017的博客 3526

电机驱动器MP6540H应用设计

/ ... 其他初始化函数(SystemClock_Config, MX_GPIO_Init, MX_TIM1_Init, MX_TIM2_Init)需要你根据STM32CubeMX生成或手动编写。// 假设霍尔传感器引脚是 GPIO_PIN_8, GPIO_PIN_9, GPIO_PIN_10。// 低侧U相GPIO引脚。

zhusl6688的博客 636

web渗透--9--识别web应用框架

1、概述 Web框架指纹识别是信息收集过程中的一个重要任务。获悉目标框架的类型必然为测试人员带来极大的优势,如果该框架在之前就被测试过。测试人员不仅可以获得未修补版本中存在的漏洞,还可以了解此框架中特有的错误配置以及已知的文件结构。从而使指纹识别过程显得格外重要。

武天旭的博客 5086

28、基准剂量法:原理、应用与计算详解

本文详细介绍了基准剂量法(BMD)的原理、在监管机构中的应用以及具体的计算方法。内容涵盖样本量与BMD的关系、主要监管机构如EPA对BMD的应用、BMD的模型选择与数据拟合过程、拟合优度评估、下置信限(BMDL)计算,以及实验设计对BMD结果的影响。同时,还讨论了剂量指标和响应选择的关键问题,为理解和应用基准剂量法提供了全面的参考。

info6的博客 271

华为OD机试 - 整型数组按照个位数排序(Python/JS/C/C++ 双机位C卷 100分)

本专栏收录于《华为OD机试真题(Python/JS/C/C++)》。刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD刷题交流群,每一题都有详细的答题思路、详细的代码注释、3个测试用例、为什么这道题采用XX算法、XX算法的适用场景,发现新题目,随时更新。给定一个非空数组(列表),其元素数据类型为整型,请按照数组元素十进制最低位从小到大进行排序,十进制最低位相同的元素,相对位置保持不变。当数组元素为负值时,十进制最低位等同于去除符号位后对应十进制值最低位。给定一个非空数组,其元素数据类型为32位有

学Java,找哪吒 394

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

上一篇: LightRAG实战:5分钟快速搭建一个轻量级法律问答系统(附完整代码)
下一篇: 手把手教你用RemoteCLIP实现遥感图像零样本分类(附代码)
time3
博客等级 码龄20年 55粉丝 1482原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值