JCR一區級 | Matlab實現TCN-BiGRU-MATT時間卷積雙向門控循環單元多特征分類預測
目錄
- JCR一區級 | Matlab實現TCN-BiGRU-MATT時間卷積雙向門控循環單元多特征分類預測
- 分類效果
- 基本介紹
- 程序設計
- 參考資料
分類效果
基本介紹
1.Matlab實現TCN-BiGRU-MATT時間卷積雙向門控循環單元多特征分類預測,TCN-BiGRU-Multihead-Attention;
多頭自注意力層 (Multihead-Self-Attention):Multihead-Self-Attention多頭注意力機制是一種用于模型關注輸入序列中不同位置相關性的機制。它通過計算每個位置與其他位置之間的注意力權重,進而對輸入序列進行加權求和。注意力能夠幫助模型在處理序列數據時,對不同位置的信息進行適當的加權,從而更好地捕捉序列中的關鍵信息。
2.數據輸入12個特征,輸出4個類別,main.m是主程序,其余為函數文件,無需運行;
3.可視化展示分類準確率;
4.運行環境matlab2023b及以上。
程序設計
- 完整程序和數據獲取方式私信博主回復Matlab實現TCN-BiGRU-MATT時間卷積雙向門控循環單元多特征分類預測。
% 清空環境變量
warning off % 關閉報警信息
close all % 關閉開啟的圖窗
clear % 清空變量
clc % 清空命令行%% 讀取數據
res = xlsread('data.xlsx');%% 分析數據
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_classmid_res = res((res(:, end) == i), :); % 循環取出不同類別的樣本mid_size = size(mid_res, 1); % 得到不同類別樣本個數mid_tiran = round(num_size * mid_size); % 得到該類別的訓練樣本個數P_train = [P_train; mid_res(1: mid_tiran, 1: end - 1)]; % 訓練集輸入T_train = [T_train; mid_res(1: mid_tiran, end)]; % 訓練集輸出P_test = [P_test; mid_res(mid_tiran + 1: end, 1: end - 1)]; % 測試集輸入T_test = [T_test; mid_res(mid_tiran + 1: end, end)]; % 測試集輸出
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 );T_sim1 = T_sim1(index_1);
T_sim2 = T_sim2(index_2);
%% 性能評價
error1 = sum((T_sim1' == T_train))/M * 100 ;
error2 = sum((T_sim2' == T_test))/N * 100 ;%% 混淆矩陣
figure
cm = confusionchart(T_train, T_sim1);
cm.Title = 'Confusion Matrix for Train Data';
cm.ColumnSummary = 'column-normalized';
cm.RowSummary = 'row-normalized';figure
cm = confusionchart(T_test, T_sim2);
cm.Title = 'Confusion Matrix for Test Data';
cm.ColumnSummary = 'column-normalized';
cm.RowSummary = 'row-normalized';
參考資料
[1] http://t.csdn.cn/pCWSp
[2] https://download.csdn.net/download/kjm13182345320/87568090?spm=1001.2014.3001.5501
[3] https://blog.csdn.net/kjm13182345320/article/details/129433463?spm=1001.2014.3001.5501