Matlab决策树

时间:2017-11-20 18:12:20

标签: matlab decision-tree

我正在尝试制作决策树,但结果很奇怪,我无法弄清楚哪里出错了。有七个变量,每个变量我使用1或2来表示它们的含义,例如,对于变量1,数字1是暖的,2是冷的,对于变量2,数字1是,2是否。

vars = {'TEMP' 'SKIN' 'BIRTH' 'AQUATIC' 'AERIAL' 'LEGS' 'HIBER'};
x = [1 1 1 2 2 1 2
     2 2 2 2 2 2 1
     2 2 2 1 2 2 2
     1 1 1 1 2 2 2
     2 1 2 1 2 1 1
     2 2 2 2 2 1 2
     1 1 1 2 1 1 1
     1 1 2 2 1 1 2
     1 1 1 2 2 1 2
     2 2 1 1 2 2 2
     2 2 2 1 2 1 2
     1 1 2 1 2 1 2
     1 1 1 2 2 1 1
     2 2 2 1 2 2 2
     2 1 2 1 2 1 1];
s = {'M';'R';'F';'M';'A';'R';'M';'B';'M';'F';'R';'B';'M';'F';'A'};
y = cellstr(s);
t = classregtree(x, y, 'method','classification', 'names',vars,...
                 'categorical',[1 7], 'prune','off');
view(t) 

结果只是一步树而没有其他信息。这有什么问题?

1 个答案:

答案 0 :(得分:0)

我不是决策树的专家,无论如何,使用classregtreeminparent的参数进行一点点确切的说明:

vars = {'TEMP' 'SKIN' 'BIRTH' 'AQUATIC' 'AERIAL' 'LEGS' 'HIBER'};

x = [1 1 1 2 2 1 2
     2 2 2 2 2 2 1
     2 2 2 1 2 2 2
     1 1 1 1 2 2 2
     2 1 2 1 2 1 1
     2 2 2 2 2 1 2
     1 1 1 2 1 1 1
     1 1 2 2 1 1 2
     1 1 1 2 2 1 2
     2 2 1 1 2 2 2
     2 2 2 1 2 1 2
     1 1 2 1 2 1 2
     1 1 1 2 2 1 1
     2 2 2 1 2 2 2
     2 1 2 1 2 1 1];

y = {'M';'R';'F';'M';'A';'R';'M';'B';'M';'F';'R';'B';'M';'F';'A'};

t = classregtree(x,y,'method','classification','Names',vars, ...
    'categorical',[1 7],'prune','off','minparent',1);

view(t);

我已经能够重现一些看起来很好的东西。无论如何,自Matlab发布2011A以来,classregtree已经过时并且已被fitrtree(RegressionTree)和fitctree(ClassificationTree)函数取代(classregtree因为后向兼容性原因而被保留只要)。我建议您更新代码并使用这些功能:

t = fitctree(x,y,'PredictorNames',vars, ...
    'CategoricalPredictors',{'TEMP' 'HIBER'},'Prune','off','MinParentSize',1);