简介

由于课题原因,最近在学习torch对于轴承故障检测的相关知识,但第一步读取数据以及数据的划分就难到了我,在网上查找相关资料,也没有完整的代码,于是只能东拼西凑,修修改改,最后勉强凑出来一个可以一用的代码,放在这里保存一下。

读取函数

def open_data(bath_path,key_num):path = bath_path + str(key_num) + ".mat"str1 =  "X" + "%03d"%key_num + "_DE_time"data = scio.loadmat(path)data = data[str1]return data

数据处理函数

def deal_data(data,length,label):data = np.reshape(data,(-1))num = len(data)//lengthdata = data[0:num*length]data = np.reshape(data,(num,length))"""最大值绝对值标准化(MaxAbs)即根据最大值的绝对值进行标准化,假设原转换的数据为x,新数据为x'那么x'=x/|max|,其中max为x所在列的最大值。MaxAbs方法跟Max-Min用法类似,也是将数据落入一定区间,但该方法的数据区间为[-1,1]。MaxAbs也具有不破坏原有数据分布结构的特点,因此也可以用于稀疏数据、稀疏的CSR或CSC矩阵。"""maxabs_scaler = preprocessing.MaxAbsScaler()data = maxabs_scaler.fit_transform(np.transpose(data,[1,0]))data = np.transpose(data,[1,0])label = np.ones((num,1))*labelreturn np.column_stack((data,label))

数据集划分函数

def split_data(data,split_rate):length = len(data)num1 = int(length*split_rate[0])num2 = int(length*split_rate[1])index1 = random.sample(range(num1),num1)train = data[index1]data = np.delete(data,index1,axis=0)index2 = random.sample(range(num2),num2)eval = data[index2]test = np.delete(data,index2,axis=0)return train,eval,test

数据加载函数

def load_data(num = 90,length = 1280,hp = [0,1,2],fault_diameter = [0.007,0.028,0.021],split_rate = [0.7,0.2,0.1]):#num 为每类故障样本数量,length为样本长度,hp为负载大小,可取[0,1,2,3],fauit_diameter为故障程度,可取[0.007,0.014,0.021]#split_rate为训练集,验证集和测试集划分比例。取值从0-1。#bath_path1 为西储大学数据集中,正常数据的文件夹路径#bath_path2 为西储大学数据集中,12K采频数据的文件夹路径bath_path1 = r"F:\data\cwru\Normal Baseline Data\\"bath_path2 = r"F:\data\cwru\12k Drive End Bearing Fault Data\\"data_list = []label = 0# 正常数据# path1 = bath_path1 + str(97+i) + ".mat"# normal_data = scio.loadmat(path1)# str1 = "X0" + str(97+i) + "_DE_time"normal_data = open_data(bath_path1, 97)data = deal_data(normal_data, length, label=label)data_list.append(data)for i in hp:#故障数据for j in fault_diameter:if j == 0.007:inner_num = 105ball_num = 118outer_num = 130elif j == 0.014:inner_num = 169ball_num = 185outer_num = 197else:inner_num = 209ball_num = 222outer_num = 234inner_data = open_data(bath_path2,inner_num + i)inner_data = deal_data(inner_data,length,label + 1)data_list.append(inner_data)ball_data = open_data(bath_path2,ball_num + i)ball_data = deal_data(ball_data,length,label + 2)data_list.append(ball_data)outer_data = open_data(bath_path2,outer_num + i)outer_data = deal_data(outer_data,length,label + 3)data_list.append(outer_data)label = label + 3#保持每类数据数据量相同num_list = []for i in data_list:num_list.append(len(i))min_num = min(num_list)if num > min_num:print("每类数量超出上限,最大数量为:%d" %min_num)min_num = min(num,min_num)#划分训练集,验证集和测试集,并随机打乱顺序train = []eval = []test = []for data in data_list:data = data[0:min_num,:]a,b,c = split_data(data,split_rate)train.append(a)eval.append(b)test.append(c)train = np.reshape(train,(-1,length+1))train = train[random.sample(range(len(train)),len(train))]train_data = train[:,0:length]train_label = torch.zeros(len(train),10).scatter_(1,torch.LongTensor(train[:,length]).unsqueeze(1),1)eval = np.reshape(eval,(-1,length+1))eval = eval[random.sample(range(len(eval)),len(eval))]eval_data = eval[:,0:length]eval_label = torch.zeros(len(eval), 10).scatter_(1, torch.LongTensor(eval[:,length]).unsqueeze(1),1)test = np.reshape(test,(-1,length+1))test = test[random.sample(range(len(test)),len(test))]test_data = test[:,0:length]test_label = torch.zeros(len(test), 10).scatter_(1, torch.LongTensor(test[:,length]).unsqueeze(1),1)return train_data,train_label,eval_data,eval_label,test_data,test_label

参考文献

参考资料1
参考资料2
参考资料3

