机器学习之MATLAB代码--随机森林(一)
时间:2024-03-26 15:01:04 来源:网络cs 作者:焦糖 栏目:运营工具 阅读:
代码:
%% 初始化数据clcclearclose all%% 导入数据data = xlsread('数据集.xlsx','Sheet1','A1:F100');%导入数据库%% 划分训练集和测试集TE= randperm(100);%将数据打乱,重新排序;PN = data(TE(1: 80), 1: 5)';%划分训练集输入TN = data(TE(1: 80), 6)';%划分训练集输出PM = data(TE(81: end), 1: 5)';%划分测试集输入TM = data(TE(81: end), 6)';%划分测试集输出%% 数据归一化[pn, ps_input] = mapminmax(PN, 0, 1);%归一化到(0,1)pn=pn';pm = mapminmax('apply', PM, ps_input);%引用结构体,保持归一化方法一致;pm=pm';[tn, ps_output] = mapminmax(TN, 0, 1);tn=tn';%% 模型参数设置及训练模型trees = 100; % 决策树数目leaf = 5; % 最小叶子数OOBPrediction = 'on'; % 打开误差图OOBPredictorImportance = 'on'; % 计算特征重要性Method = 'regression'; % 选择回归或分类net = TreeBagger(trees, pn, tn, 'OOBPredictorImportance', OOBPredictorImportance,... 'Method', Method, 'OOBPrediction', OOBPrediction, 'minleaf', leaf);importance = net.OOBPermutedPredictorDeltaError; % 重要性%% 仿真测试pyuce = predict(net, pm );%% 数据反归一化Pyuce = mapminmax('reverse', pyuce, ps_output);Pyuce =Pyuce';%% 绘图figure %画图真实值与预测值对比图plot(TM,'bo-')hold onplot(Pyuce,'r*-')hold onlegend('真实值','预测值')xlabel('预测样本')ylabel('预测结果')grid onfigure % 绘制特征重要性图bar(importance)legend('各因素重要性')xlabel('特征')ylabel('重要性')%% 相关指标计算error=Pyuce-TM;[~,len]=size(TM);R2=1-sum((TM-Pyuce).^2)/sum((mean(TM)-TM).^2);%相关性系数MSE=error*error'/len;%均方误差RMSE=MSE^(1/2);%均方根误差disp(['测试集数据的MSE为:', num2str(MSE)])disp(['测试集数据的MBE为:', num2str(RMSE)])disp(['测试集数据的R2为:', num2str(R2)])
数据部分截图
结果:
如有需要数据和代码压缩包请在评论区发邮箱留言,一般一天之内会发送,记得关注和点赞哦!!
本文链接:https://www.kjpai.cn/news/2024-03-26/148971.html,文章来源:网络cs,作者:焦糖,版权归作者所有,如需转载请注明来源和作者,否则将追究法律责任!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。