MATLAB随机森林

Posted by Kelly Yang on August 26, 2020

简介

Matlab使用随机森林(TreeBagger)的例子

ref: https://www.cnblogs.com/huadongw/p/5248018.html

ref: https://blog.csdn.net/wokaowokaowokao12345/article/details/104813867

说明

TreeBagger集成了一组决策树,用于分类或回归。集成中的每棵树都生长在独立绘制的输入数据的引导程序副本上。该副本中未包含的观察结果对于该树而言是“无用之物”。

TreeBagger将决策树用于分类或回归。TreeBagger依靠ClassificationTree和RegressionTree功能来生长单个树。ClassificationTree和RegressionTree接受为每个决策拆分随机选择的特征数作为可选输入参数。也就是说, TreeBagger实现了随机森林算法。

对于回归问题,TreeBagger支持均值和分位数回归(即分位数回归森林)。

默认情况下,TreeBagger为分类树。要使用回归树,请指定 ‘Method’,‘regression’。

语法

Mdl = TreeBagger(NumTrees,Tbl,ResponseVarName)
Mdl = TreeBagger(NumTrees,Tbl,formula)
Mdl = TreeBagger(NumTrees,Tbl,Y)
B = TreeBagger(NumTrees,X,Y)
B = TreeBagger(NumTrees,X,Y,Name,Value)

代码

T=textread('E:\datasets-orreview\discretized-regression\10bins\abalone10\matlab\test_abalone10.2');
X=textread('E:\datasets-orreview\discretized-regression\10bins\abalone10\matlab\train_abalone10.2');
%nTree = round(sqrt(size(X,2)-1));
nTree = 50;
train_data = X(:,1:end-1);train_label = X(:,end); test_data = T(:,1:end-1);
Factor = TreeBagger(nTree, train_data, train_label,'Method','regression');
[Predict_label,Scores] = predict(Factor, test_data);
%Predict_label=cellfun(@str2num,Predict_label(1:end));
MZE = mean(round(Predict_label) ~= T(:,end))
MAE = mean(abs(round(Predict_label) - T(:,end)))