旋转机械故障数据集 全网首发

旋转机械故障 数据集 11G资料


泵、齿轮箱、电机、流量、液压系统、轴承(西储大学、辛辛那提大学、FEMTO、MOSFET)、PHM08挑战数据集、我闪发动机降级模拟数据集、铣床等

旋转机械故障数据集

数据集描述

该数据集是一个综合性的旋转机械故障检测和诊断数据集,旨在帮助研究人员和开发者训练和评估基于深度学习的故障检测和预测模型。数据集涵盖了多种类型的旋转机械设备,包括泵、齿轮箱、电机、流量计、液压系统、轴承等,并记录了这些设备在不同工况下的运行数据。通过高质量的数据和详细的标注信息,该数据集为开发高效且准确的故障检测和诊断系统提供了坚实的基础。

数据规模

  • 总数据量:11GB
  • 数据类型
    • 时间序列数据(振动信号、电流信号、温度信号等)
    • 标签数据(故障类型、故障程度等)

数据特性

  • 多样化场景:覆盖了多种类型的旋转机械设备,包括泵、齿轮箱、电机、流量计、液压系统、轴承等。
  • 高质量手工标注:每条数据都有详细的标签信息,支持直接用于训练故障检测和诊断模型。
  • 真实与合成结合:数据集包含来自真实工业环境的数据以及部分模拟数据,以弥补某些特定故障样本较少的问题。
  • 多类别支持:涵盖多种故障类型和不同程度的故障,丰富了数据集的多样性。
  • 无需预处理:数据集已经过处理,可以直接用于训练,无需额外的数据预处理步骤。

应用场景

  • 智能监控:自动检测旋转机械设备的故障情况,辅助管理人员及时发现并采取应对措施,提高设备的安全性和可靠性。
  • 故障诊断:通过分析设备的运行数据,进行详细的故障诊断,提前预警潜在的故障风险。
  • 科研分析:用于研究时间序列分析算法在特定工业应用场景中的表现,特别是在复杂背景和噪声条件下的鲁棒性。
  • 教育与培训:可用于安全相关的教育和培训项目,帮助学生和从业人员更好地识别和理解旋转机械设备的故障模式。
  • 自动化管理:集成到工业系统的管理系统中,实现对设备状态的自动化监测和管理,预防设备故障。

数据集结构

典型的数据集目录结构如下:

1rotating_machinery_fault_dataset/
2├── pump/
3│   ├── data/
4│   │   ├── vibration_signal_001.csv
5│   │   ├── current_signal_001.csv
6│   │   └── ...
7│   ├── labels/
8│   │   ├── fault_labels_001.csv
9│   │   └── ...
10├── gearbox/
11│   ├── data/
12│   │   ├── vibration_signal_001.csv
13│   │   ├── current_signal_001.csv
14│   │   └── ...
15│   ├── labels/
16│   │   ├── fault_labels_001.csv
17│   │   └── ...
18├── motor/
19│   ├── data/
20│   │   ├── vibration_signal_001.csv
21│   │   ├── current_signal_001.csv
22│   │   └── ...
23│   ├── labels/
24│   │   ├── fault_labels_001.csv
25│   │   └── ...
26├── flow_meter/
27│   ├── data/
28│   │   ├── flow_signal_001.csv
29│   │   └── ...
30│   ├── labels/
31│   │   ├── fault_labels_001.csv
32│   │   └── ...
33├── hydraulic_system/
34│   ├── data/
35│   │   ├── pressure_signal_001.csv
36│   │   └── ...
37│   ├── labels/
38│   │   ├── fault_labels_001.csv
39│   │   └── ...
40├── bearing/
41│   ├── case_western_reserve_university/
42│   │   ├── data/
43│   │   │   ├── vibration_signal_001.mat
44│   │   │   └── ...
45│   │   ├── labels/
46│   │   │   ├── fault_labels_001.csv
47│   │   │   └── ...
48│   ├── university_of_cincinnati/
49│   │   ├── data/
50│   │   │   ├── vibration_signal_001.mat
51│   │   │   └── ...
52│   │   ├── labels/
53│   │   │   ├── fault_labels_001.csv
54│   │   │   └── ...
55│   ├── femto/
56│   │   ├── data/
57│   │   │   ├── vibration_signal_001.mat
58│   │   │   └── ...
59│   │   ├── labels/
60│   │   │   ├── fault_labels_001.csv
61│   │   │   └── ...
62│   ├── mosfet/
63│   │   ├── data/
64│   │   │   ├── vibration_signal_001.mat
65│   │   │   └── ...
66│   │   ├── labels/
67│   │   │   ├── fault_labels_001.csv
68│   │   │   └── ...
69├── phm08_challenge/
70│   ├── data/
71│   │   ├── sensor_data_001.csv
72│   │   └── ...
73│   ├── labels/
74│   │   ├── fault_labels_001.csv
75│   │   └── ...
76├── our_engine_degradation_simulation/
77│   ├── data/
78│   │   ├── engine_data_001.csv
79│   │   └── ...
80│   ├── labels/
81│   │   ├── degradation_labels_001.csv
82│   │   └── ...
83├── milling_machine/
84│   ├── data/
85│   │   ├── vibration_signal_001.csv
86│   │   └── ...
87│   ├── labels/
88│   │   ├── fault_labels_001.csv
89│   │   └── ...
90├── README.txt  # 数据说明文件

