当前位置: 首页 > article >正文

别再手动处理.mat文件了!用Python+TensorFlow 1.x搞定西储大学轴承数据预处理(附完整代码)

工业设备故障诊断实战Python高效处理西储大学轴承数据集轴承故障诊断是工业设备预测性维护的核心环节而西储大学轴承数据集作为该领域的基准数据集常被用于验证各类诊断算法。但许多工程师在初次接触这个数据集时往往会被.mat格式的文件结构和复杂的数据维度所困扰。本文将分享一套完整的Python数据处理流程从原始振动信号到可直接输入神经网络的标准化数据帮你避开数据处理中的常见陷阱。1. 西储大学数据集深度解析西储大学轴承数据集包含多种故障类型和负载条件下的振动信号这些数据以.mat格式存储每个文件包含驱动端(DE)和风扇端(FE)的加速度计读数。理解数据结构是高效处理的第一步数据层级结构每个.mat文件实际上是一个字典关键键通常包含DE_time、FE_time等采样特性数据采样率为12kHz每个文件通常包含约120,000个数据点故障类型编码文件名中包含故障直径信息(如0.007英寸)和位置信息(内圈、外圈等)import scipy.io as sio import numpy as np # 示例查看.mat文件结构 mat_data sio.loadmat(97.mat) print(mat_data.keys()) # 输出dict_keys([__header__, __version__, __globals__, X097_DE_time])注意不同版本的数据集可能使用不同的键名约定建议先用此方法检查文件结构2. 自动化数据预处理流水线手动处理几十个.mat文件不仅耗时而且容易出错。我们构建了一个自动化流水线包含以下关键步骤2.1 批量加载与初步处理from pathlib import Path import pandas as pd def load_mat_files(directory): 批量加载.mat文件并提取振动信号 :param directory: 包含.mat文件的目录路径 :return: 包含所有振动信号的DataFrame data_dir Path(directory) all_data [] for mat_file in data_dir.glob(*.mat): mat_data sio.loadmat(str(mat_file)) # 提取驱动端振动信号(根据实际键名调整) vibration_data mat_data[fX{mat_file.stem}_DE_time].flatten() # 创建包含文件名和数据的字典 sample { file_name: mat_file.name, vibration_data: vibration_data, length: len(vibration_data) } all_data.append(sample) return pd.DataFrame(all_data)2.2 信号切片与数据增强原始振动信号通常过长需要切分为适合神经网络的片段参数推荐值说明片段长度1024平衡计算效率和特征保留重叠率0.5增加数据量同时保持连续性增强倍数3-5通过随机偏移生成更多样本def slice_signal(signal, window_size1024, overlap0.5): 将长信号切分为重叠窗口 :param signal: 原始振动信号 :param window_size: 窗口大小 :param overlap: 重叠比例(0-1) :return: 切分后的信号数组 step int(window_size * (1 - overlap)) segments [] for start in range(0, len(signal) - window_size, step): segment signal[start:start window_size] segments.append(segment) return np.array(segments)3. 特征工程与标准化策略原始振动信号需要经过适当处理才能发挥最大价值。我们采用以下处理流程时域特征提取均值、方差、峰峰值峭度、偏度、波形因子脉冲指标、裕度指标频域变换from scipy.fft import fft def compute_fft(signal, sampling_rate12000): n len(signal) yf fft(signal) xf np.linspace(0, sampling_rate//2, n//2) return xf, 2.0/n * np.abs(yf[0:n//2])标准化方法对比方法公式适用场景Z-score(x - μ)/σ数据分布接近正态时Min-Max(x - min)/(max - min)需要固定范围输入时Robust(x - median)/IQR存在异常值时4. 标签编码与数据集划分故障诊断本质是多分类问题合理的标签处理至关重要4.1 从文件名提取故障类型西储大学数据集的文件名编码了故障信息。例如097.mat - 正常状态105.mat - 内圈故障0.007英寸130.mat - 外圈故障0.021英寸def extract_label(filename): 从文件名提取故障类型标签 :param filename: .mat文件名 :return: 整数编码的故障类型 file_id int(filename.split(.)[0]) # 正常状态文件ID范围 if 97 file_id 99: return 0 # 内圈故障 elif 105 file_id 107: return 1 # 外圈故障 elif 118 file_id 120: return 2 # 其他故障类型... else: return -1 # 未知类型4.2 分层抽样保持类别平衡使用StratifiedShuffleSplit确保训练集和测试集保持相同故障比例from sklearn.model_selection import StratifiedShuffleSplit def split_dataset(features, labels, test_size0.2): sss StratifiedShuffleSplit(n_splits1, test_sizetest_size) for train_idx, test_idx in sss.split(features, labels): X_train, X_test features[train_idx], features[test_idx] y_train, y_test labels[train_idx], labels[test_idx] return X_train, X_test, y_train, y_test5. 完整流程示例与性能优化将上述步骤整合为端到端的处理流程# 1. 加载数据 data_dir path/to/CWRU/data df load_mat_files(data_dir) # 2. 切片和增强 df[segments] df[vibration_data].apply( lambda x: slice_signal(x, window_size1024, overlap0.5) ) # 3. 提取标签 df[label] df[file_name].apply(extract_label) # 4. 准备特征和标签 X np.concatenate(df[segments].values) y np.repeat(df[label].values, [len(s) for s in df[segments]]) # 5. 数据集划分 X_train, X_test, y_train, y_test split_dataset(X, y) # 6. 标准化 scaler StandardScaler() X_train scaler.fit_transform(X_train) X_test scaler.transform(X_test) # 7. 最终调整维度以适应CNN输入 X_train X_train.reshape(-1, 1024, 1) X_test X_test.reshape(-1, 1024, 1)性能优化技巧使用多进程加速数据加载from multiprocessing import Pool内存映射大文件np.memmap处理超大数据预计算并缓存特征避免重复计算6. 与TensorFlow/Keras的无缝对接处理后的数据可直接输入深度学习模型。以下是一个简单的1D CNN示例from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Conv1D, MaxPooling1D, Flatten, Dense model Sequential([ Conv1D(64, 3, activationrelu, input_shape(1024, 1)), MaxPooling1D(2), Conv1D(128, 3, activationrelu), MaxPooling1D(2), Flatten(), Dense(128, activationrelu), Dense(num_classes, activationsoftmax) ]) model.compile(optimizeradam, losssparse_categorical_crossentropy, metrics[accuracy])提示对于更复杂的故障类型可以考虑使用ResNet或InceptionTime等先进架构在实际项目中这套预处理流程将数据处理时间从数小时缩短到几分钟同时提高了模型的准确率约15%。关键在于理解数据特性后选择合适的处理策略而非盲目套用通用方案。

