传统模型用腻了?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_class
    mid_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

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

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

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

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

相关文章

[lesson04]布尔类型和引用

布尔类型和引用 布尔类型 C中的布尔类型 C在C语言的基本类型系统上增加了boolC中的bool可取的值只有true和false理论上bool只占用一个字节 注意: true代表真值,编译器内部用1来表示 false代表非真值,编译器内部用0来表示 bool类型只有true(…

RabbitMQ3.x之六_RabbitMQ使用场景

RabbitMQ3.x之六_RabbitMQ使用场景 文章目录 RabbitMQ3.x之六_RabbitMQ使用场景1. 为什么选择 RabbitMQ?1. 可互操作2. 灵活3. 可靠 2. 常见用户案例1. 服务解耦2. 远程过程调用3. 流处理4. 物联网 1. 为什么选择 RabbitMQ? RabbitMQ 是一个可靠且成熟的…

IDEA 中能提高开发效率的插件

目录 前言 插件 Rainbow Brackets AceJump POJO to JSON Json Helper MybatisX Maven Helper PlantUML Integration TONYYI Lingma 前言 IDEA 里又很多好用的插件可以帮助我们提升开发效率,这里罗列下自己开发过程中常用的插件,善于利用插件&…

STM32的定时器中断Cubemx

STM32的定时器中断Cubemx 0.定时器简介1.配置时钟2.配置定时器3.创建工程4.补充源码 0.定时器简介 基本定时器功能: 16位向上、向下、向上/下自动装载计数器16位可编程(可以实时修改)预分频器,计数器时钟频率的分频系数为1~65535之间的任意…

说一说Redis的Bitmaps和HyperLoLog?

本篇内容对应 “Redis高级数据类型”小节 和 “7.5 网站数据统计”小节 对应视频: Redis高级数据结构 网站数据统计 1 什么是UV和DAU? DAUUV英文全称Daily Active UserUnique Visotr中文全称日活跃用户量独立访客如何统计数据通过用户ID排重统计数据通…

计算机视觉之三维重建(6)---多视图几何(上)

文章目录 一、运动恢复结构问题(SfM)二、欧式结构恢复2.1 概述2.2 求解2.3 欧式结构恢复歧义 三、仿射结构恢复3.1 概述3.2 因式分解法3.3 总结3.4 仿射结构恢复歧义 一、运动恢复结构问题(SfM) 1. 运动恢复结构问题:通…

数据挖掘|关联分析与Apriori算法详解

数据挖掘|关联分析与Apriori算法 1. 关联分析2. 关联规则相关概念2.1 项目2.2 事务2.3 项目集2.4 频繁项目集2.5 支持度2.6 置信度2.7 提升度2.8 强关联规则2.9 关联规则的分类 3. Apriori算法3.1 Apriori算法的Python实现3.2 基于mlxtend库的Apriori算法的Python实现 1. 关联分…

【ArcGIS微课1000例】0107:ArcGIS加载在线历史影像服务WMTS

文章目录 一、WMTS历史影像介绍二、ArcGIS加载WMTS服务三、Globalmapper加载WMTS服务一、WMTS历史影像介绍 通过访问历史影响WMTS服务,可以将全球范围内历史影像加载进来,如下所示: WMTS服务: https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WM…

WebKit简介

1、简介(WebKit) WebKit 是一个开源的浏览器引擎,最初由苹果公司基于KHTML(K Desktop Environment的HTML渲染引擎)开发,并广泛应用于Safari浏览器,后来也被其他多款浏览器和应用采用。WebKit负…

Ps:匹配颜色

匹配颜色 Match Color命令可以将一个图像的颜色与另一个图像的颜色相匹配。 Ps菜单:图像/调整/匹配颜色 Adjustments/Match Color 匹配颜色命令可匹配多个图像之间、多个图层之间或者多个选区之间的颜色,还可以通过更改亮度和色彩范围以及中和色痕来调整…

MySQL 学习心得和知识总结(五)|MySQL的一般查询日志(general log)

目录结构 注:提前言明 本文借鉴了以下博主、书籍或网站的内容,其列表如下: 1、参考书籍:《PostgreSQL数据库内核分析》 2、参考书籍:《数据库事务处理的艺术:事务管理与并发控制》 3、PostgreSQL数据库仓库…

Java23种设计模式

本文主要是对Java中一些常用的设计模式进行讲解 后期会进行不断的更新,欢迎浏览 23种设计模式 创建型模式,共五种:工厂方法模式、抽象工厂模式、建造者模式、原型模式、单例模式。结构型模式,共七种:适配器模式、桥接…

显示器and拓展坞PD底层协商

简介: PD显示器或者PD拓展坞方案中,连接显示设备的Type-C端口主要运行在DRP模式,在此模式下可以兼容Source(显卡)、Sink(信号器)、DRP(手机、电脑)模式的显示设备。 Sou…

OpenCASCADE源码分析:总论

OpenCASCADE是20世纪90年代由法国Matra Datavision公司开发的三维曲面/实体造型引擎,目前,国内许多CAE软件将其用作几何模块的开发。 本文拟从系统设计的角度,对OpenCASCADE架构(核心组件、关键流程等)进行概要性总结。 注1:限于…

C语言杂谈

努力扩大自己,以靠近,以触及自身以外的世界 文章目录 什么是定义?什么是声明?什么是赋值?什么是初始化?什么是生命周期?什么是作用域?全局变量?局部变量?size…

TCP/IP通信demo

TCP/IP(Transmission Control Protocol/Internet Protocol)是一组通信协议,用于在网络上实现数据传输。它是互联网的基础,也被广泛用于局域网和广域网中。TCP/IP协议族由多个协议组成,其中最重要的是TCP和IP。 IP&…

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

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

【2024红明谷】三道Web题目的记录

红明谷 文章目录 红明谷Web1 | SOLVED LaterWeb2 | UNSOLVEDWeb3 | SOLVED 容器已经关咯,所以有些场景只能靠回忆描述啦,学习为主,题目只是一个载体~ 本次比赛学习为主,确实再一次感受到久违的web题目的魅力了,可能也是…

【SpringCloud】Ribbon 负载均衡

目 录 一.负载均衡原理二.源码跟踪1. LoadBalancerIntercepor2. LoadBalancerClient3. 负载均衡策略 IRule4. 总结 三.负载均衡策略1.负载均衡策略2.自定义负载均衡策略 四.饥饿加载 在 order-service 中 添加了 LoadBalanced 注解,即可实现负载均衡功能&#xff0c…

网络安全基础之网络协议与安全威胁

OSI(OpenSystem Interconnect),即开放式系统互联。 一般都叫OSI参考模型,是ISO(国际标准化组织)组织在1985年研究的网络互联模型。 网络协议的简介: 定义:协议是网络中计算机或设备之间进行通信的一系列规则集合。 什么是规则?…