基于时域特征和频域特征组合的敏感特征集,再利用CNN进行轴承故障诊断(python编程)
1.文件夹介绍(使用的是CWRU数据集)
0HP-3HP四个文件夹装载不同工况下的内圈故障、外圈故障、滚动体故障和正常轴承数据。
2.模型
按照1024的长度分割样本,构建内圈故障、外圈故障、滚动体故障和正常轴承样本集
2.1.计算11种时域特征值
# 计算时域特征
def calculate_time_domain_features(signal):features = []# 均值features.append(np.mean(signal))# 标准差features.append(np.std(signal))# 方根幅值features.append(np.sqrt(np.mean(np.square(signal))))# 均方根值features.append(np.sqrt(np.mean(np.square(signal))))# 峰值features.append(np.max(signal))# 波形指标features.append(np.mean(np.abs(signal)) / np.sqrt(np.mean(np.square(signal))))# 峰值指标features.append(np.max(np.abs(signal)) / np.mean(np.abs(signal)))# 脉冲指标features.append(np.max(np.abs(signal)))# 裕度指标features.append(np.max(np.abs(signal)) / np.sqrt(np.mean(np.square(signal))))# 偏斜度features.append(skew(signal))# 峭度features.append(kurtosis(signal))return features
2.2.计算12种频域特征值
# 计算频域特征
def calculate_frequency_domain_features(signal, sample_rate):features = []# 快速傅里叶变换spectrum = fft(signal)spectrum = np.abs(spectrum)[:len(spectrum)//2] # 取一半频谱#频域指标1features.append(np.mean(spectrum))# 频域指标2features.append(np.var(spectrum))# 频域指标3features.append(np.sqrt(np.mean(np.square(spectrum))))# 频域指标4features.append(np.max(spectrum) / np.sqrt(np.mean(np.square(spectrum))))# 频域指标5features.append(kurtosis(spectrum))# 频域指标6features.append(skew(spectrum))# 频域指标7features.append(np.max(spectrum))# 频域指标8features.append(np.min(spectrum))# 频域指标9features.append(np.max(spectrum) - np.min(spectrum))# 频域指标10features.append(np.max(np.abs(spectrum)) / np.mean(np.abs(spectrum)))# 频域指标11features.append(np.max(np.abs(spectrum)) / np.sqrt(np.mean(np.square(spectrum))))# 频域指标12peak_index = np.argmax(spectrum)peak_frequency = peak_index * sample_rate / len(spectrum)features.append(peak_frequency)return features
2.3.构建评价指标,从时域和频域一共23个指标中选出对故障特征最敏感的前4个特征,这里用的是方差评价指标,也可以选用其它的评价指标
# 数据
samples = data # 轴承振动信号样本数据列表
sample_rate = 12000 # 采样率# 构建特征集
feature_set = build_feature_set(samples, sample_rate)# 选择前4个敏感特征
import numpy as np
from sklearn.model_selection import train_test_split# 将特征集转换为NumPy数组
feature_set = np.array(feature_set)# 计算评价指标(这里以方差为例)
scores = np.var(feature_set, axis=0)# 选出最敏感的4个特征
selected_indices = np.argsort(scores)[-4:]
selected_features = feature_set[:, selected_indices]
最后选出 的敏感特征集
2.4.将每个样本的这4个特征输入CNN模型进行分类(也可以输入给SVM或KNN等分类器)
3.效果
0HP数据集
1HP数据集
2HP数据集
3HP数据集
总的代码和数据集放在了压缩包里
plt.rcParams['font.size'] = 25
# 绘制损失曲线
plt.figure(figsize=(10, 8))
plt.plot(train_loss, label='训练集损失')
plt.plot(test_loss, label='测试集损失')
plt.xlabel('迭代次数')
plt.ylabel('损失')
plt.title('1HP训练集与测试集损失')
plt.legend()
plt.savefig('0.png', dpi=600,bbox_inches = "tight")
plt.show()
# 绘制准确率曲线
plt.figure(figsize=(10, 8))
plt.plot(train_accuracy, label='训练集准确率')
plt.plot(test_accuracy, label='测试集准确率')
plt.xlabel('迭代次数')
plt.ylabel('准确率')
plt.title('1HP训练集与测试集准确率')
plt.legend()
plt.savefig('1.png', dpi=600,bbox_inches = "tight")
plt.show()
#可以关注:https://mbd.pub/o/bread/ZJuXmZtt
相关文章:

基于时域特征和频域特征组合的敏感特征集,再利用CNN进行轴承故障诊断(python编程)
1.文件夹介绍(使用的是CWRU数据集) 0HP-3HP四个文件夹装载不同工况下的内圈故障、外圈故障、滚动体故障和正常轴承数据。 2.模型 按照1024的长度分割样本,构建内圈故障、外圈故障、滚动体故障和正常轴承样本集 2.1.计算11种时域特征值 # 计…...

