西储大学数据的处理其实不复杂,在网上用心搜索的话可以找到几个版本,但是在实际使用过程中多少都还会遇到一些问题。事实上,实现数据集的基础功能比较容易,但是如果在使用过程中有一些细节注意不到的话,很可能你后续的实验会白做,这里我也走过一些弯路。大致来说,数据集制作一步到位比较难,因为后续你可能要在多种情况下应用,比如说加噪声、做FFT、维度变换、小波变换、选小样本进行迁移学习等。如果数据集搞不好,可能你的结果就不受控,到时候排查起问题来特别麻烦。

对于数据集的处理,我这里把它分为3个部分详细进行说明。

  • 数据的读取

  • 数据的分割组合

  • 数据的变换

一、数据的读取

数据的读取是第一步,虽然文件的格式是mat,但是用matlab处理其实没有必要。我们直接用python自带的读取函数就可以,以最常见的10分类为例,即取工况1中,1个正常文件,3种尺寸的3种故障。这里很多人直接把1类文件放到一个文件夹里,我的则是分的更细些,把不同分类也用文件夹分开,如图所示。

三种工况

10种分类(也可以不分文件夹)

def readmat(path, label,name="_DE_time",steps=128):datalist = []mat_filename_list = os.listdir(path) #得到文件夹下的所有文件名称mat_filename_list.sort(key=lambda x: int(x[:-4])) #文件名排序for mat_filename in mat_filename_list:matdata = scio.loadmat(path + mat_filename) #读取文件data_name = "X" + mat_filename[0:3] + name  #提取所需的传感器数据data = matdata[data_name] #提取所需的传感器数据datalist.append(data)   #将数据整合至列表

我这里的代码是为了说明问题,并不完整,大家最好还是理解以后自行进行补全。

其实读取文件形成列表这一步大家都差不多,我这里在函数里增加了选项,可选DE或FE,可以用于后续做迁移学习。steps后续用来滑窗取值的参数,这里请大家先行自动忽略。

二、数据的分割组合

数据的分割组合是最重要的一个环节,在数据的划分比例上,也很难有统一的标准。这里一共有几个问题必须事先搞清楚。

  1. 取多大的窗口?

  2. 划分训练集、测试集还是训练集、验证集、测试集?

  3. 各个数据集合的比例怎么定?

  4. 要不要做滑窗取值?

首先我贴一张图,图里是我统计的个人看过的论文里的数据集划分方法,仅供参考。

数据集划分参考

