【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
运行结果:
变量1训练集数据的R2为:0.9998
变量1测试集数据的R2为:0.76982
变量1训练集数据的MAE为:0.39433
变量1测试集数据的MAE为:24.1249
变量1训练集数据的MBE为:0.0052592
变量1测试集数据的MBE为:-5.8176
变量2训练集数据的R2为:-1.9562
变量2测试集数据的R2为:-0.93417
变量2训练集数据的MAE为:10.6578
变量2测试集数据的MAE为:10.2048
变量2训练集数据的MBE为:-4.3999
变量2测试集数据的MBE为:-4.4601
以下三个问题,正在研究中,后续还会慢慢更新。
3.xgboost回归模型如何调参? ##
4.xgboost回归模型如何模拟预测新数据? ##
5.xgboost如何实现多分类预测。