CAD2021安装教程适合新手小白【附安装包和手册】
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、下载文件二、使用步骤1.安装软件前,断开电脑网络(拔掉网线、关闭WIFI)2、鼠标右击【AutoCAD2021(64bit)】压缩包选择【解…...

AcWing 107. 超快速排序—逆序对
问题链接: AcWing 107. 超快速排序 问题描述 分析 这道题考查的算法不难,就只是利用归并排序来求逆序对的数量,但是主要是如何分析问题,如何能从问题中看出来和逆序对数量有关,现在的题目基本上很少是那种模板算法题了ÿ…...

华为、阿里巴巴、字节跳动 100+ Python 面试问题总结(三)
系列文章目录 个人简介:机电专业在读研究生,CSDN内容合伙人,博主个人首页 Python面试专栏:《Python面试》此专栏面向准备面试的2024届毕业生。欢迎阅读,一起进步!🌟🌟🌟 …...
详解在Linux中修改Tomcat使用的jdk版本
问题分析 由于部署个人项目使用了openjdk11,但是我之前安装的是jdk1.8,jdk版本升级的后果就是,tomcat运行的时候报一点小bug(因为之前安装tomcat默认使用了系统的jdk版本)所以就想着把tomcat使用的jdk版本调回原来的&…...
高级 Matplotlib:3D 图形和交互性
Matplotlib 是 Python 中最重要的数据可视化库之一。在之前的文章中,我们讨论了如何使用基础和中级功能来创建各种图形。在本文中,我们将深入研究 Matplotlib 的高级特性,特别是如何创建 3D 图形和交互式图形。 一、创建 3D 图形 Matplotli…...

cloud Alibab+nacos+gateway集成swaggerui,统一文档管理(注意点)
首先说明:本文只说整合注意点 效果图和功能参考链接 1.使用gateway访问nacos服务,503 在网关服务添加依赖即可解决 <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign&…...
使用 YOLOv8 进行传输线故障检测-附源码
用于传输线故障检测的 YOLO 我将模型缩小到YOLO 或 Faster R-CNN。但YOLO 作为单次目标检测模型在速度和计算效率方面获得了许多好处。由于基于无人机的实时故障检测是最佳选择,我选择使用 YOLO。YOLO 代表“You Only Look Once”,暗示您只需要通过一个神经网络即可对检测到…...

安装RabbitMQ 详细步骤
我这里是在Linux系统里面安装的按照步骤即可 1. 安装Socat🍉 在线安装依赖环境: yum install gcc yum install socat yum install openssl yum install openssl-devel2. 安装Erlang🍉 去官网下载一下安装包,将安装包拉到Linux系…...

SAP CAP篇十:理解Fiori UI的Annoation定义
本文目录 本系列此前的文章官方文档和基础概念SAP CAP对Fiori UI的支持package.json的新增内容Annotation定义List Page 生成的Edmx文件 对应代码及branch 本系列此前的文章 SAP CAP篇一: 快速创建一个Service,基于Java的实现 SAP CAP篇二:为Service加上…...

不允许你不知道的 MySQL 优化实战(二)
文章目录 11、使用联合索引时,注意索引列的顺序,一般遵循最左匹配原则。12、对查询进行优化,应考虑在where及order by涉及的列上建立索引,尽量避免全表扫描。13、如果插入数据过多,考虑批量插入。14、在适当的时候&…...

JVM_00000
JVM 所谓虚拟机(Virtual Machine)就是一台虚拟的计算机。它是一款软件,用来执行一系列虚拟计算机指令。大体上,虚拟机可以分为系统虚拟机和程序虚拟机。 Visual Box,VMware就属于系统虚拟机,它们完全是对物…...
MCU嵌入式开发-硬件和开发语言选择
引入 RTOS的考虑因素 主要考虑以下方面来决定是否需要RTOS支持: 需要实现高响应时的多任务处理能力需要实现实时性能要求高的任务需要完成多个复杂的并发任务 NanoFramework 具备满足工控系统实时性要求的各项功能特性。通过它提供的硬件库、线程支持、中断支持等,可以完全控制…...

SVR算法简介及与其它回归算法的关系
目录 参考链接 有人可以帮助我理解支持向量回归技术和其他简单回归模型之间的主要区别是什么 支持向量回归找到一个线性函数,表示误差范围 (epsilon) 内的数据。也就是说,大多数点都可以在该边距内找到,如下图所示 这意味着 SVR 比大多数其…...
Rust系列(二) 内存管理
上一篇:Rust系列(一) 所有权和生命周期 通过前面的文章,目前我已经了解到了单一所有权、Move语义、Copy语义、可变和不可变借用以及引用计数。突然回首可以发现,Move 语义和 Copy 语义保证了值的单一所有权;而可变和不可变借用又可…...
VYaml | 超快速低内存占用yaml库
一、介绍 官方github仓库 YAML:YAML Ain’t Markup Language(YAML 不是标记语言)。 使用Unity2021.3 or later。 通过Unity Package Manager安装: https://github.com/hadashiA/VYaml.git?pathVYaml.Unity/Assets/VYaml#0.13.1 …...