数据说明

  • 数据内容
    • 每个子目录下包含相应的设备类型数据。
    • data/ 目录下存放的是原始传感器数据,通常为CSV或MAT文件格式。
    • labels/ 目录下存放的是对应的标签数据,通常为CSV文件格式。
  • 标签类型
    • 故障类型
    • 故障程度
    • 其他相关特征
  • 数据增广:数据集未做数据增广,用户可以根据需要自行进行数据增广。
  • 无需预处理:数据集已经过处理,可以直接用于训练,无需额外的数据预处理步骤。

示例代码

以下是一些常用脚本的示例代码,包括加载数据、数据可视化、特征提取、模型训练和评估。

脚本1: 加载数据
1import pandas as pd
2import numpy as np
3import os
4
5def load_data(data_dir, label_dir):
6    data_files = [f for f in os.listdir(data_dir) if f.endswith('.csv')]
7    label_files = [f for f in os.listdir(label_dir) if f.endswith('.csv')]
8
9    data_list = []
10    label_list = []
11
12    for data_file, label_file in zip(data_files, label_files):
13        data_path = os.path.join(data_dir, data_file)
14        label_path = os.path.join(label_dir, label_file)
15
16        data = pd.read_csv(data_path)
17        labels = pd.read_csv(label_path)
18
19        data_list.append(data)
20        label_list.append(labels)
21
22    return data_list, label_list
23
24# 示例
25data_dir = 'path/to/pump/data'
26label_dir = 'path/to/pump/labels'
27data, labels = load_data(data_dir, label_dir)
脚本2: 数据可视化
 

python

深色版本

1import matplotlib.pyplot as plt
2
3def visualize_data(data, labels):
4    fig, ax = plt.subplots(figsize=(10, 5))
5    ax.plot(data['time'], data['vibration'], label='Vibration Signal')
6    ax.set_xlabel('Time (s)')
7    ax.set_ylabel('Vibration (m/s^2)')
8    ax.legend()
9    plt.show()
10
11# 示例
12visualize_data(data[0], labels[0])
脚本3: 特征提取
1from scipy.signal import welch
2
3def extract_features(data):
4    fs = 1000  # 采样频率
5    f, Pxx_den = welch(data['vibration'], fs, nperseg=1024)
6    features = {
7        'mean': data['vibration'].mean(),
8        'std': data['vibration'].std(),
9        'max': data['vibration'].max(),
10        'min': data['vibration'].min(),
11        'psd_mean': Pxx_den.mean(),
12        'psd_std': Pxx_den.std(),
13        'psd_max': Pxx_den.max(),
14        'psd_min': Pxx_den.min()
15    }
16    return features
17
18# 示例
19features = extract_features(data[0])
20print(features)
脚本4: 训练模型
1import tensorflow as tf
2from sklearn.model_selection import train_test_split
3from sklearn.preprocessing import StandardScaler
4
5def prepare_data(data, labels):
6    X = []
7    y = []
8
9    for d, l in zip(data, labels):
10        features = extract_features(d)
11        X.append(list(features.values()))
12        y.append(l['fault_type'][0])
13
14    X = np.array(X)
15    y = np.array(y)
16
17    scaler = StandardScaler()
18    X = scaler.fit_transform(X)
19
20    return X, y
21
22def build_model(input_shape, num_classes):
23    model = tf.keras.Sequential([
24        tf.keras.layers.Dense(64, activation='relu', input_shape=input_shape),
25        tf.keras.layers.Dropout(0.2),
26        tf.keras.layers.Dense(32, activation='relu'),
27        tf.keras.layers.Dropout(0.2),
28        tf.keras.layers.Dense(num_classes, activation='softmax')
29    ])
30
31    model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])
32    return model
33
34def train_model(X, y):
35    X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
36
37    num_classes = len(np.unique(y))
38    input_shape = (X_train.shape[1],)
39
40    model = build_model(input_shape, num_classes)
41    history = model.fit(X_train, y_train, epochs=50, batch_size=32, validation_split=0.2)
42
43    return model, history
44
45# 示例
46X, y = prepare_data(data, labels)
47model, history = train_model(X, y)
脚本5: 评估模型
1import matplotlib.pyplot as plt
2
3def evaluate_model(model, X_test, y_test):
4    loss, accuracy = model.evaluate(X_test, y_test)
5    print(f'Test Loss: {loss:.4f}')
6    print(f'Test Accuracy: {accuracy:.4f}')
7
8    y_pred = model.predict(X_test)
9    y_pred_classes = np.argmax(y_pred, axis=1)
10
11    from sklearn.metrics import confusion_matrix, classification_report
12    cm = confusion_matrix(y_test, y_pred_classes)
13    cr = classification_report(y_test, y_pred_classes)
14
15    print('Confusion Matrix:')
16    print(cm)
17    print('Classification Report:')
18    print(cr)
19
20    return cm, cr
21
22# 示例
23X, y = prepare_data(data, labels)
24X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
25cm, cr = evaluate_model(model, X_test, y_test)

