Python轴承故障诊断 (十)基于VMD+CNN-Transfromer的故障分类

目录

1 变分模态分解VMD的Python示例

2 轴承故障数据的预处理

2.1 导入数据

2.2 故障VMD分解可视化

3 基于VMD+CNN-Transformer的轴承故障诊断分类

3.1 定义VMD-CNN-Transformer分类网络模型

3.2 设置参数,训练模型

3.3 模型评估

代码、数据如下:


Python-凯斯西储大学(CWRU)轴承数据解读与分类处理

Python轴承故障诊断 (一)短时傅里叶变换STFT

Python轴承故障诊断 (二)连续小波变换CWT_pyts 小波变换 故障-CSDN博客

Python轴承故障诊断 (三)经验模态分解EMD_轴承诊断 pytorch-CSDN博客

Pytorch-LSTM轴承故障一维信号分类(一)_cwru数据集pytorch训练-CSDN博客

Pytorch-CNN轴承故障一维信号分类(二)-CSDN博客

Pytorch-Transformer轴承故障一维信号分类(三)-CSDN博客

Python轴承故障诊断 (四)基于EMD-CNN的故障分类-CSDN博客

Python轴承故障诊断 (五)基于EMD-LSTM的故障分类-CSDN博客

Python轴承故障诊断 (六)基于EMD-Transformer的故障分类-CSDN博客

Python轴承故障诊断 (七)基于EMD-CNN-LSTM的故障分类-CSDN博客

Python轴承故障诊断 (八)基于EMD-CNN-GRU并行模型的故障分类-CSDN博客

基于FFT + CNN - BiGRU-Attention 时域、频域特征注意力融合的轴承故障识别模型-CSDN博客

基于FFT + CNN - Transformer 时域、频域特征融合的轴承故障识别模型-CSDN博客

大甩卖-(CWRU)轴承故障诊数据集和代码全家桶-CSDN博客

Python轴承故障诊断 (九)基于VMD+CNN-BiLSTM的故障分类-CSDN博客

前言

本文基于凯斯西储大学(CWRU)轴承数据,进行变分模态分解VMD的介绍与数据预处理,最后通过Python实现VMD+CNN-Transformer对故障数据的分类。凯斯西储大学轴承数据的详细介绍可以参考下文:

Python-凯斯西储大学(CWRU)轴承数据解读与分类处理_cwru数据集时域图-CSDN博客

1 变分模态分解VMD的Python示例

第一步,Python 中 VMD包的下载安装:

# 下载
pip install vmdpy
​
# 导入
from vmdpy import VMD

第二步,导入相关包进行分解

import numpy as np
import matplotlib.pyplot as plt
from vmdpy import VMD
​
# -----测试信号及其参数--start-------------
t = np.linspace(0, 1, 1000)
signal = np.sin(2 * np.pi * 5 * t) + np.sin(2 * np.pi * 20 * t)
T = len(signal)
fs = 1/T
t = np.arange(1,T+1)/T
​
# alpha 惩罚系数;带宽限制经验取值为抽样点长度1.5-2.0倍.
# 惩罚系数越小,各IMF分量的带宽越大,过大的带宽会使得某些分量包含其他分量言号;
alpha = 2000
​
#噪声容限,一般取 0, 即允许重构后的信号与原始信号有差别。
tau = 0 
#模态数量  分解模态(IMF)个数
K = 5
​
#DC 合成信号若无常量,取值为 0;若含常量,则其取值为 1
# DC 若为0则让第一个IMF为直流分量/趋势向量
DC = 0 
#初始化ω值,当初始化为 1 时,均匀分布产生的随机数
# init 指每个IMF的中心频率进行初始化。当初始化为1时,进行均匀初始化。
init = 1 
#控制误差大小常量,决定精度与迭代次数
tol = 1e-7
# -----测试信号及其参数--end----------
​
# Apply VMD
# 输出U是各个IMF分量,u_hat是各IMF的频谱,omega为各IMF的中心频率
u, u_hat, omega= VMD(signal, alpha, tau, K, DC, init, tol)
#得到中心频率的数值
print(omega[-1])
# Plot the original signal and decomposed modes
plt.figure(figsize=(15,10))
plt.subplot(K+1, 1, 1)
plt.plot(t, signal, 'r')
plt.title("原始信号")
for num in range(K):
    plt.subplot(K+1, 1, num+2)
    plt.plot(t, u[num,:])
    plt.title("IMF "+str(num+1))
​
plt.show()

2 轴承故障数据的预处理

2.1 导入数据