西储大学(CWRU)轴承数据集的数据读取与划分相关推荐

  1. 西储大学(CWRU)轴承数据集故障诊断(一):数据读取,数据集划分

    CWRU轴承数据集故障诊断 博客编写背景 数据集读取 训练与测试 完整数据读取代码 博客编写背景 本次博客是对深度学在机械设备的故障诊断(模式识别)领域的入门级的基础教程,主要是专门针对CWRU滚动轴 ...

  2. CWRU(凯斯西储大学) 轴承数据集简介

    实验平台如下图所示: 实验平台组成: 一个2马力的电动机.(图左侧) 一个扭矩传感器/译码器(图中连接处) 一个功率测试仪(图右侧) 电子控制器 待测轴承: 待检测的轴承支撑着电动机的转轴: 驱动端轴 ...

  3. CWRU(凯斯西储大学) 轴承数据

    CWRU(凯斯西储大学) 轴承数据 实验平台如下图所示: 实验平台组成: 一个2马力的电动机(图左侧): 一个扭矩传感器/ 译码器(图中间连接处): 一个功率测试计(图右侧): 电子控制器(图中没显示 ...

  4. 对凯斯西储大学的轴承故障信号进行小波变换特征提取

    最近本菜鸟对凯斯西储大学的轴承信号做了时域参数和小波变换,希望能分辨出其轴承出现故障与否和故障类型-外圈故障,内圈故障,滚珠体故障.以下是用matlab2011b处理信号后的结果及遇到的问题.先贴代码 ...

  5. 小波变换之(凯斯西储大学CWRU数据转为时频图像)-matlab

    凯西储大学(CWRU)数据集下载地址:CWUR完整版 1,挑选出所需数据,每种工况下的10类数据,也就是每个类别一个mat格式的文件 2,加载原始路径,预先定义好所需要的参数 采样频率12Khz ad ...

  6. 凯斯西储(CWRU)数据集解读并将数据集划分为10分类(含代码)

    凯斯西储大学轴承故障数据集官方网址:https://engineering.case.edu/bearingdatacenter/download-data-file 官方数据集整理版(不用挨个下了) ...

  7. 凯斯西储大学轴承故障数据集解读(新手版)

    最近真是学到一头雾水,光理解凯斯西储大学的轴承数据集就花了好长时间,下载干巴巴的数据集,啥也看不懂,对着论文就更加迷茫(翻白眼儿). 下面就把我理解的整理一下: CWRU 提取码:dkjd 适合新手进 ...

  8. 【凯斯西储大学数据集介绍(CWRU)】

    目录 实验平台 缩写含义 总结 实验平台 实验平台组成: [1]一个2马力的电动机(图左侧): [2]一个扭矩传感器/ 译码器(图中间连接处): [3]一个功率测试计(图右侧): [4]电子控制器(图 ...

  9. tensorflow自编码器+softmax对凯斯西储大学轴承数据进行故障分类

    先放参考链接,感谢大神们带来的启发: 凯斯西储大学轴承数据故障分类(使用卷积神经网络) TensorFlow实现MNIST识别(softmax) 前情回顾: tensorflow 自编码器+softm ...

最新文章

  1. oracle个性化,Oracle:个性化营销成功的五细则
  2. 定义进项税代码缺省值
  3. 使用$.post和$.get向服务器发送请求
  4. 为什么要将表和索引建立在不同的表空间?
  5. JMX的Hello World
  6. 第三十五期:网络爬虫是啥玩意儿?有什么用呢?
  7. Java线程怎么发送消息_Java客户端Socket如何能在阻塞线程下收到服务端发送来的消息?...
  8. 模式识别:聚类分析2020.05.27class
  9. JavaScript学习(七)—元素节点的获取方式
  10. 解决计算机系统问题开发的软件是,为解决计算机系统问题而开发的软件是。
  11. 伍德里奇计量经济学第四章课后计算机作业,伍德里奇---计量经济学第4章部分计算机习题详解(MATLAB).pdf...
  12. java中如何写像下雨_雨声像什么的比喻句,形容下雨的声音的句子
  13. MATLAB椎体怎么画,求以半径为R的圆为底,平行且等于底圆直径的线段为顶,高为h的正劈锥体的体积.用matlab作!急用...
  14. 计算机windows错误恢复,教你“Windows错误恢复”的修复方法技巧
  15. 10步(**10 step**)天才思维模型
  16. emc re 整改 超标_EMC测试及整改办法
  17. 计算机物联网职业生涯规划书,物联网工程技术专业职业生涯规划书-.doc
  18. mybatis笔记-8、动态sql
  19. 机器学习基石06:泛化理论(Theory of Generalization)
  20. nginx 解决504超时问题

热门文章

  1. bootstrap之affix
  2. 服务器临时维护 开启另行通知,萌将风云7月6日临时停机维护公告-7月5日至7月11日精彩活动预告...
  3. 【笔记】NandFlash介绍
  4. 成功解决AttributeError: module ‘numpy‘ has no attribute ‘polyld‘
  5. SpringBoot之Order注解启动顺序
  6. HM编码器代码阅读(18)——变换
  7. Vite项目优化一:vite 构建移除 console
  8. 板凳——————————————————(枯藤 )MIX汇编 前导(3)
  9. Maven Pom文件中的scope含义
  10. matlab自带拉格朗日插值,MATLAB实现拉格朗日插值