网络首发:MTF-CNN-Attention故障识别: 基于马尔可夫场(MTF)和卷积网络(CNN)融合注意力机制的故障识别程序

文摘   教育   2024-12-12 09:19   江苏  
适用平台:Matlab2023版本及以上

本程序参考中文EI期刊《电网技术》网络首发文献:《基于马尔可夫转换场与多头注意力机制的电能质量扰动分类方法》,程序注释清晰,干货满满,下面对文章和程序做简要介绍!

文献创新点:这篇文献的创新点在于马尔可夫场(MTF)与卷积神经网络(CNN)相结合,融入多头注意力机制,实现故障分类。MTF将一维信号转换为二维特征图,而CNN可以对这些特征图进行自适应的特征提取和分类,融合多头注意力机制有效把握提取特征的贡献程度,实现了故障的准确分类。
故障识别流程:

原理:马尔可夫转换场(Markov transition field, MTF)是一种将时序数据转化为空间图像数据的方法,该方法扩展了马尔可夫状态转移矩阵,通过顺序表达状态转移矩阵,充分保留了离散化时域动态信息,最终利用模糊内核聚合生成二维图像。以电压正弦信号为例,MTF示意图如下图所示。

MTF-CNN-Attention进行故障识别的方法具有几个创新性的方面:

数据表示的创新:通常,一维序列(如时间序列数据)直接用于建模和分析。将这些序列转化为马尔可夫场图像,实际上是一种新的数据表示方法。这种转换可能揭示出序列数据中的新模式和结构特征,这些在原始一维形式中可能不那么明显或难以检测。比传统的时序分析方法更有效地捕捉复杂的模式和异常。

图像处理技术:通过将序列数据转化为图像,可以利用成熟的图像处理技术和图像识别算法来分析数据。这包括使用各种图像识别方法,如卷积神经网络(CNN),这些方法在图像分析领域已被证明非常有效,但在传统的序列数据分析中不常见。

捕捉时间依赖性:马尔可夫场是一种数学模型,用于表示随机变量之间的依赖关系。在将序列数据转化为马尔可夫场图像时,可以以图像的形式捕捉时间序列中的时间依赖性和动态变化,这为理解和识别时间序列中的故障模式提供了新的视角。
多头注意力机制:融合多头注意力机效把握提取特征的贡献程度特征进行重点强化,提高故障识别的准确率
程序套用:马尔可夫转换场(MTF)将一维时序生成二维图像,再用CNN提取图像的高维特征,利用多头自注意力机制(Multihead Self-Attention特征进行重点强化,提高故障识别的准确率

输入数据格式:(一行一个样本,最后一列表示故障所属类别标签)

由上述数据生成MTF图像:

识别结果:(训练集和测试集的混淆矩阵)

训练集和测试集的散点图:

训练曲线:准确率和损失变化图

马尔可夫场生成部分程序:
% 加载数据data = xlsread('特征数据带标签.xlsx');
% 获取数据集的样本数量和每个样本的长度[numSamples, sampleLength] = size(data);
% 循环处理每个样本数据for sampleIdx = 1:numSamples %% 生成数据 % 从data中获取当前样本数据 featureData = data(sampleIdx, 1:end - 1);
X = featureData; m = length(X); % 将数据归一化到[0, 1] X_normalized = (X - min(X)) / (max(X) - min(X)); %% 构造转移矩阵W numDataPoints = length(X); % 分成Q个分位箱(按照个数),从小往大:1、2、3、4 Q = 4; % 将每个元素映射到分位箱1、2、3、4, X_Q = ones(1, numDataPoints); threshold = 0; % 初始化阈值 thresholds = ones(1, Q + 1); for i = 2 : Q + 1 % 循环计算小于当前阈值的数据个数,达到阈值时跳出循环 while sum(X_normalized < threshold) < numDataPoints * (i - 1) / Q threshold = threshold + 0.0001; end % 记录每一个分位箱的阈值 thresholds(i) = threshold; % 将原始数据向量变成对应的分位箱次序向量 X_Q(find(X_normalized < thresholds(i) & X_normalized > thresholds(i - 1))) = i - 1; end %% 计算马尔可夫矩阵 % 初始化各状态转移计数 sum_11 = 0; sum_12 = 0; sum_13 = 0; sum_14 = 0; sum_21 = 0; sum_22 = 0; sum_23 = 0; sum_24 = 0; sum_31 = 0; sum_32 = 0; sum_33 = 0; sum_34 = 0; sum_41 = 0; sum_42 = 0; sum_43 = 0; sum_44 = 0;

部分图片来源于网络,侵权联系删除!

完整代码:https://mbd.pub/o/bread/ZZial5lx

欢迎感兴趣的小伙伴点击阅读原文上方链接获得完整版代码哦~,关注小编会继续推送更有质量的学习资料、文章程序代码~


创新优化及预测代码
免费分享研究理论及方法,基础代码资料,努力提供电力系统相关专业预测及优化研究领域的创新性代码,保质保量!面包多地址:https://mbd.pub/o/yc_yh/work
 最新文章