深度学习故障诊断实战 | 数据预处理之基于滑动窗的数据样本增强

news/2024/4/28 18:19:18/文章来源:https://blog.csdn.net/m0_47410750/article/details/137108780

前言

本期给大家分享介绍如何基于滑动窗方法进行数据样本增强

背景

深度学习模型训练需要大量的样本。在故障诊断领域,每个类别大都会达到300个样本。但是在实际公开数据集中,以CWRU数据集为例,每个类别只有24组数据,这明显是不够的。
下图以外圈为例,只有24组数据:
在这里插入图片描述
因此需要想办法扩充样本。目前大多数是通过滑动窗方法来扩充样本。例如1组10s长的数据,我每隔0.1s划分1个数据,就可以得到100个子样本。

滑动窗方法介绍

在这里插入图片描述
为增加样本数量,采用了基于滑动窗方法的数据增强方法。数据增强示意图如上图所示,假设一个一维原始时域信号的总样本点数为 L L L,用长度为 L t L_t Lt 的窗口框住的样本为第 1 个子样本,每生成一个子样本后,窗口向前移动 L s L_s Ls 个样本点数长度并框住第 2 个子样本,依次进行生成 n s n_s ns 个子样本。 L s L_s Ls 其计算公式如下:
L s = ⌊ L − L t n s ⌋ L_{\mathrm{s}}=\left\lfloor\frac{L-L_{\mathrm{t}}}{n_{\mathrm{s}}}\right\rfloor Ls=nsLLt

式中 ⌊ ⌋ \left\lfloor\right\rfloor 是向上取整符号。
窗口长度 L t L_t Lt 选择原则:至少包含1个旋转周期长度,4-5个周期为佳。

代码示例

这里以CWRU"1750_12k_0.021-OuterRace3.mat"数据为例。建议使用jupyter notebook

##========导入包========##
import os
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from matplotlib import rcParamsconfig = {"font.family": 'serif', # 衬线字体"font.size": 14, # 相当于小四大小"font.serif": ['SimSun'], # 宋体"mathtext.fontset": 'stix', # matplotlib渲染数学字体时使用的字体,和Times New Roman差别不大'axes.unicode_minus': False # 处理负号,即-号
}
rcParams.update(config)
##========读取数据========##
def data_read(file_path):""":fun: 读取cwru mat格式数据:param file_path: .mat文件路径  eg: r'D:.../01_示例数据/1750_12k_0.021-OuterRace3.mat':return accl_data: 读取到的加速度数据"""import scipy.io as sciodata = scio.loadmat(file_path)  # 加载mat数据data_key_list = list(data.keys())  # mat文件为字典类型,将key变为list类型accl_key = data_key_list[3]  # mat文件为字典类型,其加速度列在key_list的第4个accl_data = data[accl_key].flatten()  # 获取加速度信号,并展成1维数据accl_data = (accl_data-np.mean(accl_data))/np.std(accl_data) #Z-score标准化数据集return accl_data
##========绘制时域信号图========##
def plt_time_domain(arr, fs=12000, ylabel='Amp(mg)', title='原始数据时域图', img_save_path=None, vline=None, hline=None, xlim=None):""":fun: 绘制时域图模板:param arr: 输入一维数组数据:param fs: 采样频率:param ylabel: y轴标签:param title: 图标题:return: None"""import matplotlib.pyplot as pltplt.rcParams['font.sans-serif'] = ['SimHei']  # 显示中文plt.rcParams['axes.unicode_minus'] = False  # 显示负号font = {'family': 'Times New Roman', 'size': '20', 'color': '0.5', 'weight': 'bold'}plt.figure(figsize=(12,4))length = len(arr)t = np.linspace(0, length/fs, length)plt.plot(t, arr, c='g')plt.xlabel('t(s)')plt.ylabel(ylabel)plt.title(title)if vline:plt.vlines(x=vline, ymin=np.min(arr), ymax=np.max(arr), linestyle='--', colors='r')if hline:plt.hlines(y=hline, xmin=np.min(t), xmax=np.max(t), linestyle=':', colors='y')if xlim: # 图片横坐标是否设置xlimplt.xlim(0, xlim)  #===保存图片====#if img_save_path:plt.savefig(img_save_path, dpi=500, bbox_inches = 'tight')plt.show()
##========绘制时域信号图========##
file_path = r'D:/22-学习记录/01_自己学习积累/02_基于滑动窗方法划分数据集/01_示例数据/1750_12k_0.021-OuterRace3.mat'   # cwru数据.mat文件路径
fs = 12000    # 采样率12000Hz
fr = 1750     # 转速1750rpm
num_per_ratation = 60/1750 * fs
accl_data = data_read(file_path)   # 读取加速度数据
plt_time_domain(accl_data)         # 绘制时域图
print('数据点个数为:', len(accl_data))
print('每转1圈包含点数:', num_per_ratation)

输出结果:
在这里插入图片描述

