传统模型用腻了?GCN图卷积神经网络一键实现西储大学轴承故障诊断!发文新思路!

​        声明:文章是从本人公众号中复制而来,因此,想最新最快了解各类智能优化算法及其改进的朋友,可关注我的公众号:强盛机器学习,不定期会有很多免费代码分享~ 

目录

数据介绍与故障诊断讲解

1.数据预处理

2.特征提取

模型流程与创新点

GCN(图卷积神经网络)

结果展示

部分代码展示

完整代码    


        今天为大家带来一期利用GCN图卷积神经网络模型一键实现西储大学轴承故障诊断代码与原理讲解,非常新颖!

        需要注意的是,本期代码直接附带了处理好的西储大学轴承数据集,并且是Excel格式,已经帮大家替换到了程序里!大家使用的时候只需要一键运行main即可出来所有图片与故障诊断结果(还有打印出来的损失函数曲线)!非常方便!不像其他程序一样需要运行很多文件!适合新手小白!

        当然,如果你想替换成自己的其他分类数据集,也非常方便!只需替换Excel文件即可,无需更改代码!

数据介绍与故障诊断讲解

        此处使用的数据是西储大学官方的轴承数据!首先说一下该数据集的处理步骤以及来源:

1.数据预处理

        取官方下载的驱动端(DE)振动数据,分别为97.mat、107.mat、120.mat、132.mat、171.mat、187.mat、199.mat、211.mat、224.mat、236.mat,即转速为1750时的10种故障诊断类型(包括正常情况),并将所有的数据和类别综合到一个变量中。下图即为12K采样频率下的驱动端轴承故障数据(*表示数据不可用)

2.特征提取

        利用VMD算法,选择最佳参数K和α(这里可利用各种优化算法进行优化),基于包络熵最小的准则,提取每个样本的最佳IMF分量,并丢弃其他分量,因为最佳IMF分量已经包含了故障特征的丰富信息!然后,对最佳IMF分量的9个指标进行计算,分别是:均值,方差,峰值,峭度,有效值,峰值因子,脉冲因子,波形因子,裕度因子(对应特征1-9),类别即故障类型,都已经整理好放在了Excel里,如下图所示!

        最后,像往常一样,根据10种不同的故障类型直接送入模型进行分类预测即可!

        这里顺便说一下10种不同的故障类型分别是什么意思:

        类别1:正常情况

        类别2:直径0.007英寸,转速为1750时的内圈故障

        类别3:直径0.007英寸,转速为1750时的滚动体故障

        类别4:直径0.007英寸,转速为1750时的外圈故障

        类别5:直径0.014英寸,转速为1750时的内圈故障

        类别6:直径0.014英寸,转速为1750时的滚动体故障

        类别7:直径0.014英寸,转速为1750时的外圈故障

        类别8:直径0.021英寸,转速为1750时的内圈故障

        类别9:直径0.021英寸,转速为1750时的滚动体故障

        类别10:直径0.021英寸,转速为1750时的外圈故障

        也就是说,我们做故障诊断的目的就是为了判断出它到底是什么故障!之后我们才根据故障类型采取有效的解决措施!

        更换自己的数据时,也只需最后一列放类别,其余列放特征即可,无需更改代码,非常方便!

模型流程与创新点

        以下这些文字,如果大家需要用这个程序写论文,都是可以直接搬运的!

