news 2026/4/15 12:45:07

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
基于时域特征和频域特征组合的敏感特征集,再利用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] # 取一半频谱 #频域指标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

.构建评价指标,从时域和频域一共23个指标中选出对故障特征最敏感的前4个特征,这里用的是方差评价指标,也可以选用其它的评价指标

# 选择前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%

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/31 1:41:52

leetcode 941. Valid Mountain Array 有效的山脉数组-耗时100

Problem: 941. Valid Mountain Array 有效的山脉数组 耗时100%&#xff0c;数组长度需要>3&#xff0c;且存在上升至少需要arr[0] < arr[1]&#xff0c;然后遍历数组&#xff0c;若arr[i] < arr[i-1]则改变方向&#xff0c;若dir<0 && arr[i] > arr[i-1…

作者头像 李华
网站建设 2026/4/13 5:16:00

STM32_新建工程(标准库版)

文章目录工程模板下载一、新建工程目录   新建模版目录   在目录下新建子文件夹  建立好目录后&#xff0c;拷贝文件二、新建工程   1、Keil5新建一个工程 Template   2、选择CPU型号   3、在线添加库文件&#xff08;直接关闭&#xff09;   4、工程中添加组文件…

作者头像 李华
网站建设 2026/4/13 7:36:14

建议收藏|9个AI论文软件深度测评,专科生毕业论文+开题报告全攻略

对于专科生来说&#xff0c;撰写毕业论文和开题报告是一项既重要又充满挑战的任务。随着AI技术的不断发展&#xff0c;越来越多的工具被应用于学术写作中&#xff0c;但如何选择真正适合自己需求的产品成为难题。为此&#xff0c;我们基于2026年的实测数据与用户反馈&#xff0…

作者头像 李华
网站建设 2026/4/12 14:33:30

保姆级干货:手把手教你如何微调大模型,打造你的专属AI专家

大家好&#xff01;我是你们的AI技术探索官。 如果你关注大模型领域&#xff0c;一定听过**SFT&#xff08;指令微调&#xff09;**这个词。很多人问我&#xff1a;为什么有些模型像“书呆子”&#xff0c;空有满腹经纶却废话连篇&#xff1f;而有些模型却像“职场精英”&…

作者头像 李华
网站建设 2026/4/12 19:22:01

(10-3-03)模块集成与总装流程:接线、布线与抗干扰设计:防松、防震与保护

10.3.3 防松、防震与保护 人形机器人运行过程中存在频繁关节运动、振动及复杂环境接触等工况&#xff0c;易导致连接部件松脱、线束磨损、接口失效等问题。防松、防震与保护是保障机器人机械结构稳定性、电气系统可靠性的关键环节&#xff0c;需遵循“分级防护、动静适配、冗…

作者头像 李华