改进Kmeans+Transformer!冲核心!DTW-Kmeans-Transformer-GRU模型!时序聚类+状态识别!

文摘   2024-11-02 21:57   广东  

读完需要

6
分钟

速读仅需 2 分钟

请尊重原创劳动成果
转载请注明本文链接
及文章作者:机器学习之心

点击阅读原文或复制以下链接到浏览器获取文章完整源码和数据:
https://mbd.pub/o/bread/mbd-Z5WTm5dx

摘要:改进Kmeans+Transformer!冲核心!DTW-Kmeans-Transformer-GRU模型!时序聚类+状态识别!

1

   

基本介绍

1.创新未发表!研究亮点!时序聚类+状态识别,DTW-Kmeans-Transformer-GRU组合模型,运行环境Matlab2023b及以上;基于动态时间规整(DTW)的kmeans序列聚类算法,将DTW算法求得的距离取代欧式距离衡量不同长度的阵列或时间序列之间的相似性或距离,实现时间序列的聚类。算法为Matlab编写,注释清晰,逻辑详细,可以方便地替换数据。

2.excel数据,方便替换,先运行main1_DTW_Kmeans对时序数据进行聚类、再运行main2_Transformer_GRU对聚类后的数据进行识别,其余为函数文件无需运行,可在下载区获取数据和程序内容,适用于交通、气象、负荷等领域。

3.图很多,包括聚类效果图、分类识别效果图,混淆矩阵图。命令窗口输出分类准确率、灵敏度、特异性、曲线下面积、Kappa系数、F值。

4.附赠案例数据可直接运行main一键出图,注意程序和数据放在一个文件夹,运行环境为Matlab2023b及以上。

5.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。可在下载区获取数据和程序内容。

   购买后可加博主QQ1153460737咨询交流。注意:其他非官方渠道购买的盗版代码不含模型咨询交流服务,大家注意甄别,谢谢。

2

   

2.1

数据集

   

   

2.2

运行效果



   

完整代码链接:https://mbd.pub/o/bread/mbd-Z5WTm5dx

也可扫描二维码:

3


   

部分源码


%% 清空环境变量warning off % 关闭报警信息close all % 关闭开启的图窗clear % 清空变量clc % 清空命令行


%% 分析数据num_class = length(unique(res(:, end))); % 类别数(Excel最后一列放类别)num_dim = size(res, 2) - 1; % 特征维度num_res = size(res, 1); % 样本数(每一行,是一个样本)num_size = 0.7; % 训练集占数据集的比例res = res(randperm(num_res), :); % 打乱数据集(不打乱数据时,注释该行)flag_conusion = 1; % 标志位为1,打开混淆矩阵(要求2018版本及以上)
%% 设置变量存储数据P_train = []; P_test = [];T_train = []; T_test = [];
%% 划分数据集for i = 1 : num_class mid_res = res((res(:, end) == i), :); % 循环取出不同类别的样本 mid_size = size(mid_res, 1); % 得到不同类别样本个数 mid_tiran = round(num_size * mid_size); % 得到该类别的训练样本个数
end
%% 数据转置P_train = P_train'; P_test = P_test';T_train = T_train'; T_test = T_test';
%% 得到训练集和测试样本个数M = size(P_train, 2);N = size(P_test , 2);
%% 数据归一化[P_train, ps_input] = mapminmax(P_train, 0, 1);P_test = mapminmax('apply', P_test, ps_input);
t_train = categorical(T_train)';t_test = categorical(T_test )';
%% 数据平铺% 将数据平铺成1维数据只是一种处理方式% 也可以平铺成2维数据,以及3维数据,需要修改对应模型结构% 但是应该始终和输入层数据结构保持一致P_train = double(reshape(P_train, num_dim, 1, 1, M));P_test = double(reshape(P_test , num_dim, 1, 1, N));
%% 数据格式转换for i = 1 : M p_train{i, 1} = P_train(:, :, 1, i);end
for i = 1 : N p_test{i, 1} = P_test( :, :, 1, i);end

%网络搭建numChannels = num_dim;maxPosition = 256;numHeads = 4;numKeyChannels = numHeads*32;


   

其他代码

嗯,细心的你会发现:https://mbd.pub/o/slowtrain/work

博客专家认证,机器学习领域创作者,2023博客之星TOP50,主做机器学习和深度学习时序、回归、分类、聚类和降维等程序设计和案例分析科研课题模型定制/横向项目模型仿真/职称学术论文辅导/模型程序讲解均可联系本人唯一QQ1153460737(其他均为盗版,注意甄别

技术交流群:购买博主任意代码或分享博主博文到任意三方平台后即可添加博主QQ进群


机器学习之心HML
机器学习和深度学习时序、回归、分类和聚类等程序设计与案例分析,CSDN博主机器学习之心,知乎、B站同名,由于博主公众号名称被别人占用,故加了HML,此号是官方账号,其余打着本人旗号做事本人概不负责,本人QQ1153460737。
 最新文章