今天水一期,总结一下以前写过的几篇保姆级故障诊断。学会这几篇,机器学习的故障诊断你就基本合格了!
本期内容:基于SABO-VMD-CNN-SVM的分类诊断。
依旧是采用经典的西储大学轴承数据。基本流程如下:
首先是以最小包络熵为适应度函数,采用SABO优化VMD的两个参数。其次对每种状态的数据进行特征向量的求取,并为每组数据打上标签。然后将数据送入CNN进行特征提取, 并进行PCA降维后特征可视化,并与未进行CNN特征提取的数据可视化结果进行比较。最后将CNN提取的特征送入SVM进行分类。
其他数据的故障分类都可以适用该方法!数据替换十分简单,代码注释非常详细!
友情提示:对于刚接触故障诊断的新手来说,这篇文章信息量可能有点大,大家可以收藏反复阅读。即便有些内容本篇文章没讲出来,但其中的一些跳转链接,也完全把故障诊断这个故事讲清楚了。
文件夹目录如下:都是作者精心整理过的。程序运行十分简单,按照步骤,一步步来即可!
考虑到大家可能会用到VMD的相关作图,包络谱,频谱图等,作者在这里也一并附在代码中了。这部分大家需要自行更改数据!具体可以参考这个:VMD分解,matlab代码,包络线,包络谱,中心频率,峭度值,能量熵,样本熵,模糊熵,排列熵,多尺度排列熵,西储大学数据集为例
如截图所示,本期内容一共做了三件事情:
一,对官方下载的西储大学数据进行处理
步骤如下:
①一共加载4种状态的数据,分别是正常状态,内圈故障,外圈故障,滚动体故障。②设置滑动窗口w,每个数据的故障样本点个数s,每个故障类型的样本量m。③将所有的数据滑窗完毕之后,综合到一个data变量中,也就是截图中的data_total_1797.mat
有关西储大学数据的处理之前有文章也讲过,大家可以看这篇文章:西储大学轴承诊断数据处理,matlab免费代码获取
二,对第一步数据处理得到的数据进行特征提取
选取五种适应度函数进行优化,这里大家可以自行决定选哪一个!以此确定VMD的最佳k和α参数。五种适应度函数分别是:最小包络熵,最小样本熵,最小信息熵,最小排列熵,排列熵/互信息熵,代码中可以一键切换。至于应该选择哪种作为自己的适应度函数,大家可以看这篇文章。VMD为什么需要进行参数优化,最小包络熵/样本熵/排列熵/信息熵,适应度函数到底该选哪个
至于特征提取的具体原理,也在这篇文章进行过详细介绍,大家可以跳转阅读。简单来说,就是利用包络熵最小的准则把每个样本的最佳IMF分量提取出来,然后对其9个指标进行计算,分别是:均值,方差,峰值,峭度,有效值,峰值因子,脉冲因子,波形因子,裕度因子。然后用这9个指标构建每个样本的特征向量。
另外本篇文章采用了2023年一个较新且效率较高的智能算法---减法优化器(SABO),对VMD参数进行了优化,找到了每个故障类型的最佳IMF分量,并利用包络熵最小的准则,提取出了最佳的IMF分量。
三,采用卷积神经网络(CNN)对数据特征进行提取
这里做了对比实验。将经过CNN特征提取的向量和未经过CNN特征提取的向量可视化结果进行对比。具体做法为:采用了PCA降维后进行可视化。结果如下:
第一张图是未经CNN特征提取,直接采用PCA降维后的特征可视化结果,可以看到,正常状态和滚动体故障有严重重叠!而采用CNN提取后,第二张图可以看到,四种状态不存在重合,各个类别区分明显!证明了CNN特征提取的有效性。
五、采用支持向量机实现故障分类
将CNN提取好的特征数据送入SVM进行训练与测试。本文所选SVM是从官网下载的libsvm-3.3版本,作者已编译好,大家可以直接运行。如果想自行编译的童鞋可以从网站下载:https://www.csie.ntu.edu.tw/~cjlin/libsvm/index.html,编译步骤可以参考https://blog.csdn.net/qq_42457960/article/details/109275227
本文采用了网格搜索机制,并采用5折交叉验证,对SVM的惩罚因子c和gamma参数进行寻优。
结果展示
混淆矩阵图,有的文章会采用这种图:
这里不得不说一句,官方给出的libSVM包,准确率就是嘎嘎高!
以上所有图片在代码包里都能复现。
有些同学可能会用到一些频谱图,包络谱图等,这里以105.mat故障信号为例进行展示:
运行文件夹“VMD分解,matlab代码,包络线,包络熵……”下的MAIN.m文件后,会出现如下运行结果:
在命令窗口会出现如下计算结果:
部分代码
数据处理代码:
SABO优化VMD参数并特征提取的代码:
CNN-SVM诊断的代码:
代码获取
获取链接:复制链接浏览器打开
https://mbd.pub/o/bread/ZZaXmphu
或者点击下方阅读原文获取。
或者后台回复关键词:
CNNSVM
往期更多故障诊断的优秀文章推荐:
保姆级教程之VMD-CNN-BILSTM轴承故障诊断,MATLAB代码
保姆级教程之ICEEMDAN-GWO-LSSVM的轴承诊断,MATLAB代码
保姆级教程之VMD-SABO-KELM优化核极限学习机的西储大学轴承诊断
“三高”论文完美复现!基于PSO-VMD-MCKD方法的风机轴承微弱故障诊断,实现早期微弱故障诊断,MATLAB代码实现
“三高”论文完美复现!基于EEMD奇异值熵的滚动轴承故障诊断方法,MATLAB代码实现
VMD分解,matlab代码,包络线,包络谱,中心频率,峭度值,能量熵,样本熵,模糊熵,排列熵,多尺度排列熵,西储大学数据集为例
更多代码请前往主页获取!
公司名称: 8A-8A娱乐-注册登录商务站
手 机: 13800000000
电 话: 400-123-4567
邮 箱: admin@youweb.com
地 址: 广东省广州市天河区88号