目錄
- 效果一覽
- 基本介紹
- 程序設計
- 參考資料
效果一覽
基本介紹
1.【SCI一區級】Matlab實現SSA-CNN-GRU-Multihead-Attention麻雀算法優化卷積門控循環單元融合多頭注意力機制多變量時間序列預測,要求Matlab2023版以上;
2.輸入多個特征,輸出單個變量,考慮歷史特征的影響,多變量時間序列預測;
3.data為數據集,main.m為主程序,運行即可,所有文件放在一個文件夾;
4.命令窗口輸出R2、MSE、MAE、MAPE和RMSE多指標評價;
5.麻雀算法優化學習率,神經元個數,注意力機制的鍵值, 卷積核個數。
程序設計
- 完整程序和數據獲取方式私信博主回復Matlab實現SSA-CNN-GRU-Multihead-Attention多變量時間序列預測。
%% 清空環境變量
warning off % 關閉報警信息
close all % 關閉開啟的圖窗
clear % 清空變量
clc % 清空命令行%% 劃分訓練集和測試集
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);%% 數據平鋪
P_train = double(reshape(P_train, f_, 1, 1, M));
P_test = double(reshape(P_test , f_, 1, 1, N));t_train = t_train';
t_test = t_test' ;%% 數據格式轉換
for i = 1 : Mp_train{i, 1} = P_train(:, :, 1, i);
endfor i = 1 : Np_test{i, 1} = P_test( :, :, 1, i);
end?
%% 數據平鋪%% 模型
numChannels = or_dim;
maxPosition = 256*2;
numHeads = 4;
numKeyChannels = numHeads*32;
layers = [ sequenceInputLayer(numChannels,Name="input")positionEmbeddingLayer(numChannels,maxPosition,Name="pos-emb");additionLayer(2, Name="add")
options = trainingOptions(solver, ...'Plots','none', ...'MaxEpochs', maxEpochs, ...'MiniBatchSize', miniBatchSize, ...'Shuffle', shuffle, ...'InitialLearnRate', learningRate, ...'GradientThreshold', gradientThreshold, ...'ExecutionEnvironment', executionEnvironment);
?
參考資料
[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