动态规划01背包之1049 最后一块石头的重量 II(第9道)
题目: 有一堆石头,用整数数组 stones 表示。其中 stones[i] 表示第 i 块石头的重量。 每一回合,从中选出任意两块石头,然后将它们一起粉碎。假设石头的重量分别为 x 和 y,且 。那么粉碎的可能结果如下: …...

运输层(TCP运输协议相关)
运输层 1. 运输层概述2. 端口号3. 运输层复用和分用4. 应用层常见协议使用的运输层熟知端口号5. TCP协议对比UDP协议6. TCP的流量控制7. TCP的拥塞控制7.1 慢开始算法、拥塞避免算法7.2 快重传算法7.3 快恢复算法 8. TCP超时重传时间的选择8.1 超时重传时间计算 9. TCP可靠传输…...
GDAL操作实践培训
1 主要安排 本帖子专门写给我侄儿,其他读者可以忽略。 步骤一: 跑程序 先下载GDAL,使用的版本号与项目组一致(当前使用的版本号为2.2.4,visual studio 2019);百度找到GDAL库的使用教程&#x…...
3.Redis主从复制、哨兵、集群
文章目录 Redis主从复制概念主从复制实验哨兵模式哨兵模式的作用故障转移机制:搭建Redis哨兵模式 Redis集群模式集群的作用搭建Redis集群扩容cluster集 Redis主从复制 概念 Redis主从复制,是指将一台Redis服务器的数据,复制到其他的Redis服务…...

Zustand 状态管理库:极简而强大的解决方案
Zustand 是一个轻量级、快速和可扩展的状态管理库,特别适合 React 应用。它以简洁的 API 和高效的性能解决了 Redux 等状态管理方案中的繁琐问题。 核心优势对比 基本使用指南 1. 创建 Store // store.js import create from zustandconst useStore create((set)…...

黑马Mybatis
Mybatis 表现层:页面展示 业务层:逻辑处理 持久层:持久数据化保存 在这里插入图片描述 Mybatis快速入门 
[ICLR 2022]How Much Can CLIP Benefit Vision-and-Language Tasks?
论文网址:pdf 英文是纯手打的!论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误,若有发现欢迎评论指正!文章偏向于笔记,谨慎食用 目录 1. 心得 2. 论文逐段精读 2.1. Abstract 2…...
vue3 字体颜色设置的多种方式
在Vue 3中设置字体颜色可以通过多种方式实现,这取决于你是想在组件内部直接设置,还是在CSS/SCSS/LESS等样式文件中定义。以下是几种常见的方法: 1. 内联样式 你可以直接在模板中使用style绑定来设置字体颜色。 <template><div :s…...
linux 错误码总结
1,错误码的概念与作用 在Linux系统中,错误码是系统调用或库函数在执行失败时返回的特定数值,用于指示具体的错误类型。这些错误码通过全局变量errno来存储和传递,errno由操作系统维护,保存最近一次发生的错误信息。值得注意的是,errno的值在每次系统调用或函数调用失败时…...
Qt Http Server模块功能及架构
Qt Http Server 是 Qt 6.0 中引入的一个新模块,它提供了一个轻量级的 HTTP 服务器实现,主要用于构建基于 HTTP 的应用程序和服务。 功能介绍: 主要功能 HTTP服务器功能: 支持 HTTP/1.1 协议 简单的请求/响应处理模型 支持 GET…...
【HarmonyOS 5 开发速记】如何获取用户信息(头像/昵称/手机号)
1.获取 authorizationCode: 2.利用 authorizationCode 获取 accessToken:文档中心 3.获取手机:文档中心 4.获取昵称头像:文档中心 首先创建 request 若要获取手机号,scope必填 phone,permissions 必填 …...

零基础在实践中学习网络安全-皮卡丘靶场(第九期-Unsafe Fileupload模块)(yakit方式)
本期内容并不是很难,相信大家会学的很愉快,当然对于有后端基础的朋友来说,本期内容更加容易了解,当然没有基础的也别担心,本期内容会详细解释有关内容 本期用到的软件:yakit(因为经过之前好多期…...

USB Over IP专用硬件的5个特点
USB over IP技术通过将USB协议数据封装在标准TCP/IP网络数据包中,从根本上改变了USB连接。这允许客户端通过局域网或广域网远程访问和控制物理连接到服务器的USB设备(如专用硬件设备),从而消除了直接物理连接的需要。USB over IP的…...
Bean 作用域有哪些?如何答出技术深度?
导语: Spring 面试绕不开 Bean 的作用域问题,这是面试官考察候选人对 Spring 框架理解深度的常见方式。本文将围绕“Spring 中的 Bean 作用域”展开,结合典型面试题及实战场景,帮你厘清重点,打破模板式回答,…...