基于深度学习算法的轴承故障自主分类

1. 要求

轴承有3种故障:外圈故障,内圈故障,滚珠故障,外加正常的工作状态。如表1所示,结合轴承的3种直径(直径1,直径2,直径3),轴承的工作状态有10类:

                        表1 轴承故障类别

外圈故障

内圈故障

滚珠故障

正常

直径1

1

2

3

0

直径2

4

5

6

直径3

7

8

9

实验包含以下两个文件:

1.train.csv,训练集数据,1到6000为按时间序列连续采样的振动信号数值,每行数据是一个样本,共792条数据,第一列id字段为样本编号,最后一列label字段为标签数据,即轴承的工作状态,用数字0到9表示。

 2.test_data.csv,测试集数据,共528条数据,除无label字段外,其他字段同训练集。  总的来说,每行数据除去id和label后是轴承一段时间的振动信号数据,选手需要用这些振动信号去判定轴承的工作状态label。  注意:同一列的数据不一定是同一个时间点的采样数据,即不要把每一列当作一个特征

采用CNN、RNN等深度学习算法,实现对具有序列特性的轴承故障样本的自主分类。

要求:(1)利用Python sklearn安装包,调用CNN、RNN算法,对轴承故障样本实现自主分类。

(2)表格输出训练集、测试集分类精度、DICE, Jarccard 参数值

2. 过程

本次实验主要通过卷积神经网络来进行处理,可以直接通过python中的keras神经网络库来进行搭建。首先读取训练集文件,然后再对其进行处理,产生生成器,其中的label标签数据转换成把标签转成OneHot,后续通过然后使用 keras的fit_generator进行调用,其结果如下:

图1 训练样本生成器

图2 处理后的训练集特征值及标签(部分)

同样,测试集样本也作处理产生生成器,结果如下:

图3 处理后测试集生成器数据(部分)

然后开始建立模型,通过调用keras库里的models来进行构造,使用 Sequential() 实现全连接网络,网络模型搭建完后,需要对网络的学习过程进行配置,否则在调用 fit 或 evaluate 会抛出异常。我使用compile (loss='categorical_crossentropy', optimizer=Adam(0.0002), metrics=['accuracy'])来完成配置。

产生的一个模型如下:

图4 打印模型

导入训练后的模型来实现分类,通过model.predict_generator()语句来对测试集中的数据进行预测,其尺寸与结果如下图:

图5 测试集文件中的数据预测结果

接下来为了进一步探究该模型的好坏,首先读取训练集数据后,将其转换成numpy,取出head,然后提取其中属于特征值的列提取出来,再将其中的label值单独提取出来,然后通过sklean中的train_test_split()函数将训练集中的数据进行分割,其中测试集占0.4。处理完毕后,通过模型进行预测,其相关结果如下:

图6 预测精度

图7 混淆矩阵

图8 confusion 表

图9 测试集置信度

通过precision_recall_curve()函数得到Precision, Recall值,利用roc_curve()得到FPR, TPR值,绘制如下曲线:

图10 PR曲线

图11 ROC曲线

图12 相关指标

再多次运行程序,结果如下:

图13

图14

然后我增加了数据迭代次数epochs值,再次训练模型,然后通过验证,其结果如下:

图15 调整后的精度和混淆矩阵

图16 调整后的总体结果

可以发现精度上升了很多,说明该模型分类结果较为准确

3. 结果与分析

在上述实验过程中,我主要实现了对测试集文件进行分类以及对分类模型进行评估。在构建卷积神经网络并进行训练后,得到了图5所示的结果。然而,由于我不清楚其真实标签,因此无法判断模型的好坏。因此,我对训练集的文件进行处理,将其分割成训练样本和测试样本,然后进行评估。经过验证后,其结果如图6至图12所示。我通过精度、汉明距离、Jaccard值、AUC大小等参数来作为评估指标。从中可以看出准确率和召回率的调和平均数F1-score的值总体较大,更能说明模型的性能较好。除此之外,我还绘制了它们的ROC曲线和PR曲线。从曲线中我们也可以更加直观地看出ROC曲线靠近左上角,PR曲线靠近右上角,这说明该分类模型较好。