参考之前的文章,进行故障10分类的预处理,凯斯西储大学轴承数据10分类数据集:

train_set、val_set、test_set 均为按照7:2:1划分训练集、验证集、测试集,最后保存数据

上图是数据的读取形式以及预处理思路

2.2 故障VMD分解可视化

第一步, 模态选取

根据不同K值条件下, 观察中心频率,选定K值;从K=4开始出现中心频率相近的模态,出现过分解,故模态数 K 选为4。

第二步,故障VMD分解可视化

2.3 故障数据的VMD分解预处理

3 基于VMD+CNN-Transformer的轴承故障诊断分类

下面基于VMD分解后的轴承故障数据,先通过CNN进行卷积池化操作提取信号的特征,增加维度,缩短序列长度,然后再送入Transformer编码器层增强特征,实现CNN-Transformer信号的分类方法进行讲解:

3.1 定义VMD-CNN-Transformer分类网络模型

3.2 设置参数,训练模型

50个epoch,准确率将近99%,用VMD+CNN-Transformer网络分类效果显著,CNN-Transformer模型能够充分提取轴承故障信号的全局空间和局部特征,收敛速度快,性能特别优越,继续调参可以进一步提高分类准确率。

注意调整参数:

  • 可以适当增加CNN层数和隐藏层的维度,微调学习率;

  • 调整Transformer编码器层数和维度数,增加更多的 epoch (注意防止过拟合)

  • 可以改变维信号堆叠的形状(设置合适的长度和维度)

3.3 模型评估

准确率、精确率、召回率、F1 Score

故障十分类混淆矩阵:

代码、数据如下:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/306595.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

​如何在iOS手机上查看应用日志

引言 在开发iOS应用过程中,查看应用日志是非常重要的一项工作。通过查看日志,我们可以了解应用程序运行时的状态和错误信息,帮助我们进行调试和排查问题。本文将介绍两种方法来查看iOS手机上的应用日志,并提供相应的操作步骤。 …

vercel部署twikoo后评论收不到通知邮件问题解决方法

📌 前言:本文主要是总结一下在vercel部署twikoo后收不到评论邮件通知问题的解决方法,本人在各种查资料无果后最终去twioo的git官方项目的issue中找到某位大佬给出的原因以及解决方案,故做此记录,希望对遇到此问题的同学…

Nodejs 第三十一章(响应头和请求头)

响应头 HTTP响应头(HTTP response headers)是在HTTP响应中发送的元数据信息,用于描述响应的特性、内容和行为。它们以键值对的形式出现,每个键值对由一个标头字段(header field)和一个相应的值组成。 例如…

C++面试宝典第17题:找规律填数

题目 仔细观察下面的数字序列,找到规律,并填写空白处的数字。 (1)1, 2, 4, 7, 11, 16, __ (2)-1, 2, 7, 28, __, 126 (3)6, 10, 18, 32, 57, __ (4)19, 6, 1, 2, 11, __ (5)2, 3, 5, 7, 11, __ (6)1, 8, 9, 4, __, 1/6 (7)1, 2, 3, 7, 16, __, 321 (8)1, 2, …

【Python学习】Python学习9-字符串

目录 【Python学习】Python学习9-字符串 前言创建语法访问字符串的值字符串拼接Python 转义字符Python字符串运算符Python格式化字符串Python 三引号Unicode字符串Python 的字符串内建函数参考 文章所属专区 Python学习 前言 本章节主要说明Python的字符串类型。 创建语法 …

Spring MVC组件

1.DispatcherServlet前端控制器 用户请求到达前端控制器,它就相当于mvc模式中的c,dispatcherServlet 是整个流程控制的中心,由它调用其它组件处理用户的请求,dispatcherServlet 的存在降低了组件之间的耦合性。 2.HandlerMappin…

蓝牙物联网多个核心应用场景开发与应用细化分析

蓝牙物联网是指利用蓝牙技术将物理设备与互联网连接起来,实现设备之间的信息共享与互通。蓝牙物联网在各个领域得到了广泛应用,并且在未来有着巨大的发展潜力。本文将围绕蓝牙物联网的五大核心应用场景进行介绍,包括智能家居、智能健康、智能…

Mac M1 Parallels CentOS7.9 Install Jenkins

官网: https://www.jenkins.io/ 文中涉及的jenkins’s rpm链接: https://pan.baidu.com/s/1BSe62pGdJCtDUAimaniEMA?pwd6666 一、Install & Check Java Env Oracle官网下载Java: https://www.oracle.com/cn/ # 拷贝到Jenkins服务器 scp Downloads/jdk-8u391-linux-aarch…

