基于时域特征和频域特征组合的敏感特征集,再利用CNN进行轴承故障诊断(python编程)

news2025/1/19 14:15:15

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] # 取一半频谱
    
    #频域指标1
    features.append(np.mean(spectrum))
    
    # 频域指标2
    features.append(np.var(spectrum))
    
    # 频域指标3
    features.append(np.sqrt(np.mean(np.square(spectrum))))
    
    # 频域指标4
    features.append(np.max(spectrum) / np.sqrt(np.mean(np.square(spectrum))))
    
    # 频域指标5
    features.append(kurtosis(spectrum))
    
    # 频域指标6
    features.append(skew(spectrum))
    
    # 频域指标7
    features.append(np.max(spectrum))
    
    # 频域指标8
    features.append(np.min(spectrum))
    
    # 频域指标9
    features.append(np.max(spectrum) - np.min(spectrum))
    
    # 频域指标10
    features.append(np.max(np.abs(spectrum)) / np.mean(np.abs(spectrum)))
    
    # 频域指标11
    features.append(np.max(np.abs(spectrum)) / np.sqrt(np.mean(np.square(spectrum))))
    
    # 频域指标12
    peak_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

 

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

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

相关文章

EfficientNet论文笔记

EfficientNet论文笔记 通过NAS平衡了channel,depth,resolution,发现在相同的FLOPs下,同时增加 depth和 resolution的效果最好。 数据集效果小于resolution怎么办? EfficientNet—b0框架 表格中每个MBConv后会跟一个…

Maven —— 项目管理工具

前言 在这篇文章中,荔枝会介绍如何在项目工程中借助Maven的力量来开发,主要涉及Maven的下载安装、环境变量的配置、IDEA中的Maven的路径配置和信息修改以及通过Maven来快速构建项目。希望能对需要配置的小伙伴们有帮助哈哈哈哈~~~ 文章目录 前言 一、初…

力扣刷题序列 - 字符串篇

这里写目录标题 字符1.520 回文串的定义2. 125 公共前缀3. 14 单词4. 4345. 58 字符串的反转6. 3447. 5418. 5579. 151 字符的统计10. 38711. 38912. 38313. 24214. 4915. 45116. 42317. 65718. 55119. 69620. 467 数字与字符间的转换21.41222.50623.53924.553537592---64038 子…

GAME101 OpenCV环境安装

文章目录 Opencv 库编译Step 1.下载源码Step 2. 使用CMake编译Step3. 解决CMake 过程重的报错错误1: 错误的Python版本:错误1 解决办法 错误2:下载ippicv_2020_win_ia32_20191018_general.zip失败错误2 解决办法 错误3:ffmpeg相关文件下载失败…

力扣 509.斐波那契数

509.斐波那契数 1 题目2 思路3 代码4 结果 1 题目 题目来源:力扣(LeetCode )https://leetcode.cn/problems/fibonacci-number 斐波那契数 (通常用 F(n) 表示)形成的序列称为斐波那契数列 。该数列由 0 和 1 开始&…

git国内下载

https://npm.taobao.org/mirrors/git-for-windows/点进去最新的最后一条 选择.exe文件点击

二、遥感物理基础(2)物体的发射与反射辐射特征

前言 本文内容较为枯燥,是遥感的物理原理,作者已经尽量去帮助读者理解了,无论是精细的阅读还是走马观花,长期下来都能提高读者对专业知识的理解;作者非物理专业,对某些知识点的总结仅是个人理解&#xff0c…

win7 刻录机刻录文件显示 “准备好写入到”光盘中的文件”

一、问题描述 就是这么突然,好好的刻录机,突然就刻录不了了,昨天都可以正常刻录,今天就显示: 准备好写入到”光盘中的文件,然后还显示待刻录的文件…,右键选择刻录就直接弹出光盘了&#xff1f…

吴恩达机器学习2022-Jupyter特征缩放

1可选实验室: 特征缩放和学习率(多变量) 1.1 目标 在这个实验室里: 利用前一实验室开发的多变量线性回归模型程序在具有多种功能的数据集上运行梯度下降法探讨学习速度 alpha 对梯度下降法的影响通过使用 z 分数标准化的特征缩放来提高梯度下降法的性能 1.2 工具 您将使用…

