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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/373246.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

R语言绘图教程 | 双侧条形图绘制教程

写在前面 双侧条形图在我们的文章中也是比较常见的,那么这样的图形是如何绘制的呢? 以及它使用的数据类型是什么呢? 这些都是我们在绘制图形前需要掌握的,至少我们知道绘图的数据集如何准备,这样才踏出第一步。 今天的教程,我们会从数据的准备,以及数据如何整理,以及…

亲测解决vscode的debug用不了、点了没反应

这个问题在小虎登录vscode同步了设置后出现,原因是launch文件被修改或删除。解决方法是重新添加launch。 坏境配置 win11 + vscode 解决方法 Ctrl + shift + P,搜索debug添加配置: 选择python debugger。 结果生成了一个文件在当前路径: launch内容: {// Use Int…

ubuntu系统下c++ cmakelist vscode debug(带传参的debug)的详细示例

c和cmake的debug,网上很多都需要配置launch.json,cpp.json啥的,记不住也太复杂了,我这里使用cmake插件带有的设置,各位可以看一看啊✌(不知不觉,竟然了解了vscode中配置文件的生效逻辑🤣) 克隆…

Unity3D判断屏幕中某个坐标点的位置是否在指定UI区域内

系列文章目录 unity工具 文章目录 系列文章目录前言一、使用rect.Contains()判断1-1、转换坐标1-2、代码如下:1-3、注意事项1-3、测试效果如下 二、使用坐标计算在不在区域内2-1、方法如下:2-2、注意事项 三、使用RectTransformUtility.ScreenPointToLo…

使用maven对springboot项目进行瘦身

目录 一、什么是Maven 二、springboot 项目 三、springboot 项目瘦身 一、什么是Maven Maven是一个基于Java的项目管理和构建工具。它通过提供一个一致的项目结构、自动化构建脚本和依赖管理系统,简化了Java项目的构建过程。 Maven使用一种称为POM(…

数据结构_找环,破环题-2.5

一. 判断单链表有无环 a. 错误的思路:遍历陷入死循环 1)和相交的遍历思路一样,找指向相同。 错误点 一直在死循环。 思考点:如何破环 b. 个人思路:反转链表回首结点 1)目前的经验,无非就…

macOS Sonoma 14系统安装包

macOS Sonoma 14是苹果公司最新推出的操作系统,为Mac用户带来了全新的使用体验。Sonoma是苹果继Catalina之后的又一重要更新,它在改善系统性能、增加新功能、优化用户界面等方面做出了显著贡献。 macOS Sonoma 14系统有许多令人兴奋的新功能和改进&…

【LangChain-04】利用权重和偏差跟踪和检查LangChain代理的提示

利用权重和偏差跟踪和检查LangChain代理的提示 一、说明 考虑到(生成)人工智能空间,(自主)代理现在无处不在!除了更强大且幸运的是开放的大型语言模型(LLM)之外,LangCh…

JavaScript运行机制

在web前端开发中,JavaScript无疑是一种非常重要的编程语言。它能够为网页添加动态交互功能,提升用户体验。然而,要充分发挥JavaScript的威力,我们需要对它的运行机制有一定的了解。 JavaScript是一种解释执行的脚本语言&#xff…

Goland控制台日志打印错位

现象:Goland控制台打印日志,调整控制台界面大小后偶发性的日志内容错位 原因:未知(大概是bug) 解决方案: shift shift 进入Registry,取消go.run.process.with.pty勾选即可

AI助力农作物自动采摘,基于YOLOv3全系列【yolov3tiny/yolov3/yolov3spp】参数模型开发构建作物生产场景下番茄采摘检测计数分析系统

去年十一那会无意间刷到一个视频展示的就是德国机械收割机非常高效自动化地24小时不间断地在超广阔的土地上采摘各种作物,专家设计出来了很多用于采摘不同农作物的大型机械,看着非常震撼,但是我们国内农业的发展还是相对比较滞后的&#xff0…

K8S之Namespace的介绍和使用

Namespace的理论和实操 Namespace理论说明Namespace实操创建、查看命名空间使用ResouceQuota 对Namespace做资源限额更多ResouceQuota 的使用 Namespace理论说明 命名空间定义 K8s支持多个虚拟集群,它们底层依赖于同一个物理集群。 这些虚拟集群被称为命名空间&…

教授LLM思考和行动:ReAct提示词工程

ReAct:论文主页 原文链接:Teaching LLMs to Think and Act: ReAct Prompt Engineering 在人类从事一项需要多个步骤的任务时,而步骤和步骤之间,或者说动作和动作之间,往往会有一个推理过程。让LLM把内心独白说出来&am…

Flink 动态表 (Dynamic Table) 解读

博主历时三年精心创作的《大数据平台架构与原型实现:数据中台建设实战》一书现已由知名IT图书品牌电子工业出版社博文视点出版发行,点击《重磅推荐:建大数据平台太难了!给我发个工程原型吧!》了解图书详情,…

Linux服务器安装Jenkins

1、安装Jenkins前必须先安装jdk与maven 2、下载Jenkins 安装包地址 linux jenkins 链接: 百度网盘 请输入提取码 提取码: zfyq 3、解压压缩包 rpm -ivh jenkins-2.174-1.1.noarch.rpm 4、解压完成后查看Jenkins安装路径 whereis jenkins 5、启动报错 ,这是因为Jenki…

Oracle数据表ID自增操作

一、Oracle ID自增长功能介绍 Oracle数据库默认不支持像 SQLServer、MySQL中的自增长(auto increment)功能,即自动为每一行记录的自增长字段生成下一个值。 二、Oracle ID自增长方法 第一种,通过序列(sequence&#…

linux k8s 源码编译及单集群测试

目录 概述实践安装插件docker 在线安装containerd安装二进制安装yum安装修改containder配置文件 cnietcdrsyncgo设置golang代理 安装CFSSL下载kubernetes代码编译启动本地单节点集群问题k8s没有被正常启动该如何k8s正常启动日志测试 结束 概述 此文详细说明在 centos 7上编译 k…

Linux 服务器安装maven

1、压缩文件下载Maven – Download Apache Maven 2、解压 tar -xvf apache-maven-3.8.4-bin.tar.gz 3、配置环境变量 在/etc/profile中保存Maven的环境变量: export M2_HOME/opt/server/apache-maven-3.5.4 export PATH$PATH:$M2_HOME/bin 4、通过source生效文件 so…

紫光展锐M6780丨一语即达,“声”临其境

在前面四期,紫光展锐针对M6780的显示技术进行了系列揭秘。虽名为“智能显示芯片”,但M6780的魅力远不止于超高清智能显示,更有智能语音交互功能,助力打造数字世界的交互新体验。 智能语音技术是一种基于人工智能和语音识别技术的创…

阅读笔记——《RapidFuzz: Accelerating fuzzing via Generative Adversarial Networks》

【参考文献】Ye A, Wang L, Zhao L, et al. Rapidfuzz: Accelerating fuzzing via generative adversarial networks[J]. Neurocomputing, 2021, 460: 195-204.【注】本文仅为作者个人学习笔记,如有冒犯,请联系作者删除。 目录 摘要 一、介绍 二、相关…