当前位置: 首页 > ai >正文

故障诊断模型评估——混淆矩阵,如何使样本量一致(上)

往期精彩内容:

Python-凯斯西储大学(CWRU)轴承数据解读与分类处理

基于FFT + CNN - BiGRU-Attention 时域、频域特征注意力融合的轴承故障识别模型-CSDN博客

基于FFT + CNN - Transformer 时域、频域特征融合的轴承故障识别模型-CSDN博客

Python轴承故障诊断 (11)基于VMD+CNN-BiGRU-Attenion的故障分类-CSDN博客

Python轴承故障诊断 (13)基于故障信号特征提取的超强机器学习识别模型-CSDN博客

Python轴承故障诊断 (14)高创新故障识别模型-CSDN博客

Python轴承故障诊断 (15)基于CNN-Transformer的一维故障信号识别模型-CSDN博客

Python轴承故障诊断 (16)高创新故障识别模型(二)-CSDN博客

轴承故障全家桶更新 | 基于时频图像的分类算法-CSDN博客

Python轴承故障诊断 (17)基于TCN-CNN并行的一维故障信号识别模型-CSDN博客

独家原创 | SCI 1区 高创新轴承故障诊断模型!-CSDN博客

基于 GADF+Swin-CNN-GAM 的高创新轴承故障诊断模型-CSDN博客

Python轴承故障诊断 (18)基于CNN-TCN-Attention的创新诊断模型-CSDN博客

注意力魔改 | 超强轴承故障诊断模型!-CSDN博客

轴承故障全家桶更新 | 基于VGG16的时频图像分类算法-CSDN博客

轴承故障全家桶更新 | CNN、LSTM、Transformer、TCN、串行、并行模型、时频图像、EMD分解等集合​都在这里-CSDN博客

Python轴承故障诊断 (19)基于Transformer-BiLSTM的创新诊断模型-CSDN博客

Python轴承故障诊断 (20)高创新故障识别模型(三)-CSDN博客

视觉顶会论文 | 基于Swin Transformer的轴承故障诊断-CSDN博客

Python轴承故障诊断 | 多尺度特征交叉注意力融合模型-CSDN博客

SHAP 模型可视化 + 参数搜索策略在轴承故障诊断中的应用-CSDN博客

速发论文 | 基于 2D-SWinTransformer+1D-CNN-SENet并行故障诊断模型-CSDN博客

Python轴承故障诊断 (21)基于VMD-CNN-BiTCN的创新诊断模型-CSDN博客

1DCNN-2DResNet并行故障诊断模型-CSDN博客

基于改进1D-VGG模型的轴承故障诊断和t-SNE可视化-CSDN博客

基于K-NN + GCN的轴承故障诊断模型-CSDN博客

故障诊断 | 创新模型更新:基于SSA-CNN-Transformer诊断模型-CSDN博客

独家首发 | 基于 2D-SwinTransformer + BiGRU-GlobalAttention的并行故障诊断模型-CSDN博客

位置编码祛魅 | 详解Transformer中位置编码Positional Encoding-CSDN博客

创新点 | 基于快速傅里叶卷积(FFC) 的故障诊断模型-CSDN博客

代码开源! | 变工况下的域对抗图卷积网络故障诊断-CSDN博客

超强 !顶会创新融合!基于 2D-SWinTransformer 的并行分类网络-CSDN博客

多模态-故障诊断 | 大核卷积开启视觉新纪元!-CSDN博客

超强!一区直接写!基于SSA+Informer-SENet故障诊断模型-CSDN博客

Transformer结构优势 ,How Much Attention Do You Need?-CSDN博客

故障诊断 | 一个小创新:特征提取+KAN分类-CSDN博客

故障诊断 | 信号降噪算法合集-CSDN博客

图卷积故障诊断,新增GAT、SGCN、GIN分类模型-CSDN博客

不能错过!故障诊断+时频图像分类大更新!-CSDN博客

智能故障诊断和寿命预测期刊推荐-CSDN博客

故障诊断一区直接写,图卷积+BiGRU-Attention 并行诊断模型-CSDN博客

故障诊断高创新!基于1D-GRU+2D-MTF-ResNet-CBAM的多模态融合分类模型_基于1dcnn-informer+matt融合的故障诊断模型-CSDN博客

创新首发! | 基于1DCNN-Informer+MATT融合的故障诊断模型_论文复现基于 1dcnn bilstm 的航空发动机故障分类研究-CSDN博客

轴承故障特征—SHAP 模型 3D 可视化_shap值溯源模型-CSDN博客

时频图像/多模态+顶会论文创新,故障诊断发文不是梦!-CSDN博客

