基于多传感器数据和周期性采样的滚动轴承故障诊断方法(Python)

代码较为简单,算法结构如下:

from scipy.io import loadmat
import numpy as np
import os
from sklearn import preprocessing  # 0-1编码
import torch
from torch.utils import data as da# 用训练集标准差标准化训练集以及测试集
def scalar_stand(data_x):scalar = preprocessing.StandardScaler().fit(data_x)data_x = scalar.transform(data_x)return data_x# one-hot编码
# def one_hot(data_y):
#     data_y = np.array(data_y).reshape([-1, 1])
#     encoder = preprocessing.OneHotEncoder()
#     encoder.fit(data_y)
#     data_y = encoder.transform(data_y).toarray()
#     data_y = np.asarray(data_y, dtype=np.int32)
#     return data_y# 构建文件读取函数capture,返回原始数据和标签数据
def capture(original_path):  # 读取mat文件,返回一个属性的字典filenames = os.listdir(original_path)  # 得到负载文件夹下面的10个文件名Data_DE = {}Data_FE = {}for i in filenames:  # 遍历10个文件数据# 文件路径file_path = os.path.join(original_path, i)  # 选定一个数据文件的路径file = loadmat(file_path)  # 字典file_keys = file.keys()  # 字典的所有key值for key in file_keys:if 'DE' in key:  # 只获取DEData_DE[i] = file[key].ravel()  # 将数据拉成一维数组if 'FE' in key:  # 只获取DEData_FE[i] = file[key].ravel()  # 将数据拉成一维数组return Data_DE, Data_FE# 划分训练样点集和测试样点集
def spilt(data, rate):  # [[N1],[N2],...,[N10]]keys = data.keys()  # 10个文件名tra_data = []te_data = []val_data = []for i in keys:  # 遍历所有文件夹slice_data = data[i]  # 选取1个文件中的数据# slice_data = scalar_stand(slice_data)all_length = len(slice_data)  # 文件中的数据长度# print('数据总数为', all_length)tra_data.append(slice_data[0:int(all_length * rate[0])])# print("训练样本点数", len(tra_data))val_data.append((slice_data[int(all_length * rate[0]):int(all_length * (rate[0]+rate[1]))]))te_data.append(slice_data[int(all_length * (rate[0]+rate[1])):])# print("测试样本点数", len(te_data))return tra_data, val_data, te_datadef sampling(data_DE, data_FE, step, sample_len):sample_DE = []sample_FE = []label = []lab = 0for i in range(len(data_DE)):  # 遍历10个文件all_length = len(data_DE[i])  # 文件中的数据长度# print('采样的训练数据总数为', all_length)number_sample = int((all_length - sample_len)/step + 1)  # 样本数# print("number=", number_sample)for j in range(number_sample):  # 逐个采样sample_DE.append(data_DE[i][j * step: j * step + sample_len])sample_FE.append(data_FE[i][j * step: j * step + sample_len])label.append(lab)j += 1lab = lab + 1sample = np.stack((np.array(sample_DE), np.array(sample_FE)), axis=2)return sample, labeldef get_data(path, rate, step, sample_len):data_DE, data_FE = capture(path)  # 读取数据train_data_DE, val_data_DE, test_data_DE = spilt(data_DE, rate)  # 列表[N1,N2,N10]train_data_FE, val_data_FE, test_data_FE = spilt(data_FE, rate)x_train, y_train = sampling(train_data_DE, train_data_FE, step, sample_len)# y_train = F.one_hot(torch.Tensor(y_train).long(), num_classes=10)x_validate, y_validate = sampling(val_data_DE, val_data_FE, step, sample_len)x_test, y_test = sampling(test_data_DE, test_data_FE, step, sample_len)return x_train, y_train, x_validate, y_validate, x_test, y_testclass Dataset(da.Dataset):def __init__(self, X, y):self.Data = Xself.Label = ydef __getitem__(self, index):txt = self.Data[index]label = self.Label[index]return txt, labeldef __len__(self):return len(self.Data)if __name__ == "__main__":path = r'data\5HP'rate = [0.7, 0.15, 0.15]step = 210sample_len = 420x_train, y_train, x_validate, y_validate, x_test, y_test = get_data(path, rate, step, sample_len)print(x_train.shape)  # (5267, 420, 2)print(x_validate.shape) # (1117, 420, 2)print(x_test.shape)  # (1117, 420, 2)# sample = tf.data.Dataset.from_tensor_slices((x_train, y_train))   # 按照样本数进行切片得到每一片的表述(400,2)# sample = sample.shuffle(1000).batch(10)  # 打乱分批量(10,400,2)# sample_test = tf.data.Dataset.from_tensor_slices((x_test, y_test))# sample_test = sample_test.shuffle(1000).batch(10)  # 打乱分批量(10,400,2)Train = Dataset(torch.from_numpy(x_train).permute(0, 2, 1), y_train)Test = Dataset(torch.from_numpy(x_test).permute(0, 2, 1), y_test)train_loader = da.DataLoader(Train, batch_size=10, shuffle=True)test_loader = da.DataLoader(Test, batch_size=10, shuffle=False)

