回歸預(yù)測 | Matlab基于CPO-GPR基于冠豪豬算法優(yōu)化高斯過程回歸的多輸入單輸出回歸預(yù)測
預(yù)測效果
基本介紹
Matlab基于CPO-GPR基于冠豪豬算法優(yōu)化高斯過程回歸的數(shù)據(jù)回歸預(yù)測(完整源碼和數(shù)據(jù))
1.Matlab基于CPO-GPR基于冠豪豬算法優(yōu)化高斯過程回歸的輸入多個特征,輸出單個變量,多輸入單輸出回歸預(yù)測;
3.多指標(biāo)評價,評價指標(biāo)包括:R2、MAE、MSE、RMSE等,代碼質(zhì)量極高;
4.粒子群算法優(yōu)化參數(shù)為:優(yōu)化核函數(shù)超參數(shù) sigma,標(biāo)準(zhǔn)差,初始噪聲標(biāo)準(zhǔn)差;
5.excel數(shù)據(jù),方便替換,運行環(huán)境2018及以上。文章來源:http://www.zghlxwxcb.cn/news/detail-847202.html
程序設(shè)計
- 完整程序和數(shù)據(jù)獲取方式(資源處下載):Matlab基于CPO-GPR基于冠豪豬算法優(yōu)化高斯過程回歸的數(shù)據(jù)回歸預(yù)測
%-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
%% 清空環(huán)境變量
warning off % 關(guān)閉報警信息
close all % 關(guān)閉開啟的圖窗
clear % 清空變量
clc % 清空命令行
% restoredefaultpath
%% 導(dǎo)入數(shù)據(jù)
%-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
f_ =size(P_train, 1); %輸入特征維度
M = size(P_train, 2);
N = size(P_test, 2);
%% 數(shù)據(jù)歸一化
[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);
%-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
%% 轉(zhuǎn)置以適應(yīng)模型
p_train = p_train'; p_test = p_test';
t_train = t_train'; t_test = t_test';
%-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
%% 超參數(shù)設(shè)置
Best_pos = [0.6, 0.7, 30]; % 優(yōu)化下界
%% 仿真測試
t_sim1 = predict(net, p_train);
t_sim2 = predict(net, p_test );
%-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
%% 數(shù)據(jù)反歸一化
T_sim1 = mapminmax('reverse', t_sim1, ps_output);
T_sim2 = mapminmax('reverse', t_sim2, ps_output);
%-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
%% 數(shù)據(jù)轉(zhuǎn)置
T_sim1=T_sim1';
T_sim2 =T_sim2';
%-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
%% 均方根誤差
error1 = sqrt(sum((T_sim1 - T_train).^2) ./ M);
error2 = sqrt(sum((T_sim2 - T_test ).^2) ./ N);
%-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
%%
%決定系數(shù)
R1 = 1 - norm(T_train - T_sim1)^2 / norm(T_train - mean(T_train))^2;
R2 = 1 - norm(T_test - T_sim2)^2 / norm(T_test - mean(T_test ))^2;
%-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
%%
%均方誤差 MSE
mse1 = sum((T_sim1 - T_train).^2)./M;
mse2 = sum((T_sim2 - T_test).^2)./N;
%%
%RPD 剩余預(yù)測殘差
SE1=std(T_sim1-T_train);
RPD1=std(T_train)/SE1;
%-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SE=std(T_sim2-T_test);
RPD2=std(T_test)/SE;
%% 平均絕對誤差MAE
MAE1 = mean(abs(T_train - T_sim1));
MAE2 = mean(abs(T_test - T_sim2));
%% 平均絕對百分比誤差MAPE
MAPE1 = mean(abs((T_train - T_sim1)./T_train));
MAPE2 = mean(abs((T_test - T_sim2)./T_test));
%-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
%% 測試集誤差圖
figure
ERROR3=T_test-T_sim2;
plot(T_test-T_sim2,'b-*','LineWidth',1.5)
xlabel('測試集樣本編號')
ylabel('預(yù)測誤差')
title('測試集預(yù)測誤差')
grid on;
legend('GPR預(yù)測輸出誤差')
%% 打印出評價指標(biāo)
disp(['-----------------------誤差計算--------------------------'])
disp(['評價結(jié)果如下所示:'])
disp(['平均絕對誤差MAE為:',num2str(MAE2)])
disp(['均方誤差MSE為: ',num2str(mse2)])
disp(['均方根誤差RMSEP為: ',num2str(error2)])
disp(['決定系數(shù)R^2為: ',num2str(R2)])
disp(['剩余預(yù)測殘差RPD為: ',num2str(RPD2)])
disp(['平均絕對百分比誤差MAPE為: ',num2str(MAPE2)])
參考資料
[1]https://blog.csdn.net/kjm13182345320/article/details/124443069?spm=1001.2014.3001.5501
[2]https://blog.csdn.net/kjm13182345320/article/details/124443735?spm=1001.2014.3001.5501文章來源地址http://www.zghlxwxcb.cn/news/detail-847202.html
到了這里,關(guān)于回歸預(yù)測 | Matlab基于CPO-GPR基于冠豪豬算法優(yōu)化高斯過程回歸的多輸入單輸出回歸預(yù)測的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!