改进方向

如果您已经使用上述方法对该数据集进行了训练,并且认为还有改进空间,以下是一些可能的改进方向:

  1. 数据增强

    • 进一步增加数据增强策略,例如添加噪声、改变采样频率、插值等,以提高模型的泛化能力。
    • 使用混合增强技术,如MixUp、CutMix等,以增加数据多样性。
  2. 特征工程

    • 尝试更多的特征提取方法,例如小波变换、傅里叶变换、时频分析等,以提取更丰富的特征。
    • 结合领域知识,设计更具针对性的特征。
  3. 模型优化

    • 调整模型超参数,例如学习率、批量大小、优化器等,以找到最佳配置。
    • 尝试使用不同的网络架构,例如LSTM、GRU、CNN等,以提高模型性能。
    • 引入注意力机制,如SENet、CBAM等,以增强模型对关键区域的关注。
  4. 损失函数

    • 尝试使用不同的损失函数,例如Focal Loss、Dice Loss、IoU Loss等,以改善模型的收敛性能。
    • 结合多种损失函数,例如分类损失和回归损失的组合,以平衡不同类型的任务。
  5. 后处理

    • 使用非极大值抑制(NMS)的改进版本,如Soft-NMS、DIoU-NMS等,以提高检测结果的质量。
    • 引入边界框回归的改进方法,如GIoU、CIoU等,以提高定位精度。
  6. 迁移学习

    • 使用预训练模型进行微调,利用大规模数据集(如COCO、ImageNet)上的预训练权重,加快收敛速度并提高性能。
  7. 集成学习

    • 使用多个模型进行集成学习,通过投票或加权平均的方式提高最终的检测效果。

 

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【QT】系统-下

欢迎来到Cefler的博客😁 🕌博客主页:折纸花满衣 🏠个人专栏:QT 目录 👉🏻QTheadrun() 👉🏻QMutex👉🏻QWaitCondition👉🏻Q…

C/C++内存管理 ——

目录 五、C/C内存管理 1、C/C内存分布 2、C语言中动态内存管理方式:malloc/calloc/realloc/free 3、C内存管理方式 1.new/delete操作内置类型 2.new和delete操作自定义类型 4、operator new与operator delete函数 5、new和delete的实现原理 1.内置类…

分布式事务详细笔记:什么是分布式事务--Seata--XA模式--AT模式

目录 1.分布式事务 1.1.什么是分布式事务 1.2.认识Seata 1.3.部署TC服务 1.3.1.准备数据库表 1.3.2.准备配置文件 1.3.3.Docker部署 1.4.微服务集成Seata 1.4.1.引入依赖 1.4.2.改造配置 1.4.3.添加数据库表 1.5.XA模式 1.5.1.两阶段提交 1.5.2.Seata的XA模型 1…

网络原理 HTTP与HTTPS协议