工学博士,担任《Mechanical System and Signal Processing》《中国电机工程学报》《控制与决策》等期刊审稿专家,擅长领域:现代信号处理,机器学习,深度学习,数字孪生,时间序列分析,设备缺陷检测、设备异常检测、设备智能故障诊断与健康管理PHM等。

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

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

相关文章

【Android面试八股文】1. 你说一说Handler机制吧 2. 你知道Handler的同步屏障吗? 3. Looper一直在循环,会造成阻塞吗?为什么?

文章目录 一. 你说一说Handler机制吧二、你知道Handler的同步屏障吗?2.1 Handler消息的分类2.2 什么是同步屏障2.3 为什么要设计同步屏障2.4 同步屏障的用法 三、Looper一直在循环,会造成阻塞吗?为什么?扩展阅读 一. 你说一说Hand…

现货黄金交易多少克一手?国内外情况大不同

如果大家想参与国际市场上的现货黄金交易,就应该从它交易细则的入手,先彻底认识这个品种,因为它是来自欧美市场的投资方式,所以无论是从合约的计的单位,计价的货币,交易的具体时间,以及买卖过程…

AI大模型在健康睡眠监测中的深度融合与实践案例

文章目录 1. 应用方案2. 技术实现2.1 数据采集与预处理2.2 构建与训练模型2.3 个性化建议生成 3. 优化策略4. 应用示例:多模态数据融合与实时监测4.1 数据采集4.2 实时监测与反馈 5. 深入分析模型选择和优化5.1 LSTM模型的优势和优化策略5.2 CNN模型的优势和优化策略…

【安装笔记-20240612-Linux-内网穿透服务之cpolar极点云】

安装笔记-系列文章目录 安装笔记-20240612-Linux-内网穿透服务之 cpolar 极点云 文章目录 安装笔记-系列文章目录安装笔记-20240612-Linux-内网穿透服务之 cpolar 极点云 前言一、软件介绍名称:cpolar极点云主页官方介绍 二、安装步骤测试版本:openwrt-…

0601 模拟集成电路中的直流偏置技术

模拟集成电路中的直流偏置技术 6.1.1 BJT 电流源6.1.2 FET电流源6.1.3电流源做作有源负载![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/c5381fff64bd48a1b28ba9bee179b18f.png) 6.1.1 BJT 电流源 6.1.2 FET电流源 6.1.3电流源做作有源负载

tmega128单片机控制的智能小车设计

第1章 绪论1.1 选题背景和意义 自第一台工业机器人诞生以来,机器人的民展已经遍及机械、电子、冶金、交通、宇航、国防等领域。近年来机器人的智能水平不断提高,并且迅速地改变着人们的生活方式。人们在不断探讨、改造、认识自然的过程中,制造能替代人工作的机器一…

2.线性神经网络

目录 1.线性回归一个简化模型线性模型:可以看做是单层神经网络衡量预估质量训练数据参数学习显示解总结 2.基础优化方法小批量随机梯度下降总结 3.Softmax回归:其实是一个分类问题回归VS分类从回归到多类分类---均方损失Softmax和交叉熵损失 4.损失函数L…

阿里云香港服务器怎么样?

大家都知道阿里云是国内最受欢迎的云服务商,那么阿里云香港服务器究竟怎么样呢?和硅云的香港服务器用于做外贸网站等业务相比各有哪些优缺点呢? 阿里云和硅云在香港云服务领域有着广泛的应用和良好的口碑。然而,它们各自的特点和…

借助大语言模型快速学习金仓数据库 KES