GCN(图卷积神经网络)

        图卷积神经网络可以有效地从大量样本中学习到相应的特征,避免了复杂的特征提取过程。另外,图卷积神经网络通过简单的非线性模型从原始数据中提取更加抽象的特征,在整个过程中只需少量的人工参与,所以采用图卷积神经网络对不同故障特征进行分类具有不错的分类效果。

        GCNNs本质上是采用图论的方法对二维图片的体征进行提取和运算,然后采用不同的卷积核来提取图形特征。其中,图包含有向图和无向图,其结构Gc可表示如下:

        式中:V为顶点;E为边。图结构Gc=(V,E)的特征信息可以用拉普拉斯矩阵的形式表示,其表达式为:

        采用归一化的拉普拉斯方程表示为:

        其中:

        式中:A为图的邻接矩阵;IN为N阶的单位矩阵;D为图中各顶点的度矩阵;Aij为图中点(i,j)的邻接矩阵。图形的关系矩阵经过傅里叶变换之后,图卷积公式的表达式为:

        式中:x为图的Nd维信号,x∈RNd;g为卷积核;U为拉普拉斯矩阵L的特征向量。图卷积神经网络的基本结构如下图所示:

        从GCNNs的结构图中可以看出,完整的GCNNs包含输入层、隐藏层和输出层,它的层与层之间的传播方式可以表述为:

        其中

        式中:I为单位矩阵;D为A的度矩阵;H为每一层节点的特征向量矩阵;σ为非线性激活函数;W(l)为当前层卷积的可训练的参数矩阵;l为网络层的标号。

        在我们的模型中,邻接矩阵为不同特征之间的Spearson相关系数,不同特征被视作节点,以此输入进GCN中!

结果展示

        这里已经贴心的帮大家把损失函数曲线图变成矢量图形式,方便大家放到论文里!

        损失函数曲线图:

        训练集预测结果:

        测试集预测结果:

        训练集混淆矩阵:

        测试集混淆矩阵:

        以上所有图片,作者都已精心整理过代码,都可以一键运行main直接出图,不像其他代码一样需要每个文件运行很多次!

        不信的话可以看下面文件夹截图,仅仅只有4个文件,非常清晰明了!

        适用平台:Matlab2022a版本及以上,没有的文件夹里已免费提供安装包!

部分代码展示

%%  清空环境变量
warning off             % 关闭报警信息
close all               % 关闭开启的图窗
clear                   % 清空变量
clc                     % 清空命令行%%  读取数据
res = xlsread('故障诊断数据集.xlsx');%%  分析数据
num_class = length(unique(res(:, end)));  % 类别数(Excel最后一列放类别)
num_res = size(res, 1);                   % 样本数(每一行,是一个样本)
num_size = 0.7;                           % 训练集占数据集的比例
res = res(randperm(num_res), :);          % 打乱数据集(不打乱数据时,注释该行)
flag_conusion = 1;                        % 标志位为1,打开混淆矩阵(要求2018版本及以上)
f_ = size(res, 2) - 1;                    % 输入特征维度%%  设置变量存储数据
P_train = []; P_test = [];
T_train = []; T_test = [];%%  划分数据集
for i = 1 : num_classmid_res = res((res(:, end) == i), :);           % 循环取出不同类别的样本mid_size = size(mid_res, 1);                    % 得到不同类别样本个数mid_tiran = round(num_size * mid_size);         % 得到该类别的训练样本个数P_train = [P_train; mid_res(1: mid_tiran, 1: end - 1)];       % 训练集输入T_train = [T_train; mid_res(1: mid_tiran, end)];              % 训练集输出P_test  = [P_test; mid_res(mid_tiran + 1: end, 1: end - 1)];  % 测试集输入T_test  = [T_test; mid_res(mid_tiran + 1: end, end)];         % 测试集输出
end%%  数据转置
P_train = P_train'; P_test = P_test';
T_train = T_train'; T_test = T_test';%%  得到训练集和测试样本个数
M = size(P_train, 2);
N = size(P_test , 2);%%  数据归一化
[P_train, ps_input] = mapminmax(P_train, 0, 1);
P_test  = mapminmax('apply', P_test, ps_input);%%  数据平铺
%   将数据平铺成1维数据只是一种处理方式
%   也可以平铺成2维数据,以及3维数据,需要修改对应模型结构
%   但是应该始终和输入层数据结构保持一致
p_train =  double(reshape(P_train, f_, 1, M));
p_test  =  double(reshape(P_test , f_, 1, N));t_train = T_train';
t_test  = T_test' ;%%  设置超参数
parameters = struct;                  % 初始化结构
numHiddenFeatureMaps = 32;            % 隐藏层节点数
numInputFeatures = size(p_train, 2);  % 输入特征数目(非节点数目)%%  初始化网络权重 1

