往期精彩内容:
Python-凯斯西储大学(CWRU)轴承数据解读与分类处理
Python轴承故障诊断入门教学-CSDN博客
Python轴承故障诊断 (13)基于故障信号特征提取的超强机器学习识别模型-CSDN博客
Python轴承故障诊断 (14)高创新故障识别模型-CSDN博客
Python轴承故障诊断 (15)基于CNN-Transformer的一维故障信号识别模型-CSDN博客
轴承故障全家桶更新 | 基于时频图像的分类算法-CSDN博客
Python轴承故障诊断 (16)高创新故障识别模型(二)-CSDN博客
Python轴承故障诊断 (17)基于TCN-CNN并行的一维故障信号识别模型_pytorch使用tcn网络进行故障诊断 csdn-CSDN博客
独家原创 | SCI 1区 高创新轴承故障诊断模型!-CSDN博客
Python轴承故障诊断 (18)基于CNN-TCN-Attention的创新诊断模型-CSDN博客
Python轴承故障诊断 (20)高创新故障识别模型(三)-CSDN博客
注意力魔改 | 超强轴承故障诊断模型!-CSDN博客
Python轴承故障诊断 (21)基于VMD-CNN-BiTCN的创新诊断模型-CSDN博客
基于k-NN + GCN的轴承故障诊断模型-CSDN博客
独家首发 | 基于 KAN、KAN卷积的轴承故障诊断模型-CSDN博客
故障诊断 | 创新模型更新:基于SSA-CNN-Transformer诊断模型-CSDN博客
Python轴承故障诊断 (21)基于VMD-CNN-BiTCN的创新诊断模型-CSDN博客
1DCNN-2DResNet并行故障诊断模型-CSDN博客
前言
本文基于凯斯西储大学(CWRU)轴承数据,使用特征提取和机器学习方法进行故障识,然后基于XGBoos模型介绍一种参数搜索策略,并通过SHAP模型可视化技术对结果进行分析。凯斯西储大学轴承数据的详细介绍可以参考下文:
Python-凯斯西储大学(CWRU)轴承数据解读与分类处理_cwru数据集-CSDN博客
可视化结果图:
十分类混淆矩阵
全局特征重要性图:
十分类 ROC曲线和AUC值:
标签真实值和预测值对比:
1 数据集和特征提取
1.1 数据集导入
参考之前的文章,进行故障10分类的预处理,凯斯西储大学轴承数据10分类数据集:
数据的读取形式以及预处理思路
1.2 故障信号特征提取
选择峭度、熵值、分形值、波形指标、频谱指标、频域指标、 统计特征、振动特征等13种指标来捕捉轴承信号的多尺度特征,作为机器学习模型的训练与识别。
2 基于参数搜索策略的XGBoost故障诊断模型
2.1 参数搜索策略:大步粗略搜索,小步细致搜索
对于XGBoost模型的重要参数:树的棵树、树的深度、学习率,采取大范围粗略搜索,先锁定大概的参数范围值,然后再采用小步细致搜索来准确定位参数值。
2.2 大步粗略搜索
采用网格搜索,确认大概的参数范围值
2.3 小步细致搜索
第一步,搜索树的棵树
第二步,搜索树的深度
第三步,搜索学习率
3 XGBoost模型评估和可视化
3.1 模型分数、准确率、精确率、召回率、F1 Score
3.2 故障十分类混淆矩阵
3.3 SHAP 模型可视化
SHAP(SHapley Additive exPlanations)是一种用于解释机器学习模型预测结果的方法。用于衡量每个特征对于模型输出的贡献程度。通过计算SHAP值,我们可以了解每个特征对于模型预测的影响,从而更好地理解模型的分类预测过程。这种可解释性对于提高模型的可信度和可解释性非常有帮助。能够进一步分析故障信号所提取特征对轴承故障诊断的贡献。
平均值(SHAP值)(对模型输出大小的平均影响),可以明显的看出来13个特征对每个类别的分类贡献度!
代码、数据集如下:
对数据集和代码感兴趣的,可以关注最后一行
# 加载数据
import torch
from joblib import dump, load
import torch.utils.data as Data
import numpy as np
import pandas as pd
import torch
import torch.nn as nn
# 参数与配置
torch.manual_seed(100) # 设置随机种子,以使实验结果具有可重复性
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
#代码和数据集:https://mbd.pub/o/bread/ZZqbmphr