基础概念 KES 人大金仓数据库管理系统 KingbaseES(KES) 是由 北京人大金仓信息技术股份有限公司 (以下简称“人大金仓”)自主研发的面向全行业、全客户关键应用的企业级大型通用数据库管理系统。产品融合了人大金仓在数据库领域几十年的产品研发和企业级…

SQL中distinct去重关键字的使用和count统计组合的使用

文章目录 SQL中distinct的使用1、distinct作用于单列2、distinct作用于多列3、 count()、distinct组合使用conut扩展知识 SQL中distinct的使用 1、distinct作用于单列 语法: select distinct 列名 from 表; distinct必须在列的前面,否则直…

Unity HoloLens2 MRTK 空间锚点 基础教程

Unity HoloLens2 MRTK 空间锚点 基础教程 Unity HoloLens2 空间锚点MRTK 空间锚点 准备Unity 工程创建设置切换 UWP 平台UWP 平台设置 下载并安装混合现实功能工具导入混合现实工具包和 OpenXR 包 Unity 编辑器 UWP 设置Unity 2019.4.40 设置Unity 2022.3.0 设置Unity 2022.3.0…

嵌入式仪器模块:音频综测仪和自动化测试软件

• 24 位分辨率 • 192 KHz 采样率 • 支持多种模拟/数字音频信号的输入/输出 应用场景 • 音频信号分析:幅值、频率、占空比、THD、THDN 等指标 • 模拟音频测试:耳机、麦克风、扬声器测试,串扰测试 • 数字音频测试:平板电…

天锐绿盾 | 无感知加密软件、透明加密系统、数据防泄漏软件

摘要:文件加密软件,包含禁止非授权的文件泄密和抄袭复制解决方案即使被复制泄密都是自动加密无法阅读,透明加密,反复制软件,内网监控,文件加密,网络安全方案,透明文件加密,加密文件,图纸加密,知识产权保护,加密数据; 通过绿盾信息安全管理软件,系统在不改…

项目五串行通信系统 任务5-3温度信息上传

任务描述:DS18B20测量温度,单片机采集温度数据转换显示代码,并通过串行口发送到上位机显示。 底层文件: /********************************************* ds18b20底层函数:能完成一次温度数据读取 ***************************…

docker 拉取不到镜像的问题:拉取超时

error pulling image configuration: download failed after attempts6: dial tcp 31.13.94.10:443: i/o timeout 首先设置国内的镜像源&#xff1a;复制下面直接执行 sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-EOF{"registry-mirrors"…

NSS题目练习9

[极客大挑战 2020]welcome 界面打开后一片空白&#xff0c;查看题目描述&#xff0c;翻译过来是 1.除了GET请求方法&#xff0c;还有一种常见的请求方法… 2.学习一些关于sha1和array的知识。 3.更仔细地检查phpinfo&#xff0c;你会发现标志在哪里。 补充&#xff1a; sh…

MicroPython 环境下使用 ESP32 连接百度 AI 大模型

前言 在物联网领域&#xff0c;ESP32 由于其丰富的功能和低功耗性能成为了一种流行的选择。结合 MicroPython&#xff0c;它为开发者提供了一个高效的开发环量&#xff0c;让 Python 程序员也能轻松介入到嵌入式系统和 IoT 应用的开发之中。本文将介绍如何利用这些技术&#x…

基于redis的分布式锁

一、redis分布式锁基本信息 1.详细讲解&#xff1a; Redis 分布式锁是一种用于控制分布式系统中多个进程对共享资源的并发访问的机制。通过 Redis 的原子操作和过期时间功能&#xff0c;可以实现一个简单而有效的分布式锁。接下来&#xff0c;我们将详细介绍其工作原理、基本…

引入tinyMCE富文本框在vue3中的使用

实现效果&#xff1a; 官网地址&#xff1a;TinyMCE 7 Documentation | TinyMCE Documentation 1.下载依赖&#xff08;我使用的版本是5.0 目前最新版本到7了&#xff09; pnpm/npm install tinymce5.0.0 -S pnpm/npm install tinymce/tinymce-vue -S 2.在public文件夹下…

模拟电子之电子管

如果要实现一个放大器的功能&#xff0c;需要一个固定的放大倍数&#xff08;Gain&#xff09;&#xff0c;这也就是说输出信号应该是跟随输入信号变化而变化&#xff0c;换句话说输出信号应该要受到输入信号的控制。 在电子学中使用的最多的两个物理量就是电压和电流&#xf…