相关文章:

别再手动处理.mat文件了!用Python+TensorFlow 1.x搞定西储大学轴承数据预处理(附完整代码)

工业设备故障诊断实战:Python高效处理西储大学轴承数据集 轴承故障诊断是工业设备预测性维护的核心环节,而西储大学轴承数据集作为该领域的基准数据集,常被用于验证各类诊断算法。但许多工程师在初次接触这个数据集时,往往会被.m…...

别再死记MobileNet结构了!用PyTorch手撕V1/V2/V3的深度可分离卷积(附代码对比)

从零实现MobileNet系列:深度可分离卷积的PyTorch实战解析 在移动端和嵌入式设备上部署神经网络模型时,我们常常面临计算资源有限的挑战。传统卷积神经网络如VGG、ResNet虽然性能优异,但其庞大的参数量和计算量使得它们难以在资源受限的环境中…...

Z-Image-GGUF提示词入门:‘主体+风格+光照+质量’四步法详解

Z-Image-GGUF提示词入门:‘主体风格光照质量’四步法详解 你是不是也遇到过这种情况:看到别人用AI生成的图片惊艳无比,自己上手一试,出来的却总是不尽人意?要么是画面模糊,要么是风格跑偏,要么…...

掌控系统散热:FanControl智能风扇控制完全指南

掌控系统散热:FanControl智能风扇控制完全指南 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHub_Trending/fa/FanCon…...

vLLM-v0.17.1惊艳效果:多LoRA动态切换支持千人千面模型服务

vLLM-v0.17.1惊艳效果:多LoRA动态切换支持千人千面模型服务 1. vLLM框架简介 vLLM是一个专注于大语言模型(LLM)推理和服务的高性能开源库。这个项目最初由加州大学伯克利分校的天空计算实验室开发,现在已经发展成为一个由学术界和工业界共同维护的社区…...

用 ABAP gCTS 给自定义代码留一条可回退的路

在很多 SAP ERP 转 SAP S/4HANA 的项目里,真正让团队迟迟下不了手的,往往不是代码扫描结果本身,而是删掉以后心里没底。生产系统里确实有一大批自定义对象长期没有被执行,SAP 也明确建议通过 usage data 做 scoping,用 Custom Code Migration app 识别无用代码,并在转换阶…...

Visual C++运行库终极解决方案:告别DLL缺失的完整指南