博主主页: 码农派大星. 数据结构专栏:Java数据结构 数据库专栏:MySQL数据库 JavaEE专栏:JavaEE 关注博主带你了解更多计算机网络知识 目录 1.HTTP概念 2.HTTP报文格式 3.HTTP请求 1.首行 1.1URL 1.2 GET⽅法 1.3 POST⽅法 1.4 其他⽅法 2.请求头(head…

专业学习|动态规划(概念、模型特征、解题步骤及例题)

一、引言 (一)从斐波那契数列引入自底向上算法 (1)知识讲解 (2)matlap实现递归 (3)带有备忘录的遗传算法 (4)matlap实现带有备忘录的递归算法 “&#xff1…

使用库函数点亮一个LED灯

软件设计 STM32Gpio的介绍 如果想让LED0点亮,那么R12就要是高电平,LED0就要是低电平,也就是PF9就是低电平 F407系统主频要工作在168MHZ F103的话是工作在72mhz F429的话就180MHZ 接着我们就要使能Gpio的时钟,使能之后对GPIO相关…

c++----io流

提示:以下 是本篇文章正文内容,下面案例可供参考 1.标准io流 (1)数据的循环输入 对于内置类型:cin和cout直接使用,c已经重载了 (2)对于自定义类型: 需要我们自己对类型进行重载 2.文件io流 ifstream ifile(只输入…

着色器 简介

着色器(Shader)是运行在 GPU 上的小程序。这些小程序为图形渲染管线的某个特定部分而运行。从基本意义上来说,着色器只是一种把输入转化为输出的程序。着色器也是一种非常独立的程序,因为它们之间不能相互通信;它们之间…

【洛谷】P10417 [蓝桥杯 2023 国 A] 第 K 小的和 的题解

【洛谷】P10417 [蓝桥杯 2023 国 A] 第 K 小的和 的题解 题目传送门 题解 CSP-S1 补全程序,致敬全 A 的答案,和神奇的预言家。 写一下这篇的题解说不定能加 CSP 2024 的 RP 首先看到 k k k 这么大的一个常数,就想到了二分。然后写一个判…

中序遍历二叉树全过程图解

文章目录 中序遍历图解总结拓展:回归与回溯 中序遍历图解 首先看下中序遍历的代码,其接受一个根结点root作为参数,判断根节点是否为nil,不为nil则先递归遍历左子树。 func traversal(root *TreeNode,res *[]int) {if root nil …

ArcGIS核密度分析(栅格处理范围与掩膜分析)

多时候我们在进行栅格分析的时候,处理的结果不能完全覆盖我们需要的范围。 比如,我们对点数据进行密度分析、栅格插值等。比如下图 为什么会如此呢? 那是因为在做这个密度分析或者栅格插值的时候,默认是以点的四至范围来生成的&am…

国内可以使用的ChatGPT服务【9月持续更新】

首先基础知识还是要介绍得~ 一、模型知识: GPT-4o:最新的版本模型,支持视觉等多模态,OpenAI 文档中已经更新了 GPT-4o 的介绍:128k 上下文,训练截止 2023 年 10 月(作为对比,GPT-4…

探索 Web Speech API:实现浏览器语音识别与合成

引言 Web Speech API 是一项由 W3C 开发的 Web 标准,为开发者提供了在 Web 应用程序中实现语音识别和语音合成的能力。通过 Web Speech API,我们可以让网页与用户进行语音交互,实现更加智能化和便捷的用户体验。本文将深入探讨 Web Speech A…

第十二周:机器学习

目录 摘要 Abstract 一、非监督学习 二、word embedding 三、transformer 1、应用 2、encoder 3、decoder 四、各类attention 1、最常见的类别 2、其余种类 3、小结 总结 摘要 本周继续学习机器学习的相关课程,首先了解了监督学习和非监督学习的概…

Flink Task 日志文件隔离

Flink Task 日志文件隔离 任务在启动时会先通过 MdcUtils 启动一个 slf4j 的 MDC 环境,然后将 jobId 添加到 slf4j 的 MDC 容器中,随后任务输出的日志都将附带 joid。 MDC 介绍如下: MDC ( Mapped Diagnostic Contexts ),它是一个…

文件操作和InputStream,OutputStream的用法

“他越拧巴,我越喜欢!” 文件: 此处谈到的文件,本身有很多的含义。 狭义上的文件,特指 硬盘上的文件(以及保存文件的目录)。 广义上的文件,计算机上的很多硬件设备,软…

idea2021git从dev分支合并到主分支master

1、新建分支 新建一个名称为dev的分支,切换到该分支下面,输入新内容 提交代码到dev分支的仓库 2、切换分支 切换到主分支,因为刚刚提交的分支在dev环境,所以master是没有 3、合并分支 点击push,将dev里面的代码合并到…

【Web】御网杯信息安全大赛2024 wp(全)

目录 input_data admin flask 如此多的FLAG 一夜醒来之全国CTF水平提升1000倍😋 input_data 访问./.svn后随便翻一翻拿到flag admin dirsearch扫出来 访问./error看出来是java框架 测出来是/admin;/路由打Spring View Manipulation(Java)的SSTI https:/…

C++容器list底层迭代器的实现逻辑~list相关函数模拟实现

目录 1.两个基本的结构体搭建 2.实现push_back函数 3.关于list现状的分析(对于我们如何实现这个迭代器很重要) 3.1和string,vector的比较 3.2对于list的分析 3.3总结 4.迭代器类的封装 5.list容器里面其他函数的实现 6.个人总结 7.代码附录 1.两…

Selenium with Python学习笔记整理(网课+网站持续更新)

本篇是根据学习网站和网课结合自己做的学习笔记,后续会一边学习一边补齐和整理笔记 官方学习网站在这获取: https://selenium-python.readthedocs.io/getting-started.html#simple-usage WEB UI自动化环境配置 (推荐靠谱的博客文章来进行环境配置,具…