【MATLAB第22期】基于MATLAB的xgboost算法多输入多输出回归模型 已购用户可在之前下载链接免费获取
往期文章:xgboost安装教程
最近有很多小伙伴私信我有关xgboost预测的问题,被问到最多的问题总结如下:
- 1.xgboost安装/运行失败。
- 关于问题1,还是建议多刷刷我的视频教学,有一部分用户反馈说按照我的步骤复现成功,我由衷为你们感到开心,另一部分没复现成功的也不要气馁,也许不是你们的操作原因,可能是matlab版本,操作系统,或是下载的文件版本不一致导致运行报错。由于报错的原因五花八门,有些也超过了我的认知范畴,抱歉不能为你们一一解答。图省事的用户可以直接找我有偿获取成品,我也将不断更新内容,来反馈各个支持的用户。
- 2.xgboost多输入多输出回归模型如何实现?
- 关于问题2,本身不是太困难,有基础的同学不妨自己试试。同时,为了答谢已购用户的支持,故免费更新多输入多输出回归模型,可在原链接已购商品中下载。
本代码支持多变量输出预测,只需更改行数及列数就行,比如以下示例为2输出。原谅我偷懒没考虑输出与输入之间是否有关联,而强行套数据,所以效果观感难免差一些。
P_train = res(temp(1: 80), 1: 6)';
T_train = res(temp(1: 80), 7:8)';
P_test = res(temp(81: end), 1: 6)';
T_test = res(temp(81: end), 7:8)';
不过我在原先基础上,优化了绘图和评价指标代码,不用你们再怎么修改对应代码,对小白还是相对友好。
%% 相关指标计算
% 决定系数 R2
for k=1:VV
R1 (k,:)= 1 - norm(T_train(k,:) - T_sim1(k,:))^2 / norm(T_train(k,:) - mean(T_train(k,:)))^2;
R2 (k,:)= 1 - norm(T_test(k,:) - T_sim2(k,:))^2 / norm(T_test(k,:) - mean(T_test(k,:) ))^2;
disp(['变量' num2str(k) '训练集数据的R2为:', num2str(R1(k,:))])
disp(['变量' num2str(k) '测试集数据的R2为:', num2str(R2(k,:))])
% 平均绝对误差 MAE
mae1 (k,:)= sum(abs(T_sim1(k,:) - T_train(k,:))) ./ M ;
mae2(k,:) = sum(abs(T_sim2(k,:) - T_test(k,:) )) ./ N ;
disp(['变量' num2str(k) '训练集数据的MAE为:', num2str(mae1(k,:))])
disp(['变量' num2str(k) '测试集数据的MAE为:', num2str(mae2(k,:))])
% 平均相对误差 MBE
mbe1(k,:) = sum(T_sim1(k,:) - T_train(k,:)) ./ M ;
mbe2(k,:) = sum(T_sim2(k,:) - T_test(k,:) ) ./ N ;
disp(['变量' num2str(k) '训练集数据的MBE为:', num2str(mbe1(k,:))])
disp(['变量' num2str(k) '测试集数据的MBE为:', num2str(mbe2(k,:))])
end
优化前后
以下三个问题,正在研究中,后续还会慢慢更新。
- 3.xgboost回归模型如何调参? ##
4.xgboost回归模型如何模拟预测新数据? ##
5.xgboost如何实现多分类预测。