基于SVM-HMM的轴承故障诊断新方法

0 下载量 184 浏览量 更新于2024-08-29 收藏 204KB PDF 举报
本文探讨了一种创新的轴承故障诊断方法,名为"基于支持向量机(SVM)和隐马尔可夫模型(HMM)的诊断方案"。这项研究发表在2016年4月的《武汉理工大学学报(信息与管理工程版)》上,由陈玄等人提出,他们的工作着重于利用SVM的分类能力和HMM的时间序列处理能力来提升轴承故障诊断的准确性。 SVM作为一种基于小样本的概率学习方法,以其高效的计算效率和强大的泛化能力而著称,即使在训练数据有限的情况下也能有效地进行数据分类。HMM则是一个强大的概率模型,用于模拟动态系统的状态变化,尤其在语音识别等领域表现出色。HMM的核心是其双层结构,包含状态与观测值之间的统计关系以及马尔可夫链,这使得它能够捕捉时间序列中的潜在模式。 作者们的方法是首先利用SVM对轴承的高频共振振动信号进行分析,通过sigmoid函数和高斯模型将SVM的输出信号转化为后验概率形式。然后,这些后验概率被引入HMM模型的观测概率矩阵中,通过AR参数构建一个动态特征向量。这种方法的关键在于将静态的分类结果动态化,以便更好地适应轴承运行中的状态变化,从而提高了诊断的准确性。 该研究还指出,实验数据来源于小波分析处理过的轴承振动信号,这表明了小波变换在提取轴承故障特征中的重要作用。此外,论文也提到了研究得到了国家自然科学基金项目的资助,这进一步强调了该研究在学术领域的价值和实际应用前景。 总结来说,这篇文章的主要贡献在于提出了一个结合SVM和HMM的新型轴承故障诊断策略,旨在通过结合这两种模型的优势,提高轴承故障检测的可靠性和精度,为工业设备维护提供了有力的技术支持。

# 考虑增加某个计数,会不会提高socre import numpy as np from sklearn.linear_model import LinearRegression # from sklearn.metrics import mean_squared_error file_soft = "/home/maillee/chip_temp_predict/data_handle/ftc_to_select_event/soft_event_ftc.xlsx" file_hard = "/home/maillee/chip_temp_predict/data_handle/ftc_to_select_event/hard_event_ftc.xlsx" file_hard_cache = "/home/maillee/chip_temp_predict/data_handle/ftc_to_select_event/hard_cahce_event_ftc.xlsx" pd_data_soft = pd.read_excel(file_soft,index_col=0) pd_data_hard = pd.read_excel(file_hard,index_col=0) pd_data_hard_cache = pd.read_excel(file_hard_cache,index_col=0) pd_y = pd_data_hard_cache['cores-power'] not_selected_event = ['branch-misses','bus-cycles','cache-misses','instructions', 'ref-cycles','L1-dcache-load-misses', 'L1-dcache-stores','L1-icache-load-misses', 'LLC-load-misses','LLC-store-misses','LLC-stores', 'branch-load-misses','dTLB-load-misses','dTLB-loads', 'dTLB-store-misses','dTLB-stores','iTLB-load-misses', 'iTLB-loads','node-load-misses','node-loads','node-store-misses', 'node-stores','alignment-faults','bpf-output','cgroup-switches', 'cpu-migrations','dummy','emulation-faults','major-faults','minor-faults', 'page-faults','task-clock',] count =0 pd_x = pd.concat([pd_data_hard,pd_data_hard_cache,pd_data_soft],axis=1,join='outer') for i in not_selected_event: count = count+1 pd_x =pd.concat(pd_x[i],pd_x[['cpu-clock','context-switches', 'branch-instructions','cpu-cycles','cache-references', 'L1-dcache-loads','LLC-loads','branch-loads']],axis=1,join='outer') model = LinearRegression().fit(pd_x, pd_y) # print(model.score(pd_x,pd_y)) #R2 score y_pred = model.predict(pd_x) # plt.plot(y_pred) # plt.plot(pd_y) mse = mean_squared_error(pd_y, y_pred) print(count,i,model.score(pd_x,pd_y), mse,'\n') woatis wring

2023-06-07 上传