江南大学轴承故障诊断教程+1DVGG-6种注意力机制合集!-CSDN博客

轴承寿命预测全家桶更新!新增西交XJTU-SY数据集+预测模型合集_hxd3b 型电力机车轴承寿命预测实例中,一张该模型预测结果-CSDN博客

最强更新!西储大学(CWRU)轴承数据集保姆级教程!-CSDN博客

故障诊断 SCI 1 区直接写!基于GADF+SwinTransformer-CBAM+GRU的多模态融合分类模型-CSDN博客

此次更新的代码,凡是购买过我们产品的粉丝,可以后台留言免费获取(或者去面包多网页上更新下载!)

前言

后台有粉丝询问分类模型中的混淆矩阵,如何设置相关参数,才能使样本量保持一致,本期我们围绕混淆矩阵的相关问题,推出基于凯斯西储大学(CWRU)轴承数据1DCNN分类模型进行讲解!

● 数据集:凯斯西储大学(CWRU)轴承数据

● 环境框架:python 3.9  pytorch 2.1 及其以上版本均可运行

● 模型实验:1DCNN

● 使用对象:入门学习,论文需求者

● 代码保证:代码注释详细、即拿即可跑通。

● 配套文件:详细的环境配置安装教程,模型、参数讲解文档

首先需要声明的是:

混淆矩阵用于评估分类模型的性能,尤其是在多类分类任务中,它展示了真实类别与预测类别之间的对应关系。每种类别的样本量不需要相等,特别是在我们往期模型里面,一般使用的公开数据集,都是属于平衡数据集,我们随机打乱样本,然后再划分训练集、验证集、测试集,会导致最终测试集混淆矩阵类别的样本量不完全相同,但是相差的数量不大,没有影响,特别是总体样本量越大,这种类别上的数量差距影响微乎其微。

在投稿过程中审稿人也没有这样的要求,但是我们还是有必要弄清楚和样本量相关的参数,参数之间是怎么影响的;当然混淆矩阵中类别样本量一致也有如下好处:一是方便计算测试集样本量;二是比较美观;三是可以体现出平衡数据集。

问题一 故障信号的样本量由哪些参数决定

故障信号的样本量由如下三个参数共同决定:

  • 数据集序列长度

  • 样本长度(窗口值)

  • 重叠率

1 数据集序列长度

比如说在我们的西储大学(CWRU)十分类任务上,我们对整体数据集有一个截断,来保证我们的所有类别数量有相同的采样点数,当样本长度(窗口值)和重叠率固定的时候,数据集序列越长,样本量肯定越大,反之越小。

需要注意的是,这个截断值并没有固定,我们一般是按照采样点最少的故障类型的长度来进行截取,来保证整体不同类别有着相同的采样点数。如果需要来设计一定的样本量的时候,适当舍去一些样本量,也是可以的,比如说,假设现在整体数据序列是12000个采样点,当滑动窗口、重叠率固定的时候,一定要生成xx个样本,这样推算后,需要的总体采样点是10000个,那么我们舍弃掉末尾2000个采样点也是可以接受的(相当于给的数据集不一定全部用,用一部分也可以)

2 样本长度(窗口值)和 重叠率

 数据集的切分方式也多种多样,切分步长也具有多样性,下面按照固定的参数设置进行数据的切分:

  • 步长 window_step:1024 (每个样本长度为1024个点)

  • 重叠率 overlap_ratio:0.5(切分相邻两个样本重叠率)

怎么理解重叠率呢?举例如下:

图片

3 怎么计算总体样本量?

 要计算在给定序列长度、样本窗口大小以及样本之间的重叠率条件下可以生成的样本数量,我们需要按照以下步骤进行:

第一步定义参数:

   - 序列长度:L = 120000

   - 样本窗口大小:W = 1024

   - 重叠率:overlap = 0.5

   - 步长(stride):stride = W * (1 - overlap) = 1024 * (1 - 0.5) = 512

第二步计算样本数量:

公式为:

在我们的例子中:

最终每个类别生成233个样本,十分类总共生成2330个样本!然后在我们往期的模型里面,按照7:2:1 划分训练集、验证集、测试集的话,划分数量如下:

问题二  如何保证混淆矩阵类别样本量一致

1 影响样本量的其他参数

如果按照上述划分来做,可能是这样的评估结果:

