分解+降維+預測!多重創新!直接寫核心!EMD-KPCA-Transformer多變量時間序列光伏功率預測
目錄
- 分解+降維+預測!多重創新!直接寫核心!EMD-KPCA-Transformer多變量時間序列光伏功率預測
- 效果一覽
- 基本介紹
- 程序設計
- 參考資料
效果一覽
基本介紹
1.MATLAB實現EMD-KPCA-Transformer多變量時間序列光伏功率預測;
2.多變量時間序列預測 就是先emd把原輸入全分解變成很多維作為輸入KPCA降維 再輸入Transformer預測 ;
3.運行環境Matlab2023b及以上,輸出RMSE、R2、MAPE、MAE等多指標對比,
先運行main1_EMD,進行emd分解;再運行main2_KPCA降維;再運行main3_EMD_KPCA_Transformer建模預測。
注意:一種算法不是萬能的,不同的數據集效果會有差別,后面的工作就是需要調整參數;
4.運行環境為Matlab2023b及以上;
5.數據集為excel,光伏數據集,輸入多個特征,輸出單個變量,考慮歷史特征的影響,多變量時間序列預測,所有文件放在一個文件夾;
6.命令窗口輸出R2、RMSE、MAE、MAPE等多指標評價。
購&買后可加點擊文章底部卡片博主咨詢交流。注意:其他非官方渠道購&買的盜版代碼不含模型咨詢交流服務,大家注意甄別,謝謝。
程序設計
- 完整程序和數據下載私信博主回復分解+降維+預測!多重創新!直接寫核心!EMD-KPCA-Transformer多變量時間序列光伏功率預測。
clc;
clear
close all%% Transformer預測
tic
load origin_data.mat
load emd_data.mat
load KPCA_data.mat%% EMD-KPCA-Transformer預測
tic
disp('…………………………………………………………………………………………………………………………')
disp('EMD-KPCA-Transformer預測')
disp('…………………………………………………………………………………………………………………………')data=[KPCA_data X(:,end)];num_samples = length(data); % 樣本個數
kim = 5; % 延時步長(kim個歷史數據作為自變量)
zim = 1; % 跨zim個時間點進行預測
or_dim = size(data,2);
res=[];
% 重構數據集
for i = 1: num_samples - kim - zim + 1res(i, :) = [reshape(data(i: i + kim - 1,:), 1, kim*or_dim), data(i + kim + zim - 1,:)];
end% 訓練集和測試集劃分
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] https://blog.csdn.net/kjm13182345320/article/details/128163536?spm=1001.2014.3001.5502
[2] https://blog.csdn.net/kjm13182345320/article/details/128151206?spm=1001.2014.3001.5502