第七章:FCN——Fully Convolutional Networks for Semantic Segmentation

0.摘要 卷积神经网络是强大的视觉模型,能够产生特征的层级结构。我们展示了通过端到端、像素到像素的训练的卷积神经网络在语义分割方面超越了现有技术的最新成果。我们的关键发现是构建“全卷积”网络,它可以接受任意大小的输入并生成相应大小的输出&am…

OSPF和VLAN综合实验

目录 题目 1.IP地址的规划设计 2.搭建拓扑并进行基础IP配置 3.配置虚拟局域网 1)按子网划分要求配置PC1和PC2 检测:输入[SW1]display vlan进行检查 配置路由器R3 检测:用PC1去访问PC2 2)配置拓扑中其余路由器的网关以及回…

基于安森美音频处理器Ezairo 8300助听器设计

v hezkz17进数字音频系统研究开发交流答疑 Ezairo 8300 系统框图 许多现代音频产品将受益于安森美(onsemi)基于DSP的EZAIRO系列音频处理器。 安森美(ON Semiconductor)的EZAIRO系列音频处理器是基于数字信号处理器(DSP)的产品系列…

​​Layui之用户管理实例(对数据的增删改查)

目录 ​编辑一、R工具介绍() ​编辑二、数据表的增删改查 ​编辑2.1我们先得从查询数据库的语句入手 2.2优化dao类 2.4UserAction类 2.5前台的页面实现增删改查操作 2.6 userManage页面JS 2.7user新增、修改iframe层js 前言 上一篇我分享了…

http1.0、http1.1 http 2.0

HTTP/1.0是无状态、无连接的应用层协议。 无连接 无连接:每次请求都要建立连接,需要使用 keep-alive 参数建立长连接、HTTP1.1默认长连接keep-alive   无法复用连接,每次发送请求都要进行TCP连接,TCP的连接释放都比较费事&…

vue-next-admin vue3.x版本,table自定义

vue3.x版本&#xff0c;将table进行了封装。使用起来更方便了。但是&#xff0c;有时候我们需要将一组信息显示到一列中。所以我将其进行了简单的二次改造。支持table-column自定义。 table改造代码 <template><div class"table-container"><el-tabl…

R语言的水文、水环境模型优化技术及快速率定方法与多模型案例实践

在水利、环境、生态、机械以及航天等领域中&#xff0c;数学模型已经成为一种常用的技术手段。同时&#xff0c;为了提高模型的性能&#xff0c;减小模型误用带来的风险&#xff1b;模型的优化技术也被广泛用于模型的使用过程。模型参数的快速优化技术不但涉及到优化本身而且涉…

高速入门知识03:路阻抗匹配方法

文章目录 前言一、简单并行匹配二、戴维南并行匹配三、主动并行匹配四、串联RC并行匹配五、串联匹配六、差分对匹配七、收发器片内匹配 前言 高速电路阻抗匹配方法 阻抗不匹配会导致信号在传输线上来回反射&#xff0c;使负载接收器出现振铃。振铃降低了接收 器的动态范围&am…

Centos使用docker部署nacos

Centos使用docker部署nacos 对于使用Docker部署Nacos&#xff0c;您可以按照以下步骤进行操作&#xff1a; 在您的服务器上安装Docker和Docker Compose。创建一个用于存储Nacos数据的目录&#xff0c;例如/path/to/nacos/data。创建一个docker-compose.yml文件&#xff0c;并…

【数学建模】统计分析方法

文章目录 1.回归分析2. 逻辑回归3. 聚类分析4. 判别分析5. 主成分分析6. 因子分析7. 对应分析 1.回归分析 数据量要多&#xff0c;样本总量n越大越好——>保证拟合效果更好&#xff0c;预测效果越好 一般n>40/45较好 方法 建立回归模型 yiβ0β1i……βkxkiεi 所估计的…

vscode 端口转发实现端口映射,实现端口自由

用vscode连接server进行开发&#xff0c; 是非常方便的&#xff0c;但很多时候&#xff0c;server的端口开放的很有限&#xff0c;那么就可以利用vscode进行端口映射 举一个应用场景&#xff1a; 先通过A利用vscode 连接B&#xff0c;然后再vscode 的port窗口进行端口转发&…