测试集样本量是 224 个,每个类别的样本量也不一致,可能就有同学问了,测试集明明划分的是 233 个样本?这就要提到 batch_size 的原因和drop_last=True,当设置这两个参数的时候,使用批量大小(batch size)进行训练时,数据集中的样本会被分成若干批次(batches)。如果样本总数不能被批量大小整除,那么最后一个批次的样本数量会少于批量大小。通常情况下,为了简化训练过程,最后一个不完整的批次可能会被丢弃,这是因为某些深度学习框架在默认情况下会忽略无法形成完整批次的样本。

如果我们不想丢弃不完整的批次样本,可以设置数据集加载器

drop_last=False,当 drop_last=False 时,数据加载器(如 PyTorch 中的 DataLoader)会在训练过程中将最后一个不完整的批次包含在内。这意味着,即使最后一个批次的样本数少于设置的批量大小(batch size),它也会被用于训练。这种情况下可能会对模型训练产生以下影响:

优点:是所有可用的数据都会被用于训练,不会浪费任何样本。这在数据量本身较少的情况下尤其重要,因为每个样本都可能对模型的学习有价值

缺点:

  • 不完整批次可能导致该批次的梯度更新不那么稳定,特别是在批量归一化(Batch Normalization)等依赖于批次统计的操作中。这是因为计算的均值和方差会基于较少的样本数,可能引入一定的偏差。

  • 但对于多数模型和任务,这种小的差异通常不会显著影响训练结果,特别是在数据量较大时。

所以 batch size 和 drop_last 的设置也会在一定程度上影响最终的测试集样本量(选择 drop_last=False 是合理的做法,尤其是在希望充分利用所有样本的情况下

所以现在分情况来考虑参数的设置:

假设现在固定两个参数 :

   - 样本窗口大小:W = 1024

   - 重叠率:overlap = 0.5

2 情况一:drop_last=False (不用考虑 batch size)

为了达到测试集混淆矩阵类别样本数量一致的目标,那测试集样本量一定是类别数的整数倍

我们通过先假定测试集样本量,然后来反推问题一中的影响样本量的参数!现在是 10 分类任务,假定测试集中每类样本设置为 20!(测试集总样本量200)那么因为按照 7:2:1 划分训练集、验证集、测试集,测试集占比0.1,所以每个类样本总量为 200 个样本,此时窗口值为 1024, 重叠率为 0.5 , 根据公式:

所以每类样本整体序列长度为( 200-1)*512+1024=102912,然后设置序列长度:

总体样本量为:

2000个样本,然后需要注意的是样本的划分,要保证划分的测试集中所有类别样本量一致的话,就需要进行分层抽样!

方法一:

利用 python 的 sklearn 包自带的数据划分函数

方法二:

在数据集制作的时候就进行分层抽样

最终测试集混淆矩阵效果:

下一期我们会带来其他情况下样本量的计算方式,和混淆矩阵相关的学习教程!

3 代码、数据整理如下:

点击下方卡片获取代码!

http://www.xdnf.cn/news/5881.html

相关文章:

  • 深入浅出之STL源码分析8_三个指针
  • PostgreSQL 恢复信息函数
  • Android Exoplayer多路不同时长音视频混合播放
  • window 显示驱动开发-报告图形内存(一)
  • ElasticSeach快速上手笔记-入门篇
  • VScode 的插件本地更改后怎么生效
  • 嵌入式学习--江协51单片机day5
  • React百日学习计划——Deepseek版
  • 销量预测评估指标
  • 【工作记录】Kong Gateway 入门篇之部署及简单测试
  • mpegts.js 播放flv视频报错:PIPELINE_ERROR_DECODE: video decode error!
  • FlashInfer - 安装
  • 理解 Open vSwitch (OVS)
  • 一键转换上百文件 Word 批量转 PDF 软件批量工具
  • 大模型——Crawl4AI为 LLM 和 RAG 准备高质量网页数据
  • ‌Element UI 双击事件(@cell-dblclick 与 @row-dblclick)
  • 函数式方法的实现(JDK8+)
  • 洛谷 P3374 【模板】树状数组 1(树状数组解法)
  • C#高级编程:设计模式原则
  • 第28节:现代CNN架构-ResNet与残差连接
  • Android加固工具测评:易盾、顶象、360加固哪款更好用?
  • 【源码+文档+调试讲解】党员之家服务系统小程序1
  • 如何同步虚拟机文件夹
  • Linux精确列出非法 UTF-8 字符的路径或文件名
  • 从虚拟现实到混合现实:沉浸式体验的未来之路
  • 【TMFN】一种基于文本的多模态融合网络,具有多尺度特征提取和无监督对比学习,用于多模态情感分析
  • Day1 时间复杂度
  • 3.2 一点一世界
  • mysql8常用sql语句
  • Java大师成长计划之第21天:Spring Boot快速入门