基于时域特征和频域特征组合的敏感特征集,再利用SVM或KNN传统分类器进行轴承故障诊断(python编程,代码有详细注释)

1.文件夹介绍(使用的是CWRU数据集)

0HP-3HP四个文件夹装载不同工况下的内圈故障、外圈故障、滚动体故障和正常轴承数据。

这里以打开0HP文件为例进行展示,creat_data.py是处理原始数据的脚本,负责将原始数据切不重叠割成1024的固定长度的样本,切割完,生成的每类故障下有100个样本,一共400个样本。(样本被保存在data_0HP.npy文件里,对应的标签保存在label.npy文件)

 

code_SVM.py是SVM诊断的脚本,首先利用时域分析和频域分析的方法,获取11种时域特征,12种频域特征


# 计算时域特征
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

 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

 .构建评价指标,从时域和频域一共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种敏感特征后,输给SVM或KNN等传统分类器,以看效果

基于时域特征和频域特征组合的敏感特征集,再利用SVM或KNN传统分类器进行轴承故障诊断(python编程,代码有详细注释)_哔哩哔哩_bilibili

测试集准确率:

模型0HP1HP2HP3HP
SVM100%100%96.25%100%
KNN100%100%97.50%100%

 从测试集结果可以看出挑选出来的特征可以很好表征故障。

代码及数据放在压缩包里,解压缩可以直接运行

import numpy as np
from scipy.fft import fft
from scipy.stats import kurtosis, skew
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
from sklearn.preprocessing import MinMaxScaler
# -*- coding: utf-8 -*-import numpy as np
from scipy.fft import fft
from scipy.stats import kurtosis, skewimport numpy as np
from keras.utils import np_utils
import matplotlib.pyplot as plt
plt.rcParams['font.family'] = 'SimHei'  # 设置字体为黑体
import numpy as np
from scipy.fft import fft
from scipy.stats import kurtosis, skew
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import MinMaxScaler
#可以关注:https://mbd.pub/o/bread/ZJuZm5Zr

 

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

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

相关文章

这8种算法

一个程序员一生中可能会邂逅各种各样的算法,但总有那么几种,是作为一个程序员一定会遇见且大概率需要掌握的算法。今天就来聊聊这些十分重要的“必抓!”算法吧~ 算法一:快速排序法 快速排序法是对冒泡排序的一种改进&#xff0c…

【深入探究人工智能】:历史、应用、技术与未来

深入探究人工智能 前言人工智能的历史人工智能的应用人工智能的技术人工智能的未来当代的人工智能产物结语🍀小结🍀 🎉博客主页:小智_x0___0x_ 🎉欢迎关注:👍点赞🙌收藏✍️留言 &am…

短视频seo抖音矩阵源码开发搭建技术解析

一、 短视频seo抖音矩阵源码开发需要考虑以下几个方面: 技术选型:选择合适的开发语言、框架和数据库,常用的开发语言有Java、PHP等,常用的框架有Spring、Django等,常用的数据库有MySQL、MongoDB等。 服务器的选择&…

使用Postman+JMeter进行简单的接口测试

以前每次学习接口测试都是百度,查看相关人员的实战经验,没有结合自己公司项目接口真正具体情况。 这里简单分享一下公司项目Web平台的一个查询接口,我会使用2种工具Postman和JMeter如何对同一个接口做调试。 准备工作 首先,登录公…

获取gitlab上项目最近更新时间

获取gitlab上项目列表过程及脚本_xiaodaiwang的博客-CSDN博客使用Python及shell,获取gitlab上项目列表过程及脚本https://blog.csdn.net/xiaodaiwang/article/details/131781316?csdn_share_tail%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rI…

vue element select下拉框回显展示数字

vue element select下拉框回显展示数字 问题截图&#xff1a; 下拉框显示数字可以从数据类型来分析错误&#xff0c;接收的数据类型是字符串&#xff0c;但是value是数字类型 <el-form-item prop"classifyLabelId" :label"$t(item.classifyLabelId)"…

Makefile:6: *** missing separator. Stop.

Makefile:2: *** missing separator. Stop. Windows下用VS CODE编写makefile文件&#xff0c;编译报出这个错误 可以查看一下VS CODE左下角&#xff0c;如果是下图“空格&#xff1a;4”这样&#xff0c;需要更改一下。 在“空格&#xff1a;4”上左键单击一下&#xff0c;在…

CSS:给子元素设置了浮动,页面缩放的时候,子元素往下掉

前言 给子元素设置了浮动&#xff0c;页面缩放的时候&#xff0c;子元素往下掉 html代码&#xff1a; <div class"father"><div class"child1"></div><div class"child2"></div> </div>css代码 .child1…

Hutool——国产良心工具包,让你的java变得更甜

目录 1. 基础工具 1.1 日期时间处理 1.2 I/O 1.3 字符串处理 1.4 集合框架 1.5 常见业务 2. 定时任务 3. 验证码 4. 缓存 5. Excel操作 6. Http请求 7. 加密 7.1 加密和解密 7.2 签名和验签 8. 其他说明 8.1 引入Hutool Hutool是国内程序员在工作中总结和积累而…

创建型模式 - 原型模式

概述 用一个已经创建的实例作为原型&#xff0c;通过复制该原型对象来创建一个和原型对象相同的新对象。 结构 原型模式包含如下角色&#xff1a; 抽象原型类&#xff1a;规定了具体原型对象必须实现的的 clone() 方法。 具体原型类&#xff1a;实现抽象原型类的 clone() 方…

rce题目

<?php include "flag.php"; highlight_file(__FILE__); if(isset($_GET[HECTF])) { if (; preg_replace(/[^\W]\((?R)?\)/, NULL, $_GET[HECTF])) { if (!preg_match(/pos|high|op|na|info|dec|hex|oct|pi/i, $_GET[HECTF])) { eval(…

测试基础 Android 应用测试总结

目录 启动&#xff1a; 功能介绍&#xff0c;引导图&#xff0c;流量提示等&#xff1a; 权限&#xff1a; 文件错误 屏幕旋转&#xff1a; 流量&#xff1a; 缓存&#xff08;/sdcard/data/com.your.package/cache/&#xff09;&#xff1a; 正常中断&#xff1a; 异…