训练集和测试集的精度都超过了90%,但出现了训练集的精度低于测试集的异常。经过多次运行程序,在图13和图14中可以看出训练集的精度大于测试集的,并且都达到了90%以上。出现异常的结果可能是由于我在分割样本时采用了随机分割,所以可能会选取到不合适的样本导致异常。为了提高分类精度,我增加了epochs值,通过多次迭代后产生了新的模型。通过验证可以看出,模型性能得到了优化,分类效果更加好了。由此可以判断它对于测试集文件的自主分类也实现较好。

  • 19
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
### 回答1: BP神经网络是一种常用的人工神经网络。它是一种多层前向反馈神经网络,适用于分类、回归和预测分析。BP神经网络故障诊断分类matlab程序是一种利用BP神经网络的程序,用于故障诊断和分类。 使用BP神经网络进行故障诊断分类时,首先需要准备训练集和测试集,然后将训练集输入到BP神经网络进行训练。训练结束后,将测试集输入到BP神经网络中,对测试结果进行分析和评估。 BP神经网络故障诊断分类matlab程序包含了许多函数和工具箱,这些工具箱包括了不同的BP神经网络算法、学习规则和激活函数。这些算法和规则的选择会直接影响到BP神经网络的性能和准确率。 通过BP神经网络故障诊断分类matlab程序,可以实现对不同应用领域的故障进行分类和诊断,如机械故障、电气故障、化工故障等领域。这种方法可以大大提高故障诊断精度,缩短诊断时间,减少设备损失和维修成本,并且可以应用到实际的生产和制造过程中。 ### 回答2: BP神经网络故障诊断分类matlab程序是一种基于BP(反向传播)算法设计的神经网络系统,它能够有效地诊断和分类各种故障,是一种非常实用的工程应用程序。 该程序结构简单,具有较高的准确性和稳定性。其工作原理是通过数据训练,不断调整网络的权重和阈值,使得网络对于不同故障能够正确的判别和分类。在该程序中,研究者需要先准备好一些已知故障的数据作为训练集,然后经过多次训练后,网络就可以正确地识别并分类新的故障。 与传统的故障诊断方法相比,利用BP神经网络来设计故障诊断分类程序具有许多优势。首先,BP神经网络不需要复杂的物理模型,因此可以避免由于模型不准确导致诊断结果出现误差的情况。其次,BP神经网络可以在不同的环境下进行训练,灵活度比较高,而传统方法则需要进行针对性的设计,不够灵活。此外,该程序具有诊断速度快和适用性广泛等优势。 总之,BP神经网络故障诊断分类matlab程序已经应用到多个领域中,如机械设备、电子机器等,为各种设备的故障诊断提供了一种解决方案。 ### 回答3: BP神经网络故障诊断分类Matlab程序是通过使用MATLAB软件和BP神经网络理论来分类和诊断故障。BP神经网络是一种多层前馈神经网络,它可以在给定输入和输出数据集的情况下,通过反向传播算法来计算不同层之间的权重和偏置,从而实现分类和预测。该程序通过建立适当的神经网络架构和训练数据集,实现对故障进行分类和预测。在处理大量数据时非常有效,可以快速而准确地检测到故障,并支持各种故障类型的分类,例如电力系统设备故障,机器和工程设备故障等。此外,该程序还具有图形用户界面,方便用户使用和处理数据。当使用这种方法时,用户需要收集充分的数据,对数据进行处理和清理,以便从中提取所需的特征信息,并将其作为输入数据集来训练和测试神经网络。本程序是基于MATLAB之上进行开发的,因此用户需要先安装MATLAB和相关工具箱。此外,对于BP神经网络的优化和调参是至关重要的,需要在构建网络前进行充分的训练和调整,以获得最佳的分类和预测效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

deleteeee

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值