资讯动态

西储大学轴承数据集解析与故障诊断实战

发布时间:2026/10/27 17:34:42 来源:尧图企业网站定制
1. 西储大学轴承数据概述西储大学轴承数据集Case Western Reserve University Bearing Data是机械故障诊断领域最经典的公开数据集之一。这个数据集采集自实验台架上不同健康状态的滚动轴承振动信号包含了从正常状态到多种故障类型内圈、外圈、滚动体故障的完整数据记录。我第一次接触这个数据集是在研究生阶段做旋转机械故障预测课题时。当时为了验证算法效果需要标准化的轴承振动数据作为基准而CWRU数据集因其完整的故障类型覆盖和精确的工况标注成为不二之选。十多年过去这个数据集依然是故障诊断领域的黄金标准。2. 数据获取与MAT格式解析2.1 数据集下载渠道官方数据可以通过西储大学轴承数据中心网站获取。虽然界面看起来有些年头但数据分类非常系统按驱动端/风扇端轴承位置分类按负载工况0-3马力分级按故障直径0.007-0.028英寸细分包含正常状态和多种故障类型的.mat文件提示下载时建议建立规范的文件夹结构例如按负载_故障位置_尺寸三级目录存放后期处理时会节省大量时间。2.2 MAT文件结构解析MAT文件是MATLAB的专用数据格式但通过Python的scipy.io库可以轻松读取。一个典型的CWRU数据文件包含以下关键字段import scipy.io as sio data sio.loadmat(97.mat) print(data.keys()) # 查看文件包含的变量常见数据结构包括DE驱动端轴承振动信号最常用FE风扇端轴承振动信号BA基座振动信号RPM转速信息通常为1797rpm2.3 数据预处理要点原始振动信号通常需要以下预处理步骤去直流分量signal data[DE][:,0] # 获取驱动端振动信号 signal signal - np.mean(signal) # 去除直流偏移重采样处理 原始采样率为12kHz对于某些应用可能过高from scipy import signal resampled signal.resample(signal, len(signal)//2) # 降采样到6kHz数据标准化from sklearn.preprocessing import StandardScaler scaler StandardScaler() normalized scaler.fit_transform(signal.reshape(-1,1))3. 典型应用场景实现3.1 时频特征提取实战轴承故障诊断的核心是特征工程。以下是提取经典时域特征的Python实现def extract_features(signal): features {} features[RMS] np.sqrt(np.mean(signal**2)) features[Kurtosis] np.mean((signal - np.mean(signal))**4) / np.std(signal)**4 features[CrestFactor] np.max(np.abs(signal)) / features[RMS] return features频域特征可通过FFT变换获得n len(signal) freq np.fft.fftfreq(n, d1/12000)[:n//2] fft_vals np.abs(np.fft.fft(signal))[:n//2]3.2 故障诊断模型构建使用随机森林进行故障分类的完整流程from sklearn.ensemble import RandomForestClassifier from sklearn.model_selection import train_test_split # 假设已提取特征矩阵X和标签y X_train, X_test, y_train, y_test train_test_split(X, y, test_size0.3) model RandomForestClassifier(n_estimators100) model.fit(X_train, y_train) print(f测试集准确率{model.score(X_test, y_test):.2%})3.3 深度学习端到端方案对于原始振动信号可以使用1D-CNN直接处理from tensorflow.keras import layers, models model models.Sequential([ layers.Conv1D(32, 3, activationrelu, input_shape(12000,1)), layers.MaxPooling1D(2), layers.Flatten(), layers.Dense(64, activationrelu), layers.Dense(4, activationsoftmax) # 假设4类故障 ]) model.compile(optimizeradam, losssparse_categorical_crossentropy)4. 工程实践中的关键问题4.1 数据不平衡处理CWRU数据集中不同故障类型的样本数差异较大。常用解决方法过采样技术from imblearn.over_sampling import SMOTE X_res, y_res SMOTE().fit_resample(X, y)类别权重调整class_weights compute_class_weight(balanced, classesnp.unique(y), yy) model.fit(X_train, y_train, class_weightdict(enumerate(class_weights)))4.2 跨工况泛化挑战不同负载条件下的数据分布差异会导致模型性能下降。解决方案特征标准化from sklearn.preprocessing import RobustScaler scaler RobustScaler(quantile_range(25,75)) # 对异常值鲁棒域适应技术 使用MMD最大均值差异等度量学习方法来减小分布差异4.3 实时处理优化工业现场往往需要实时处理可以考虑滑动窗口处理def sliding_window(signal, window_size, step): for i in range(0, len(signal)-window_size, step): yield signal[i:iwindow_size]特征计算优化 使用Numba加速特征计算from numba import jit jit(nopythonTrue) def rms(x): return np.sqrt(np.mean(x**2))5. 扩展应用与前沿方向5.1 与其他数据集的联合使用可以将CWRU数据与以下数据集结合使用帕德博恩大学轴承数据集更丰富的故障类型NASA轴承数据集更长寿命周期数据MFPT数据集多种工况组合5.2 迁移学习应用使用预训练模型进行特征提取base_model load_pretrained_cnn() features base_model.predict(X_new)5.3 边缘计算部署将模型部署到树莓派等边缘设备import tflite_runtime.interpreter as tflite interpreter tflite.Interpreter(model_pathmodel.tflite) interpreter.allocate_tensors()在实际工程应用中我发现将CWRU数据与现场采集数据结合使用时需要特别注意采样率匹配问题。曾经有个项目因为忽略了实验室数据12kHz与现场采集系统10kHz的采样率差异导致特征提取出现严重偏差。后来我们统一采用重采样到8kHz作为折中方案既保留了关键频段信息又实现了数据兼容。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