完整代码    

        点击下方小卡片,后台回复关键字,不区分大小写:

GZZDB

        其他更多需求或想要的代码均可点击下方小卡片后后台私信,看到后会秒回~

         更多代码链接:更多代码链接

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

实时获取 Pacific Time Zone (太平洋时区) 时间

实时获取 Pacific Time Zone [太平洋时区] 时间 1. Google -> Pacific Time2. Pacific Time - exact time nowReferences 1. Google -> Pacific Time 2. Pacific Time - exact time now https://time.is/zh/PT References [1] Yongqiang Cheng, https://yongqiang.blog…

原理图设计的通用规范

原理图各页内容依次为:封面、目录、电源、时钟、CPU、存储器、逻辑、背板(母板)接口等。 原理图上所有的文字方向应该统一,文字的上方应该朝向原理图的上方(正放文字)或左方(侧放文字&#xff…

文件操作详解(二)

目录 一.文件的顺序读写1.顺序读写函数(适合于所有的流)1.1 fgetc(读字符)1.2 fputc(写字符)1.3 fgets(读字符串)1.4 fput(写字符串)1.5 fscanf(格式化地读)1.6 fprintf(格式化地写) 2.顺序读写函数(只适用于文件流)2.1 fread(二进…

蓝桥杯嵌入式学习笔记(9):RTC程序设计

目录 前言 1. RTC介绍 2. 使用CubeMx进行源工程配置 3. 代码编程 3.1 准备工作 3.2 进行bsp_rtc.h编写 3.3 进行bsp_rtc.c编写 3.4 main.c编写 3.4.1 头文件引用 3.4.2 变量声明 3.4.3 子函数声明 3.4.4 函数实现 3.4.5 main函数编写 4. 代码实验 5. 总结 前言 因本人备赛蓝…

分布式链路追踪与云原生可观测性

分布式链路追踪系统历史 Dapper, a Large-Scale Distributed Systems Tracing Infrastructure - Google Dapper,大规模分布式系统的跟踪系统大规模分布式系统的跟踪系统:Dapper设计给我们的启示 阿里巴巴鹰眼技术解密 - 周小帆京东云分布式链路追踪在金…

WPS二次开发专题:如何获取应用签名SHA256值

作者持续关注WPS二次开发专题系列,持续为大家带来更多有价值的WPS开发技术细节,如果能够帮助到您,请帮忙来个一键三连,更多问题请联系我(QQ:250325397) 在申请WPS SDK授权版时候需要开发者提供应用包名和签…

Jmeter各组件超详细介绍

1、JMeter和Loadrunner的区别? 2、JMeter如何开发脚本的?强化脚本的技术? 代理服务器录制脚本,Fiddler录制脚本,Badboy录制脚本,根据API,手写脚本,根据抓包,手写脚本。 …

docker版Elasticsearch安装,ik分词器安装,用户名密码配置,kibana安装

1、安装es和ik分词器 创建映射目录并赋予权限: mkdir -p /docker_data/elasticsearch/conf mkdir -p /docker_data/elasticsearch/data mkdir -p /docker_data/elasticsearch/plugins chmod -R 777 /docker_data/elasticsearch编写配置文件: vi /dock…

数据结构—红黑树

红黑树介绍 红黑树(Red Black Tree)是一种自平衡二叉查找树。由于其自平衡的特性,保证了最坏情形下在 O(logn) 时间复杂度内完成查找、增加、删除等操作,性能表现稳定。 在 JDK 中,TreeMap、TreeSet 以及 JDK1.8 的 …

【C++】C++中的list

一、介绍 官方给的 list的文档介绍 简单来说就是: list是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代。list的底层是双向链表结构,双向链表中每个元素存储在互不相关的独立节点中,在节点中…

帝国cms自适应html5成语大全/成语查询/成语接龙网站源码整站模板moretag插件带采集

(购买本专栏可免费下载栏目内所有资源不受限制,持续发布中,需要注意的是,本专栏为批量下载专用,并无法保证某款源码或者插件绝对可用,介意不要购买!购买本专栏住如有什么源码需要,可向博主私信,第二天即可发布!博主有几万资源) 帝国cms自适应html5成语大全/成语查询…

STM32-04基于HAL库(CubeMX+MDK+Proteus)中断案例(按键中断扫描)

文章目录 一、功能需求分析二、Proteus绘制电路原理图三、STMCubeMX 配置引脚及模式,生成代码四、MDK打开生成项目,编写HAL库的按键检测代码五、运行仿真程序,调试代码 一、功能需求分析 在完成GPIO输入输出案例之后,开始新的功能…

Plonky2.5:在Plonky2中验证Plonky3 proof

1. 引言 Plonky2.5为QED Protocol团队主导的项目,定位为: 在Plonky2 SNARK中验证Plonky3 STARK proof。 从而实现Plonky系列的递归证明。 开源代码实现见: https://github.com/QEDProtocol/plonky2.5https://github.com/Plonky3/Plonky3&a…

【Java核心能力】饿了么一面:Redis 面试连环炮

欢迎关注公众号(通过文章导读关注:【11来了】),及时收到 AI 前沿项目工具及新技术的推送! 在我后台回复 「资料」 可领取编程高频电子书! 在我后台回复「面试」可领取硬核面试笔记! 文章导读地址…

AMRT3D数字孪生引擎

产品概述 AMRT3D引擎是由眸瑞网络科技自主研发、拥有完全自主知识产权的一款全球首款轻量化3D图形引擎,引擎以核心的轻量化技术及AMRT轻量格式为支柱,专为数字孪生项目开发打造。 AMRT3D引擎提供一整套完善的数字孪生解决方案,在数据处理方…

PDF编辑和格式转换工具 Cisdem PDFMaster for Mac

Cisdem PDFMaster for Mac是一款功能强大的PDF编辑和格式转换工具。它为用户提供了直观且易于使用的界面,使常用功能触手可及,从而帮助用户轻松管理、编辑和转换PDF文件。 软件下载:Cisdem PDFMaster for Mac v6.0.0激活版下载 作为一款完整的…

自动化测试如何管理测试数据

前段时间,知识星球里有同学问到:自动化case越多,测试数据越多,数据的管理成本也越来越高,是否需要一个数据池来专门管理测试数据?这是一个好问题,也是很多测试同学在自动化测试实践中必须面对的…

LeetCode-146. LRU 缓存【设计 哈希表 链表 双向链表】

LeetCode-146. LRU 缓存【设计 哈希表 链表 双向链表】 题目描述:解题思路一:双向链表,函数 get 和 put 必须以 O(1) 的平均时间复杂度运行。一张图:知识点__slots__ 解题思路二:0解题思路三:0 题目描述&am…

JAVAEE之Spring, Spring Boot 和Spring MVC的关系以及区别

1.Spring, Spring Boot 和Spring MVC的关系以及区别 Spring: 简单来说, Spring 是⼀个开发应⽤框架,什么样的框架呢,有这么⼏个标签:轻量级、⼀ 站式、模块化,其⽬的是⽤于简化企业级应⽤程序开发 Spring的主要功能: 管理对象&am…

园区管理(源码+文档)

园区管理系统(小程序、ios、安卓都可部署) 文件包含内容程序简要说明含有功能项目截图客户端登录页我的退出登录发布详细注意事项公告列表入园记录主页我的资料电梯报修意见反馈客服入园申请注册招商列表 后台管理签到管理公告管理招商管理入园管理反馈报…