机器学习十大算法之Matlab-7随机森林10集成学习
随机森林+BoostingMatlab代码随机森林例子1-用随机森林算法对周志华《机器学习》中的西瓜数据集3.0𝛼 进行分类例子2-用随机森林算法对鸢尾属植物数据集 Iris 进行分类, 并绘制包外误差曲线 图. Adaboosting例子3-用Adaboosting二分类例子4-用Adaboosting多分类随机森林+Boosting
Matlab代码
随机森林
例子1-用随机森林算法对周志华《机器学习》中的西瓜数据集3.0𝛼 进行分类
melon30a.txt1 0.697 0.460 12 0.774 0.376 13 0.634 0.264 14 0.608 0.318 15 0.556 0.215 16 0.403 0.237 17 0.481 0.149 18 0.437 0.211 19 0.666 0.091 210 0.243 0.267 211 0.245 0.057 212 0.343 0.099 213 0.639 0.161 214 0.657 0.198 215 0.360 0.370 216 0.593 0.042 217 0.719 0.103 2
RF_melon30a.m
%随机森林对西瓜数据集3.0a分类clear all; close all; clc;data = load('melon30a.txt');data(:,1)=[]; %删除第一列(序号)X=data(:,1:2); %训练样本矩阵Y=data(:,3); %标签向量figure(1);gscatter(X(:,1),X(:,2),Y,'rb','*p'); %画原始数据散点图title('原始数据'); xlabel('密度');ylabel('含糖率');legend('好瓜','非好瓜','Location','NW'); box on;B=TreeBagger(30,X,Y); %调用随机森林函数Y1=predict(B,X); %用训练好的模型对样本集X进行预测figure(2);gscatter(X(:,1),X(:,2),Y1,'rb','*p'); %分类后的数据散点图title('随机森林分类'); xlabel('密度');ylabel('含糖率');legend('好瓜','非好瓜','Location','NW'); box on;nCorrect=sum(str2num(char(Y1))==Y);%正确分类的样本数目accuracy=nCorrect/length(Y); %计算正确率
例子2-用随机森林算法对鸢尾属植物数据集 Iris 进行分类, 并绘制包外误差曲线 图.
%随机森林对鸢尾属植物数据集Iris分类clear all; close all; clc;load fisheriris %载入数据集%X=meas(:,3:4); %取数据集的后两个属性便于可视化X=meas;Y=species; %标签向量figure(1)gscatter(X(:,3),X(:,4),Y,'rbm','*pd'); %画原始数据散点图title('原始数据'); xlabel('花瓣长度');ylabel('花瓣宽度');legend('Location','SE'); box onB=TreeBagger(50,X,Y,'oobpred','on'); %调用随机森林函数Y1=predict(B,X); %用训练好的模型对样本集X进行预测figure(2)gscatter(X(:,3),X(:,4),Y1,'rbm','*pd'); %分类后的数据散点图title('随机森林分类'); xlabel('花瓣长度');ylabel('花瓣宽度');legend('Location','SE'); box onfigure(3)plot(oobError(B)); %画包外误差曲线title('包外误差曲线'); xlabel('决策树棵数');ylabel('包外误差')nCorrect=sum(strcmp(Y1,Y));%正确分类的样本数目accuracy=nCorrect/length(Y); %计算正确率
Adaboosting
例子3-用Adaboosting二分类
%AdaBoost算法分类数据集ionosphereclc, clear all, close all;load ionosphere; %加载数据%Z = load('melon3.0.txt'); X=Z(:,2:3); Y=Z(:,4);Mdl=fitensemble(X,Y,'AdaBoostM1',100,'tree'),%利用AdaBoost算法训练100轮, 弱学习器类型为决策树, 返回一个Mdl类rsLoss=resubLoss(Mdl,'Mode','Cumulative');%计算误差, Cumulative 表示累积1:T分类器的误差plot(rsLoss,'k-'); %绘制训练次数与误差的关系xlabel('弱分类器个数');ylabel('训练误差');[Y1,~]=predict(Mdl,X); %对原始数据进行预测输出nCorrect=sum(strcmp(Y1,Y));%正确分类的样本数目accuracy=nCorrect/length(Y), %计算正确率Xbar=mean(X); %构造一个新的样本[ypredict,score]=predict(Mdl,Xbar) %预测新样本, 利用predict方法%ypredict: 预测标签, score: 当前样本点属于每个类的可信度, 分值越大, 置信度越高view(Mdl.Trained{5},'Mode','graph'); %显示训练的弱分类器
例子4-用Adaboosting多分类
%AdaBoost算法对鸢尾属植物数据集进行分类clc, clear all, close all;load fisheriris; %装载鸢尾属植物数据集, 3类X = meas; %训练样本集Y = species; %标签向量Mdl=fitensemble(X,Y,'AdaBoostM2',400,'tree'), %多分类%利用AdaBoost算法训练400轮, 弱学习器类型为决策树rsLoss=resubLoss(Mdl,'Mode','Cumulative');%计算误差, Cumulative 表示累积1:T分类器的误差plot(rsLoss,'k-'); %绘制训练次数与误差的关系xlabel('弱分类器个数'); ylabel('训练误差');[Y1,~]=predict(Mdl,X); %对原始数据进行预测输出nCorrect=sum(strcmp(Y1,Y));%正确分类的样本数目accuracy=nCorrect/length(Y), %计算正确率Xb=[1 0.2 0.4 2]; %一个新的样本[ypredict,score]=predict(Mdl,Xb) %预测新样本, 利用predict方法%ypredict: 预测标签, score: 当前样本点属于每个类的可信度, 分值越大, 置信度越高view(Mdl.Trained{100},'Mode','graph'); %显示训练的第8个弱分类器
如果觉得《机器学习十大算法之Matlab-7随机森林10集成学习》对你有帮助,请点赞、收藏,并留下你的观点哦!