项目导论
最近实验室要接一个故障分类的项目,数据主要是传感器测得的各种数据,现在先用网上的数据集学习一下怎么处理。
数据集介绍
采用由凯斯西储大学轴承数据中心网站发布的电机轴承数据。此网站提供正常运行状态的电机轴承数据和不同部位发生故障是运行状态的电机轴承数据。在研究电机轴承故障诊断方面起到了重要作用。
通过电火花方式加工电机轴承的各种故障。在内圈、滚动体(即滚动体)和外圈分别制作损坏直径大小分别为0.007inch、0.014inch、0.021inch的故障。(1 inch=25.4 毫米)
不同的故障直径体现不同的损伤程度。将制作的故障轴承安装到测试电机上进行测试。电机轴承在运行过程中的振动数据通过安装在电机的驱动部位和风扇部位的加速度计采集。
实验分别记录了电机转速1797rpm、1772rpm、1750rpm和1730rpm下采集到的数据。
数据存储为Matlab格式。
之前在原网站上下载和整理数据花了很多时间,这里直接提供百度云链接。
链接:https://pan.baidu.com/s/1nXLCE9nXucQhY72rkYN7ZQ
提取码:nzig
另外,人工智能入门四件套免费分享(统计学习方法、机器学习、机器学习实战、深度学习)
链接:https://pan.baidu.com/s/1kG3cRvto75krhjz1Ow4ANw 提取码:b8r1
数据集准备
先用48K采样频率、转速1730的数据进行实验,这样一共可以分为十类。


在工程下新建一个data文件夹,将这十个文件拖进去,接下来载入数据,观察里面的结构。
import pandas as pd
import scipy
from scipy import io
import os
matPath='.\\data\\'
for i in os.listdir(matPath):
inputFile = os.path.join(matPath,i)
feature_struct = scipy.io.loadmat(inputFile)
print(feature_struct)
观察输出可以看到每个文件的结构类似,都是字典,字典最后一个键是转速,倒数第二个是FE_time(风扇端测得的数据),倒数第三个是DE_time(驱动端测得的数据),对应的值是存储传感器数据的数组。
第一个文件的结构

这样我们就可以得到观测数据。
DE_time = list(feature_struct.values())[-3]
FE_time = list(feature_struct.values())[-2]
但一个数据集里的观测数据很多,

为了后期的训练,需要将整个数据集分割,在这里每取1024个数据点制作1个样本。里面包括了两种观测数据,我在这暂时只使用驱动端观测数据进行训练。
切割完后分别将3/4的样本存入train以及1/4的样本存入test文件夹。
完整的数据处理代码
import pandas as pd
import scipy
from scipy import io
import os
matPath='.\\data\\'
outPath_train='.\\train\\'
outPath_test ='.\\test\\'
for i in os.listdir(matPath):
inputFile = os.path.join(matPath,i)
feature_struct = scipy.io.loadmat(inputFile)
#print(feature_struct)
DE_time = list(feature_struct.values())[-3]
#FE_time = list(feature_struct.values())[-2]
lst = []
j = 0
for a, b in enumerate(DE_time):
if a / 1024 < j + 1:
lst.extend(b)
else:
j += 1
if j <= int((len(DE_time) / 1024) * 3/4):
outputFile = os.path.join(outPath_train, os.path.split(i)[1][:-4])
data = pd.DataFrame(data=lst)
dfdata = pd.DataFrame(data=data)
datapath1 = outputFile + '_' + str(j) + '.csv'
dfdata.to_csv(datapath1, index=False)
else:
outputFile = os.path.join(outPath_test, os.path.split

最低0.47元/天 解锁文章
7701





