news 2026/6/27 1:24:20

探索多元经验模式分解:从数据到可视化的完整实践

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
探索多元经验模式分解:从数据到可视化的完整实践

多元经验模式分解(memd)算法,是emd算法从单个变量到任意数量变量的扩展。 从Excel表格中读取,电流,温度,湿度,油温。 然后将个序列输入算法,得到分解结果并画图,每个变量的imf用不同颜色来表示。

在数据分析的世界里,多元经验模式分解(MEMD)算法是一个让人眼前一亮的工具。它不仅是经验模式分解(EMD)算法的升级版,更是一种能够同时处理多个变量的利器。本文将通过一个完整实践案例,带你了解如何运用MEMD算法对多维数据进行分解和可视化。我们选取了电流、温度、湿度和油温四个变量作为示例数据,通过代码实现数据读取、分解以及结果可视化,让你直观感受MEMD的强大功能。

数据准备:从Excel表格获取原始数据

在正式开始之前,我们需要准备一些数据。我们的数据来源于一个Excel文件,包含四个变量:电流、温度、湿度和油温。为了方便后续分析,我们需要将这些数据读取到Python环境中,并进行必要的预处理。

import pandas as pd import numpy as np # 读取Excel文件 data_df = pd.read_excel('multivariate_data.xlsx') # 提取需要变量的数据 current = data_df['Current'].values temperature = data_df['Temperature'].values humidity = data_df['Humidity'].values oil_temp = data_df['Oil_Temperature'].values # 确保数据长度一致 assert len(current) == len(temperature) == len(humidity) == len(oil_temp), "数据长度不一致"

数据预处理:标准化与降噪

为了使数据更适合进行经验模式分解,通常需要对数据进行标准化处理,以消除量纲和数量级差异带来的影响。此外,原始数据往往包含噪声,因此进行适当的降噪处理也是有必要的。

# 数据标准化 def normalize(data): return (data - data.mean()) / data.std() current_norm = normalize(current) temperature_norm = normalize(temperature) humidity_norm = normalize(humidity) oil_temp_norm = normalize(oil_temp) # 手动降噪(简单移动平均法) def smooth(data, window_size=3): return np.convolve(data, np.ones(window_size)/window_size, mode='same') current_smooth = smooth(current_norm) temperature_smooth = smooth(temperature_norm) humidity_smooth = smooth(humidity_norm) oil_temp_smooth = smooth(oil_temp_norm)

分解过程:MEMD算法的应用

经验模式分解(EMD)算法是一种将复杂信号分解为若干本征模函数(IMF)的方法,而多元经验模式分解(MEMD)则是EMD的扩展,能够同时处理多变量数据。我们使用第三方库pymcdm来实现MEMD算法。

# 安装pymcdm库 !pip install pymcdm import numpy as np from pymcdm import methods # 准备数据矩阵,各行代表不同的变量 data_matrix = np.array([current_smooth, temperature_smooth, humidity_smooth, oil_temp_smooth]) # 初始化MEMD方法 memd = methods.MEMD() # 设置参数 max_inner_iterations = 100 # 最大内层迭代次数 stop_condition = 0.0001 # 停止条件 # 执行分解 # 我们需要为每个变量单独运行MEMD,由于MEMD处理的是单变量数据, # 这里的处理方式可能需要根据具体库的实现进行调整 # 这里仅为示例代码,需根据实际情况修改 decomposed_data = [] for i in range(data_matrix.shape[0]): data = data_matrix[i, :] imfs = memd.decompose(data, max_inner_iterations=max_inner_iterations, stop_condition=stop_condition) decomposed_data.append(imfs)

结果可视化:多变量IMF的直观呈现

分解完成后,我们需要将结果以图表的形式展示出来。通过给每个变量的IMF分配不同的颜色,我们可以更清晰地观察各个变量的内在模式。

import matplotlib.pyplot as plt # 准备绘图区域 fig, axes = plt.subplots(len(decomposed_data[0]), 4, figsize=(20, 10 * len(decomposed_data[0]))) # 定义颜色映射 colors = ['blue', 'orange', 'green', 'red'] # 对应四个变量 variables = ['Current', 'Temperature', 'Humidity', 'Oil Temperature'] # 绘制每个IMF for imf_idx in range(len(decomposed_data[0])): for var_idx in range(4): imf = decomposed_data[var_idx][imf_idx] axes[imf_idx][var_idx].plot(imf, color=colors[var_idx]) axes[imf_idx][var_idx].set_title(f'IMF {imf_idx + 1} of {variables[var_idx]}')

分析与总结:从数据中发现规律

通过以上步骤,我们完成了对四个变量数据的MEMD分解和可视化。从图中我们可以看到,每个变量被分解成了多个IMF,每个IMF代表了信号中不同频率的成分。通过颜色的区分,我们能够更直观地比较不同变量之间的IMF分布,从而发现潜在的关联或差异。

例如,电流和温度的IMF分布较为相似,可能存在某种物理上的相关性;而湿度和油温的波动模式则有所不同,可能受到不同的环境因素影响。结合专业知识,我们可以通过这些IMF进一步分析变量之间的相互作用机制。

总结:MEMD的应用前景

多元经验模式分解(MEMD)算法为多维数据分析提供了一个强大的工具。通过本文的实践案例,我们展示了如何从数据读取、预处理、分解到结果可视化的完整流程。这种算法特别适用于那些需要同时分析多个相关变量的场景,如设备状态监测、环境数据分析等领域。希望本文能为你的数据分析实践提供一些启发!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/20 18:54:17

无需GPU!StructBERT中文情感分析CPU版部署全攻略

无需GPU!StructBERT中文情感分析CPU版部署全攻略 1. 引言:中文情感分析的轻量化落地需求 随着社交媒体、电商评论、客服对话等场景中用户生成内容(UGC)的爆发式增长,中文情感分析已成为自然语言处理(NLP&…

作者头像 李华
网站建设 2026/6/21 17:53:15

资产总“失踪”?这套智能管理系统让企业告别“寻物启事”时代

一、企业资产管理困局:那些 “消失的资产” 正在吞噬利润在企业运营的复杂棋局中,资产管理是至关重要的一环,却也是不少企业头疼的难题。从办公桌上的纸笔,到生产线上的大型设备,每一项资产都是企业运转的螺丝钉&#…

作者头像 李华
网站建设 2026/6/14 5:10:01

实体侦测模型调参指南:云端Jupyter免安装,实时可视化

实体侦测模型调参指南:云端Jupyter免安装,实时可视化 引言 作为一名算法工程师,你是否经常遇到这样的困扰:在本地用Jupyter Notebook跑实体侦测模型时,全量数据训练要花费6小时以上,调参过程像"盲人…

作者头像 李华
网站建设 2026/6/22 7:26:46

中文情感分析API开发:StructBERT REST接口实战

中文情感分析API开发:StructBERT REST接口实战 1. 背景与需求:为什么需要中文情感分析? 在当今信息爆炸的时代,用户生成内容(UGC)如评论、弹幕、社交媒体帖子等呈指数级增长。对于企业而言,如…

作者头像 李华
网站建设 2026/6/17 7:29:26

智能实体分析避坑指南:环境配置/数据准备/模型选择

智能实体分析避坑指南:环境配置/数据准备/模型选择 引言:为什么你的行为分析项目总在数据阶段翻车? 刚接触行为分析项目的开发者常会遇到这样的场景:好不容易收集了数据,代码却报出"维度不匹配"的错误&…

作者头像 李华