欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

[转载]Matlab-TreeBagger example

程序员文章站 2022-03-22 18:01:34
...

Matlab-TreeBagger example

原文链接https://blog.csdn.net/jiandanjinxin/article/details/51003840

In MATLAB, Decision Forests go under the rather deceiving name of TreeBagger.

随机森林分类器(Random Forest)

B = TreeBagger(nTree,train_data,train_label,'Method','classification');
predict_label = predict(B,test_data);
  • 1
  • 2

利用随机森林做分类

Here’s a quick tutorial on how to do classification with the TreeBagger class in MATLAB.

% Since TreeBagger uses randomness we will get different results each 
% time we run this.
% This makes sure we get the same results every time we run the code.
rng default

% Here we create some training data.
% The rows< represent the samples or individuals.
% The first two columns represent the individual's features.
% The last column represents the class label (what we want to predict)
trainData = [ ...
    [6,  300,  1];
    [3,  300,  0];
    [8,  300,  1];
    [11, 2000, 0];
    [3,  100,  0];
    [6,  1000, 0];
    ];

features = trainData(:,(1:2))
classLabels = trainData(:,3)

% How many trees do you want in the forest? 
nTrees = 20;

% Train the TreeBagger (Decision Forest).
B = TreeBagger(nTrees,features,classLabels, 'Method', 'classification');

% Given a new individual WITH the features and WITHOUT the class label,
% what should the class label be?
newData1 = [7, 300];

% Use the trained Decision Forest.
predChar1 = B.predict(newData1);

% Predictions is a char though. We want it to be a number.
predictedClass = str2double(predChar1)
% predictedClass =
%      1

% So we predict that for our new piece of data, we will have a class label of 1 

% Okay let's try another piece of data.
newData2 = [7, 1500];

predChar2 = B.predict(newData2);
predictedClass2 = str2double(predChar2)
% predictedClass2 =
%      0

% It predicts that the new class label is a 0.
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50

Found out how to inspect the trees, by running the view() command. E.g. for inspecting the first tree of the example:

view(B.Trees{1})

Decision tree for classification
1  if x2<650 then node 2 elseif x2>=650 then node 3 else 0
2  if x1<4.5 then node 4 elseif x1>=4.5 then node 5 else 1
3  class = 0
4  class = 0
5  class = 1
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

By passing some more arguments to the view() command, the tree can also be visualized:

view(B.Trees{1},'mode','graph')
  • 1

[转载]Matlab-TreeBagger example

利用随机森林进行回归:

x=[1:1:30];  
y=x.^2;  
B= TreeBagger(100,x',y','Method','regression');  
x2=[1:0.5:40];  
y2=x2.^2;  
y3=zeros(size(x2));  
for i=1:size(x2,2)  
    y3(i)=B.predict(x2(i));  
end  
plot(x2,y2,'.r');  
hold on;  
plot(x2,y3,'.b');  
title('Random Forest for Regression');
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

There’s an excellent tutorial in the MATLAB documentation here that covers a lot more.

本文转自:

http://kawahara.ca/matlab-treebagger-example/

http://blog.csdn.net/dan1900/article/details/39030867

相关标签: 随机森林