上面的数据来源至少都是近几年中文核心,也有SCI、书籍、博士的研究,应该还算是比较有参考意义的。但是我们不难发现,大家虽然用的是同一个数据集,但划分方法咋就这么不一样呢?

  1. 首先从分类讲,建议大家直接用10分类,因为4分类的指标普遍都太好了,做的人确实也较少,实际操作起来也不会简单多少,所以真的没这个必要。更何况从工程意义上讲,区分故障种类的同时我们肯定更希望知道故障的大致严重程度。

  2. 输入数据的类型上就见仁见智了,令我没想到的是居然时域的分析比较多。时域分析的好处就是处理起来简单一些,缺点就是效果差一些(我自己测的),对噪声的鲁棒性差一些(也是我自己测的),大家可以自己试试。频域数据作为输入的在论文里我还没看到,这里统计的是在一本教材里看到的,作者是这个领域的博士,我觉得挺靠谱,自己也就借鉴了他的方法。频域数据的好处就是提取了频域信息,特征明显。毕竟是研究信号嘛,还是频域图更加直观,传统的方法里故障频率可是至关重要的指标。确定是丢失了时间特征,目前我感觉时间特征其实不是很关键,因为训练前大家都要随机排列样本的,而每一小段样本里的时间信息确实太少了,恐怕也难以说明问题;时频图作为输入的最近几年不少,就是通过小波变换或者短时傅里叶变换形成时频图,将图片作为输入。好处就是既保留了时域信息,也提取了频域特征。而图片的输入形式,天然适配各种成熟的图片处理网络模型,做起实验来省点事。缺点就是尺寸有点大,对我来说自己的笔记本电脑肯定跑不动,效果好不好我也没试过,理论上应该是不错的。再多说一句,数据类型的选择很重要,没有绝对的优劣,但是你可能都得试试。

  3. 样本的长度上花样就没那么多了。选择的时候大家要注意的就是轴承的自转周期,大概不到400个点是1圈,所以最好以它的整数倍取值,这是信号本身的周期性决定的。破坏这种周期性不利于分析,也是没有必要的。上面的图里2048用的人比较多,大概5个周期。做FFT的话变成1024个点,再二维变换正好是32×32输入2D卷积网络,这是我的处理办法。1024的感觉也行,2个半周期,不会很差,我一开始这么分过,可以直接二维变换为32×32输入。但是做FFT就尴尬了,512就不好变换了。其它样本尺寸不推荐,时频图输入那两个我记得也是2048个点为一个样本的。不过居然还有论文不交代自己样本大小的,我也真是无语,以后这种基本条件都不交代的论文还是少看,实在是没法参考。

  4. 数据集的划分是个重点。这里有两个问题,一是要不要验证集,二是比例怎么定。这几个案例里也是各种都有。我的观点是验证集是必须的,你也可以在制作数据集时不用验证集,在model.fit时再用自带的参数从训练集里划分出来,但是论文里是要交代清楚的。有一些萌新可能嫌麻烦,在训练时直接把测试集当验证集用的,这明显是有问题的,相当于作弊吧,具体大家可以查查相关文章。我初期的实验就是这么搞的,效果当然不错,毕竟是提前看到了答案啊。。。还有人可能说,我就不要验证集了,我直接用训练的loss作为标准。这样程度上没有瑕疵,不过最终效果可就差多了。关于划分比例上其实不必太纠结,写函数的时候做成可调的差不多就行。我用的是7:1.5:1.5,参考的是教材里的,谁叫这是我看的第一本书呢,而且我觉得人家博士研究的肯定比我透彻,我也希望用相同的数据集划分方式,和博士的实验数据做对比。

  5. 滑窗到底需不需要呢。如果大家有点经验,就能从上面看出来大部分的是做过滑窗的,而且数据集都扩充了10倍左右。有些是训练集、验证集和测试集都做了滑窗,有些没有在测试集上做处理。滑窗作为少数的时序数据增强方法还是很有必要的,在图像处理领域,翻转、平移等数据增强手段都已经是常规操作了,所以我个人认为滑窗也应该是一种常规操作。从效果上看,滑动取值的方法也确实更好。

本来打算在这一部分多写程序的,没想到还是一堆文字。没办法,需要说清楚的问题太多了,不然没法直接上程序啊。程序还是下一节再说吧,今天只能写到这里了,希望大家多多支持点赞,如能留言交流,不甚荣幸!

