Transformer-BiGRU多變量時序預測(Matlab完整源碼和數據)
目錄
- Transformer-BiGRU多變量時序預測(Matlab完整源碼和數據)
- 效果一覽
- 基本介紹
- 程序設計
- 參考資料
效果一覽
基本介紹
1.Matlab實現Transformer-BiGRU多變量時間序列預測,Transformer編碼器結合雙向門控循環單元多變量時間序列預測;
2.運行環境為Matlab2023b及以上;
3.data為數據集,輸入多個特征,輸出單個變量,考慮歷史特征的影響,多變量時間序列預測,main.m為主程序,運行即可,所有文件放在一個文件夾;
4.命令窗口輸出R2、MSE、RMSE、MAE、MAPE、MBE等多指標評價。
主要功能
時間序列預測
使用歷史時間步的特征數據預測目標值。
模型架構
結合了 Transformer 的自注意力機制(捕捉長距離依賴)和 雙向 GRU(捕捉正反向時序特征)。
完整流程
涵蓋數據預處理、模型構建、訓練、預測、評估及可視化全流程。
程序設計
完整代碼獲取私信回復:Transformer-BiGRU多變量時序預測(Matlab完整源碼和數據)
%% 清空環境變量
warning off % 關閉報警信息
close all % 關閉開啟的圖窗
clear % 清空變量
clc % 清空命令行%% 導入數據num_samples = length(result); % 樣本個數
or_dim = size(result, 2); % 原始特征+輸出數目%% 數據集分析
outdim = 1; % 最后一列為輸出
num_size = 0.7; % 訓練集占數據集比例
num_train_s = round(num_size * num_samples); % 訓練集樣本個數
f_ = size(res, 2) - outdim; % 輸入特征維度%% 劃分訓練集和測試集
P_train = res(1: num_train_s, 1: f_)';
T_train = res(1: num_train_s, f_ + 1: end)';
M = size(P_train, 2);P_test = res(num_train_s + 1: end, 1: f_)';
T_test = res(num_train_s + 1: end, f_ + 1: end)';
N = size(P_test, 2);%% 數據歸一化
[P_train, ps_input] = mapminmax(P_train, 0, 1);
P_test = mapminmax('apply', P_test, ps_input);[t_train, ps_output] = mapminmax(T_train, 0, 1);
t_test = mapminmax('apply', T_test, ps_output);%% 數據平鋪
% 將數據平鋪成1維數據只是一種處理方式
% 也可以平鋪成2維數據,以及3維數據,需要修改對應模型結構
% 但是應該始終和輸入層數據結構保持一致
P_train = double(reshape(P_train, f_, 1, 1, M));
P_test = double(reshape(P_test , f_, 1, 1, N));
參考資料
[1] https://blog.csdn.net/kjm13182345320/article/details/129215161
[2] https://blog.csdn.net/kjm13182345320/article/details/128105718