卷积神经网络实战二 电机轴承故障分类

项目导论

最近实验室要接一个故障分类的项目,数据主要是传感器测得的各种数据,现在先用网上的数据集学习一下怎么处理。

数据集介绍

采用由凯斯西储大学轴承数据中心网站发布的电机轴承数据。此网站提供正常运行状态的电机轴承数据和不同部位发生故障是运行状态的电机轴承数据。在研究电机轴承故障诊断方面起到了重要作用。
通过电火花方式加工电机轴承的各种故障。在内圈、滚动体(即滚动体)和外圈分别制作损坏直径大小分别为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
评论 18
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值