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

2024-02-06 06:20

本文主要是介绍基于深度学习算法的轴承故障自主分类,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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值,通过多次迭代后产生了新的模型。通过验证可以看出,模型性能得到了优化,分类效果更加好了。由此可以判断它对于测试集文件的自主分类也实现较好。

这篇关于基于深度学习算法的轴承故障自主分类的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/683397

相关文章

Window Server创建2台服务器的故障转移群集的图文教程

《WindowServer创建2台服务器的故障转移群集的图文教程》本文主要介绍了在WindowsServer系统上创建一个包含两台成员服务器的故障转移群集,文中通过图文示例介绍的非常详细,对大家的... 目录一、 准备条件二、在ServerB安装故障转移群集三、在ServerC安装故障转移群集,操作与Ser

windos server2022的配置故障转移服务的图文教程

《windosserver2022的配置故障转移服务的图文教程》本文主要介绍了windosserver2022的配置故障转移服务的图文教程,以确保服务和应用程序的连续性和可用性,文中通过图文介绍的非... 目录准备环境:步骤故障转移群集是 Windows Server 2022 中提供的一种功能,用于在多个

五大特性引领创新! 深度操作系统 deepin 25 Preview预览版发布

《五大特性引领创新!深度操作系统deepin25Preview预览版发布》今日,深度操作系统正式推出deepin25Preview版本,该版本集成了五大核心特性:磐石系统、全新DDE、Tr... 深度操作系统今日发布了 deepin 25 Preview,新版本囊括五大特性:磐石系统、全新 DDE、Tree

Python中的随机森林算法与实战

《Python中的随机森林算法与实战》本文详细介绍了随机森林算法,包括其原理、实现步骤、分类和回归案例,并讨论了其优点和缺点,通过面向对象编程实现了一个简单的随机森林模型,并应用于鸢尾花分类和波士顿房... 目录1、随机森林算法概述2、随机森林的原理3、实现步骤4、分类案例:使用随机森林预测鸢尾花品种4.1

Node.js 中 http 模块的深度剖析与实战应用小结

《Node.js中http模块的深度剖析与实战应用小结》本文详细介绍了Node.js中的http模块,从创建HTTP服务器、处理请求与响应,到获取请求参数,每个环节都通过代码示例进行解析,旨在帮... 目录Node.js 中 http 模块的深度剖析与实战应用一、引言二、创建 HTTP 服务器:基石搭建(一

如何测试计算机的内存是否存在问题? 判断电脑内存故障的多种方法

《如何测试计算机的内存是否存在问题?判断电脑内存故障的多种方法》内存是电脑中非常重要的组件之一,如果内存出现故障,可能会导致电脑出现各种问题,如蓝屏、死机、程序崩溃等,如何判断内存是否出现故障呢?下... 如果你的电脑是崩溃、冻结还是不稳定,那么它的内存可能有问题。要进行检查,你可以使用Windows 11

Nacos客户端本地缓存和故障转移方式

《Nacos客户端本地缓存和故障转移方式》Nacos客户端在从Server获得服务时,若出现故障,会通过ServiceInfoHolder和FailoverReactor进行故障转移,ServiceI... 目录1. ServiceInfoHolder本地缓存目录2. FailoverReactorinit

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

不懂推荐算法也能设计推荐系统

本文以商业化应用推荐为例,告诉我们不懂推荐算法的产品,也能从产品侧出发, 设计出一款不错的推荐系统。 相信很多新手产品,看到算法二字,多是懵圈的。 什么排序算法、最短路径等都是相对传统的算法(注:传统是指科班出身的产品都会接触过)。但对于推荐算法,多数产品对着网上搜到的资源,都会无从下手。特别当某些推荐算法 和 “AI”扯上关系后,更是加大了理解的难度。 但,不了解推荐算法,就无法做推荐系