再谈前端算法

楔子 – 青蛙跳台阶什么是算法算法实例 : 实现一个LRU缓存 实现 LRUCache扩展: ES6 Map Map的创建和初始化:添加键值对:获取键值对:检查Map中是否存在某个键:删除键值对:遍历Map:获取…

读算法霸权笔记13_读后总结与感想兼导读

1. 基本信息 算法霸权:数学杀伤性武器的威胁 [美] 凯西奥尼尔(Cathy 著 中信出版社,2018年9月出版 1.1. 读薄率 书籍总字数220千字,笔记总字数32359字。 读薄率32359220000≈14.71% 1.2. 读厚方向 算法的力量:人类如何共同生存&#x…

SpringBoot-开启Admin监控服务

SpringBoot-Admin是一个用于管理和监控SpringBoot应用程序的开源项目。它提供了一个易于使用的Web界面,可以实时监控应用程序的健康状况、性能指标、日志和环境配置等信息。通过Actuator模块来收集和暴露应用程序的监控信息,使用Web Socket或者Server-Se…

继承和多态的详解

文章目录 1. 继承1.1 继承的概念1.3 继承的语法1.3 父类成员访问1.3.1 子类中访问父类的成员变量1.3.2 子类中访问父类的成员方法 1.4 子类构造方法 2.super关键字2.1 super关键字的概念2.2 super和this的区别 3. 在继承中访问限定符的可见性4. 继承方式的分类5. 多态5.1 多态的…

springboot虹软人脸识别集成

准备工作 虹软开放平台中创建一个新的应用 虹软开发平台【点我跳转】 开始上代码 基本配置 将下载的jar包放到src同级目录下 <!-- 虹软--><dependency><groupId>com.arcsoft.face</groupId><artifactId>arcsoft-sdk-face</artifactI…

YOLOv8改进 | 主干篇 | 12月最新成果UniRepLknet特征提取网络(附对比试验效果图)

一、本文介绍 本文给大家带来的改进机制是特征提取网络UniRepLknet,其也是发表于今年12月份的最新特征提取网络,该网络结构的重点在于使用Dilated Reparam Block和大核心指导原则,强调了高效的结构进行通道间通讯和空间聚合,以及使用带扩张的小核心进行重新参数化,该网络…

日志系统一(elasticsearch+filebeat+logstash+kibana)

目录 一、es集群部署 安装java环境 部署es集群 安装IK分词器插件 二、filebeat安装&#xff08;docker方式&#xff09; 三、logstash部署 四、kibana部署 背景&#xff1a;因业务需求需要将nginx、java、ingress日志进行收集。 架构&#xff1a;filebeatlogstasheskib…

java继承Thread实现多线程

1、AdminController文件 package com.controller;import com.myThread.AdminThread; import org.springframework.web.bind.annotation.*;RestController CrossOrigin RequestMapping("/admin") public class AdminController{GetMapping("/{id}")public …

基于Github官方教程的快速入门学习

GitHub 是一个用于版本控制和协作的代码托管平台。 它允许您和其他人随时随地协同处理项目。 创建仓库 在任何页面的右上角&#xff0c;使用 下拉菜单选择“新建存储库”。 之后会进入创建仓库的界面&#xff0c;需要我们进行如下操作&#xff1a; 写仓库的名字写对于本仓库…

Uibot (RPA设计软件)微信群发助手机器人————课前材料二

(本博客中会有部分课程ppt截屏,如有侵权请及请及时与小北我取得联系~&#xff09; 紧接着小北的前两篇博客&#xff0c;友友们我们即将开展新课的学习~RPA 培训前期准备指南——安装Uibot(RPA设计软件&#xff09;-CSDN博客https://blog.csdn.net/Zhiyilang/article/details/1…

现代操作系统复习笔记【核心考点知识+重点复习题】

文章目录 一、核心考点基础知识第一章 概述1、操作系统的基本概念、基本功能2、分时系统、批处理系统、实时系统的主要特征3、用户接口、系统调用过程4、单到与多道程序技术5、操作系统虚拟机体系结构6、CPU工作模式&#xff1b;7、部分课后习题 第二章 进程与线程1、进程的基本…

华为 HarmonyOS 页面跳转

1. 我们新建2个页面(page)&#xff0c;一个Hello World页面&#xff0c;一个Hello HarmonyOS页面&#xff0c;注意修改红色框内容&#xff0c;保持一致 2.导入导入router模块&#xff0c;页面跳转接口&#xff0c;添加按钮点击事件 //导入router模块 页面跳转接口 import rout…