数据点个数为: 122281
每转1圈包含点数: 411.42857142857144
##========通过滑动窗口方法增强样本========##
def data_spilt(data, num_2_generate=20, each_subdata_length=1024):""":Desription:  将数据分割成n个小块。输入数据data采样点数是400000,分成100个子样本数据,每个子样本数据就是4000个数据点:param data:  要输入的数据:param num_2_generate:  要生成的子样本数量:param each_subdata_length: 每个子样本长度:return spilt_datalist: 分割好的数据,类型为2维list"""data = list(data)total_length = len(data)start_num = 0   # 子样本起始值end_num = each_subdata_length  # 子样本终止值step_length = int((total_length - each_subdata_length) / (num_2_generate - 1))  # step_length: 向前移动长度i = 1spilt_datalist = []while i <= num_2_generate:each_data = data[start_num: end_num]each_data = (each_data-np.mean(each_data))/(np.std(each_data)) # 做Z-score归一化spilt_datalist.append(each_data)start_num = 0 + i * step_length;end_num = each_subdata_length + i * step_lengthi = i + 1spilt_data_arr = np.array(spilt_datalist)return spilt_data_arr
spilt_data_arr = data_spilt(data=accl_data, each_subdata_length=1024, num_2_generate=50)
print(spilt_data_arr)
print('划分数据样本的维度为:',spilt_data_arr.shape)
# 输出结果
[[-0.53912541  0.1241063   0.62763801 ... -0.31089743  0.15986003-0.70478437][-0.76625967 -0.90941739 -0.45229575 ... -0.89897241 -0.27165898-0.02220819][-0.95815651 -0.92246646 -1.75344986 ...  1.59903578  0.906053920.08934654]...[-0.99252616 -0.44633003  0.72570346 ... -0.7488478   2.352999450.07193225][ 0.89678044  0.56380553  1.10132216 ... -1.45485483 -0.63490413-0.65809345][-0.40335141 -0.75221082 -0.90351645 ... -3.03949526  0.597549655.42676878]]
划分数据样本的维度为: (50, 1024)

大功告成,1个数据经过滑动窗方法划分得到了50个样本(每个子样本长度1024),那24个数据增大到1200个样本了。
数据集获取方法:关注《故障诊断与python学习》公众号,后台回复:CWRU

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

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

相关文章

HelpLook AI ChatBot:自定义Prompts综合指南

AI问答机器人&#xff08;AI Chatbot&#xff09;日益在各行业普及&#xff0c;但回答准确率的不足仍是其面临的痛点。用户在与AI问答机器人的互动中常发现&#xff0c;机器人难以完全理解和准确回答复杂问题。HelpLook可以通过自定义提示词&#xff08;Prompts&#xff09;和集…

【VMware Workstation】公司所有主机和虚拟机ip互通,以及虚拟机目录迁移

文章目录 1、场景2、环境3、实战3.1、所有主机和虚拟机ip互通Stage 1 : 【虚拟机】设置为桥接模式Stage 2 : 【虚拟机】设置ipStage 3 : 【路由器】ARP 静态绑定MACStage 3-1 ping 路由器 ipStage 3-2 【静态绑定】虚拟机查看mac地址Stage 3-3 【静态绑定】路由器ARP 静态绑定 …

eclipse自动跳到console 解决办法

eclipse启动服务后&#xff0c;想看一些properties信息或者别的&#xff0c;但老是自动跳转到console页面&#xff0c;下面是解决办法&#xff1a; Eclipse中按照如下顺序找到设置菜单的位置&#xff1a; Window — Preferences — Run/Debug — Console 找到以下两项&#xf…

阿里云CentOS7安装ZooKeeper单机模式

前提条件 阿里云CentOS7安装好jdk&#xff0c;可参 hadoop安装 的jdk安装部分 下载 [hadoopnode1 ~]$ cd softinstall [hadoopnode1 softinstall]$ wget https://archive.apache.org/dist/zookeeper/zookeeper-3.7.1/apache-zookeeper-3.7.1-bin.tar.gz 解压 [hadoopnode1 …

【论文阅读】FlipCAM:高分辨率遥感影像弱监督建筑物提取的特征级翻转增强方法

【论文阅读】FlipCAM&#xff1a;高分辨率遥感影像弱监督建筑物提取的特征级翻转增强方法 文章目录 【论文阅读】FlipCAM&#xff1a;高分辨率遥感影像弱监督建筑物提取的特征级翻转增强方法一、介绍二、方法2.1 准备2.2 一致性的架构2.3 SAM模块2.4 建筑提取模式 三、实验结果…

网络工程师实验命令(华为数通HCIA)

VRP系统的基本操作 dis version #查看设备版本信息 sys #进入系统视图 system-name R1 #改设备名字为R1进入接口配置IP地址 int g0/0/0 ip address 192.168.1.1 255.255.255.0 #配置接口地址为192.168.1.1/255.255.255.0 ip address 192.168.1.2 24 sub #此…

【C语言】预处理常见知识详解(宏详解)

文章目录 1、预定义符号2、define2.1 define 定义常量2.2 define 定义宏 3、#和##3.1 **#**3.2 **##** 4、条件编译&#xff08;开关&#xff09; 1、预定义符号 在C语言中内置了一些预定义符号&#xff0c;可以直接使用&#xff0c;这些符号实在预处理期间处理的&#xff0c;…