Visual C运行库终极解决方案:告别DLL缺失的完整指南 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist 还在为"应用程序无法正常启动"的弹窗而…...

ngx_set_environment

1 定义 ngx_set_environment 函数 定义在 ./nginx-1.24.0/src/core/nginx.cchar ** ngx_set_environment(ngx_cycle_t *cycle, ngx_uint_t *last) {char **p, **env;ngx_str_t *var;ngx_uint_t i, n;ngx_core_conf_t *ccf;ngx_pool_…...

抖音批量下载器:5分钟打造你的专属素材库

抖音批量下载器:5分钟打造你的专属素材库 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback support. 抖音批量…...

Xournal++ 终极指南:如何让手写笔记在高分辨率屏幕上清晰如纸 ✨

Xournal 终极指南:如何让手写笔记在高分辨率屏幕上清晰如纸 ✨ 【免费下载链接】xournalpp Xournal is a handwriting notetaking software with PDF annotation support. Written in C with GTK3, supporting Linux (e.g. Ubuntu, Debian, Arch, SUSE), macOS and …...

代码生成结果一致性验证难?深度解析LLM输出版本漂移的7类特征指纹,附开源比对工具链

第一章:智能代码生成代码版本对比 2026奇点智能技术大会(https://ml-summit.org) 随着大语言模型在软件开发流程中的深度集成,智能代码生成工具已从辅助补全演进为具备多轮上下文感知、跨文件推理与版本协同能力的工程级组件。不同版本的代码生成模型在…...

5个简单步骤:用Win10BloatRemover让你的Windows 10重获新生

5个简单步骤:用Win10BloatRemover让你的Windows 10重获新生 【免费下载链接】Win10BloatRemover Configurable CLI tool to easily and aggressively debloat and tweak Windows 10 by removing preinstalled UWP apps, services and more. Originally based on the…...

D3KeyHelper:5分钟掌握暗黑3自动化技能连点,告别手酸提升刷图效率

D3KeyHelper:5分钟掌握暗黑3自动化技能连点,告别手酸提升刷图效率 【免费下载链接】D3keyHelper D3KeyHelper是一个有图形界面,可自定义配置的暗黑3鼠标宏工具。 项目地址: https://gitcode.com/gh_mirrors/d3/D3keyHelper 还在为暗黑…...

**发散创新:过度依赖单一编程语言导致的架构风险与重构实践**在现代软件开发中,**选择一种编程语言并深度

发散创新:过度依赖单一编程语言导致的架构风险与重构实践 在现代软件开发中,选择一种编程语言并深度绑定其生态已成为许多团队的默认策略。然而,这种“技术栈锁定”现象正悄然埋下隐患——一旦该语言在特定场景下表现乏力、维护成本飙升或社区…...

**发散创新:基于Python与ROS的机器人运动控制实战解析**在现代机器人系统开发

发散创新:基于Python与ROS的机器人运动控制实战解析 在现代机器人系统开发中,运动控制是实现精准操作的核心环节。本文将以 Python ROS(Robot Operating System) 为技术栈,深入剖析如何通过编程语言完成对差速驱动机器…...

如何用imFile下载工具提升你的下载效率:开源下载工具的完整使用秘籍

如何用imFile下载工具提升你的下载效率:开源下载工具的完整使用秘籍 【免费下载链接】imfile-desktop A full-featured download manager. 项目地址: https://gitcode.com/gh_mirrors/im/imfile-desktop 还在为下载速度慢、文件管理混乱而烦恼吗?…...

手把手教你用Cadence仿真验证Charge Pump的current mismatch与deviation(以65nm PDK为例)

手把手教你用Cadence仿真验证Charge Pump的current mismatch与deviation(以65nm PDK为例) 电荷泵(Charge Pump)作为锁相环(PLL)中的关键模块,其电流匹配性能直接影响整个系统的相位噪声和杂散水…...

DS4Android:如何通过可视化学习让数据结构从抽象概念变为直观体验?

DS4Android:如何通过可视化学习让数据结构从抽象概念变为直观体验? 【免费下载链接】DS4Android 看得见的数据结构Android版---Show the Data_Structure power by Android View 项目地址: https://gitcode.com/gh_mirrors/ds/DS4Android 你是否曾…...

告别命令行恐惧:用Stegdetect GUI版一键检测图片隐写(附敏感度调优技巧)

告别命令行恐惧:用Stegdetect GUI版一键检测图片隐写(附敏感度调优技巧) 在数字取证和信息安全领域,图片隐写分析一直是个令人头疼的问题。传统方法往往需要记忆复杂的命令行参数,对新手极不友好。今天要介绍的Stegdet…...

告别点击跳转烦恼:给Zotero+Word/WPS添加文献引用超链接的两种方法

科研写作效率革命:Zotero文献引用超链接的终极解决方案 每次修改论文时,最让人抓狂的莫过于在几十页的文档中来回翻找参考文献。明明Zotero已经帮我们自动生成了完美的引用格式,却还要手动在正文和参考文献列表之间来回切换——这种低效的操作…...

JAX自动微分超快

💓 博客主页:瑕疵的CSDN主页 📝 Gitee主页:瑕疵的gitee主页 ⏩ 文章专栏:《热点资讯》 JAX自动微分:解锁AI训练的超高速引擎目录JAX自动微分:解锁AI训练的超高速引擎 引言 一、技术原理&#x…...

告别重复劳动:5分钟掌握Python剪映自动化,视频剪辑效率提升10倍!

告别重复劳动:5分钟掌握Python剪映自动化,视频剪辑效率提升10倍! 【免费下载链接】JianYingApi Third Party JianYing Api. 第三方剪映Api 项目地址: https://gitcode.com/gh_mirrors/ji/JianYingApi 你是否厌倦了每天重复同样的视频剪…...

从零构建Unity NavMesh:烘焙、代理与动态寻路实战

1. 从零开始理解Unity NavMesh 如果你玩过RPG或者策略游戏,一定对NPC自动寻路的功能不陌生。想象一下,当你在游戏中点击某个位置,角色会自动绕过障碍物走到目的地——这就是导航寻路系统的魔力。Unity内置的NavMesh系统,正是实现这…...

你的LoRA微调为什么效果差?可能是这5个参数没调对(LLaMA-Factory实战避坑)

你的LoRA微调为什么效果差?可能是这5个参数没调对(LLaMA-Factory实战避坑) 当你在LLaMA-Factory中进行LoRA微调时,是否遇到过模型表现不如预期的情况?许多开发者在使用LoRA这种高效的参数高效微调方法时,常…...

深入VS编译后台:从cl.exe到link.exe,一次C++代码的完整‘旅程’都发生了什么?

深入VS编译后台:从cl.exe到link.exe,一次C代码的完整‘旅程’都发生了什么? 当你在Visual Studio中点击"生成"按钮时,背后其实隐藏着一系列精密的工序。这就像把一块原石雕琢成精美的艺术品,需要经过多道工序…...

OFA在遥感图像分析中的应用:卫星影像智能解读

OFA在遥感图像分析中的应用:卫星影像智能解读 1. 引言 卫星影像分析一直是地理信息科学和遥感技术领域的核心课题。传统方法需要专业分析师花费数小时甚至数天时间手动解读图像,识别地表特征、建筑物分布和植被覆盖等情况。随着高分辨率卫星数据的爆炸…...

AI专著撰写新趋势:AI工具助力,快速完成20万字专著创作!

撰写学术专著是一项复杂的任务,需要在“内容的深度”和“覆盖的广度”之间找到恰当的平衡点。这也是许多研究者在创作过程中常遇到的难题。从内容深度来看,AI写专著时,核心观点必须具备足够的学术价值,既要明确“是什么”&#xf…...

PUBG-Logitech自动压枪系统深度解析与技术优化指南

PUBG-Logitech自动压枪系统深度解析与技术优化指南 【免费下载链接】PUBG-Logitech PUBG罗技鼠标宏自动识别压枪 项目地址: https://gitcode.com/gh_mirrors/pu/PUBG-Logitech PUBG-Logitech是一款基于罗技鼠标宏API与计算机视觉技术的高级游戏辅助工具,通过…...

保姆级教程:手把手搭建你的第一个ARM AHB+APB+CPU小系统(附仿真环境配置)

从零构建ARM AHBAPBCPU系统的实战指南 在数字IC设计领域,能够独立完成一个完整的SOC系统集成是工程师能力的重要分水岭。本文将带你从零开始,构建一个基于AMBA总线架构的简易SOC系统,包含AHB、APB总线和CPU核心的完整集成方案。不同于理论概述…...

5个步骤从零开始:用OBS StreamFX打造电影级直播画面

5个步骤从零开始:用OBS StreamFX打造电影级直播画面 【免费下载链接】obs-StreamFX StreamFX is a plugin for OBS Studio which adds many new effects, filters, sources, transitions and encoders! Be it 3D Transform, Blur, complex Masking, or even custom …...