深度学习与西储大学轴承数据集(二)相关推荐

  1. 深度学习与西储大学轴承数据集(一)

    0.写在前面的话 去年这个时候开始萌生了用深度学习进行机械故障诊断的想法,虽然目前勉强入门,但是回过头来看,确实走了不少弯路.整个学习过程几乎全靠网络上的资源,因此,写这篇文章除了回顾学习过程.总结提 ...

  2. Tensorflow2.0:CNN 解决凯斯西储大学轴承数据集的分类问题

    文章目录 项目介绍 代码实现 1.导入需要的库 2.参数设置 3.归一化 4.定义滑窗函数 5.取样本 6.划分训练集和测试集 7.得到 Dataset 类型数据集 8.建立模型 9.初始化优化器 1 ...

  3. 1.基于深度学习的轴承故障诊断--凯斯西储大学轴承数据集介绍

    本章主要介绍来自凯斯西储大学的轴承实验数据 下载地址 西储大学下载地址:http://csegroups.case.edu/bearingdatacenter/pages/download-data- ...

  4. Pytorch学习笔记(八)——CWRU(西储大学轴承数据集)数据集如何从mat格式转为CSV文件

    2022.4.5增加说明==== 鉴于很多读者询问代码没作用的问题,做一下解释 cwru数据集的目录如这样 子目录 file_path需要修改为自己的CWRU数据集的路径 save_file_path ...

  5. CWRU(西储大学轴承数据集)数据集如何从mat格式转为CSV文件-----转载

    file_path需要修改为自己的CWRU数据集的路径 save_file_path需要修改为转换之后需要保存的转换为csv文件后的保存路径 记得路径后面 '\\' 然后代码运行之后没提示需要等一会转 ...

  6. 凯斯西储大学轴承故障诊断数据集详解

    目录 前言 一.凯斯西储大学数据集的来源与历史 二.凯斯西储大学数据集的结构与特点 三.凯斯西储大学数据集的实验环境 四.凯斯西储大学数据集在轴承故障诊断研究中的应用 五.凯斯西储大学数据集的局限性 ...

  7. 卷积神经网络西储大学轴承故障诊断(基于时频变换)

    网上有不少方法,本人尝试了下. 更多内容在公众号,轴承故障诊断与寿命预测 一.选取西储大学轴承数据 二.利用短时傅立叶或小波变换为时频图,选取了cmor小波的方法,得到640张时频图如下 三.直接利用 ...

  8. CWRU(凯斯西储大学轴承数据中心)数据集获取

    CWRU(凯斯西储大学轴承数据中心)数据集获取网址 https://engineering.case.edu/bearingdatacenter/apparatus-and-procedures 数据 ...

  9. 数据集-故障诊断:西储大学轴承的各项数据以及数据说明

    实验平台 平台组成 一个1.5KW(2马力)的电动机(图左侧): 一个扭矩传感器/ 译码器(图中间连接处): 一个功率测试计(图右侧): 电子控制器(图中没显示) . 待测轴承 待检测的轴承支撑着电动 ...

最新文章

  1. mac下java配置填坑
  2. 【知识星球】动态推理网络结构上新,不是所有的网络都是不变的
  3. 【Spring 5】响应式Web框架实战(上)
  4. spring cache相关注解介绍 @Cacheable、@CachePut、@CacheEvict
  5. springboot整合Mybatis例子
  6. OpenShift 4之访问权限分级授权
  7. python2与python3在windows下共存
  8. java和xampp_XAMPP和Bugfree详细教程
  9. devc运行窗口不显示_编写Qt多窗口程序
  10. 编译原理第三版 作业一
  11. IFIX组态-----通过按钮弹出、关闭子画面
  12. 深度学习与计算机视觉教程(1) | 引言与知识基础(CV通关指南·完结)
  13. Java中的字节是什么意思?
  14. 《架构设计2.0大型分布式系统架构方法论与实践》三高笔记
  15. 向大佬学习C语言1198: 考试排名(二)(结构体专题)
  16. 2017.06.21日作业
  17. 图片base64转码,本地和网络图片均可,类对象转map,类对象转键值对字符串
  18. NC UAP STUDIO授权
  19. 【高德地图API】从零开始学高德JS API(一)地图展现——仙剑地图,麻点图,街景,室内图...
  20. 百度前端技术学院-斌斌学院-任务五

热门文章

  1. 真实解决poetry遇到ImportError: cannot import name ‘Tortoise‘ from ‘tortoise‘ (unknown location)
  2. 启方半导体基于二代0.13微米嵌入式闪存技术的汽车半导体工艺即将量产
  3. Spark GraphX图计算入门
  4. mmap 与 cache 的回收
  5. DNF游戏中判断怪物相对于玩家的方向(角度)
  6. IT男的”幸福”生活
  7. SpringBoot学习笔记总结——动力节点
  8. 基于vue.js后台管理系统框架学习
  9. 微软商店报错代码:0x800706D9的一种解决方案
  10. 数据库 for update的作用