云蜜罐技术(德迅猎鹰)诞生

数字化程度高且高价值信息密集的行业&#xff0c;如金融、能源、互联网、政府、教育、医疗、军工等行业&#xff0c;面对日益规模化、专业化的网络攻击&#xff0c;渐渐不再满足于一味的防守加固。除了巩固防线之外&#xff0c;他们愈发看重主动出击、感知更大范围内的攻击&…

uniapp调用腾讯图形验证码,兼容h5、APP(安卓)

因项目要兼容安卓APP&#xff0c;所以使用webview做成了一个组件 新建hybrid文件夹&#xff0c;创建要在webview引入的html文件 <!DOCTYPE html> <html><head><meta charset"utf-8" /><meta name"viewport"content"widt…

Jenkins拉取github项目相关问题

1.私有仓库问题 1.1如果你的仓库是私有的&#xff0c;21年起github就不支持账号密码的方式拉取代码了 那么就需要在github上面创建一个token (classic) 然后在Jenkins代码设置那里 然后应该就可以顺利打包了。 2.找不到pom&#xff08;多了一层文件夹&#xff09;问题 解…

Svg Flow Editor 原生svg流程图编辑器(四)

系列文章 Svg Flow Editor 原生svg流程图编辑器&#xff08;一&#xff09; Svg Flow Editor 原生svg流程图编辑器&#xff08;二&#xff09; Svg Flow Editor 原生svg流程图编辑器&#xff08;三&#xff09; Svg Flow Editor 原生svg流程图编辑器&#xff08;四&#xf…

边缘计算与云计算总结

一. EdgeGallery 简介 MEC场景下的EdgeGallery是让资源边缘化&#xff0c;实时完成移动网络边缘的业务处理&#xff0c;MEC场景下的EdgeGallery让开发者能更便捷地使用 5G 网络能力&#xff0c;让5G能力在边缘触手可及。 EdgeGallery是由华为、信通院、中国移动、中国联通、…

TheMoon 恶意软件短时间感染 6,000 台华硕路由器以获取代理服务

文章目录 针对华硕路由器Faceless代理服务预防措施 一种名为"TheMoon"的新变种恶意软件僵尸网络已经被发现正在侵入全球88个国家数千台过时的小型办公室与家庭办公室(SOHO)路由器以及物联网设备。 "TheMoon"与“Faceless”代理服务有关联&#xff0c;该服务…

Linux内核之最核心数据结构之一:struct file(三十)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…

ubuntu编译OpenCV and seetaFace2

opencv opencv-4.5.2 opencv_contrib-4.5.2 SeetaFace2 SeetaFace2-master https://github.com/seetafaceengine 指定安装目录&#xff0c;和OpenCV放一个目录下了 安装前 安装 安装后 Qt安装 Windows下 Linux下 报错1 原因&#xff1a; 报错…

Linux指令大全,第二篇(超详细版)

目录 9.1 链接文件的命令 10.1. 用户和权限 11.1 文件压缩和解压命令 12.1 文件操作命令补充 13.1 Vim编辑器的使用 14.1 Linux开关机命令 15.1 Shell Linux 程序设计&#xff08;未完持续更新~&#xff09; 16.1 以上运行效果图如下 9.1 链接文件的命令 9.1.1 …

ChatGPT与传统搜索引擎的区别:智能对话与关键词匹配的差异

引言 随着互联网的快速发展&#xff0c;信息的获取变得比以往任何时候都更加便捷。在数字化时代&#xff0c;人们对于获取准确、及时信息的需求愈发迫切。传统搜索引擎通过关键词匹配的方式为用户提供了大量的信息&#xff0c;然而&#xff0c;这种机械式的检索方式有时候并不…

鱼眼相机的测距流程及误差分析[像素坐标系到空间一点以及测距和误差分析]

由于最近在整理单目测距的内容&#xff0c;顺手也总结下鱼眼相机的测距流程和误差分析&#xff0c;如果有错误&#xff0c;还请不吝赐教。 参考链接: 鱼眼镜头的成像原理到畸变矫正&#xff08;完整版&#xff09; 相机模型总结&#xff08;针孔、鱼眼、全景&#xff09; 三维…

机器人是怎么计时的(通用定时器 - 时基单元)

目录 一&#xff0c;引言 二&#xff0c;机器人的“大脑” 三&#xff0c;时基单元介绍 1&#xff0c;定时器框图 2&#xff0c;时基单元 &#xff08;1&#xff09;预分频器 &#xff08;2&#xff09;CNT计数器 &#xff08;3&#xff09;自动重装载寄存器 四&#…

智慧管道物联网远程监控解决方案

智慧管道物联网远程监控解决方案 智慧管道物联网远程监控解决方案是近年来在智能化城市建设和工业4.0背景下&#xff0c;针对各类管道网络进行高效、安全、精准管理的前沿科技应用。它融合了物联网技术、大数据分析、云计算以及人工智能等多种先进技术手段&#xff0c;实现对管…