2011-12-06 52 views
3

任何想法如何创建一个决策树桩用于在Matlab中进行提升?我的意思是,有一些参数可以发送给classregree,以确保我只有1级?我尝试修剪,并不总是给一个树桩(单剪)。有时我只能得到2个切割(不平衡的树)。创建一个树桩Matlab

我知道ClassificationTree.template和fitensemble函数,但我想写我自己的boosting算法,以便将它用于LDA或其他非fitensemble提供的分类器。

感谢

回答

4

我相信你可以设置minparent参数等同于你的意见数量。使用虹膜示例数据:

>> load fisheriris; 
>> t = classregtree(meas,species,... 
       'names',{'SL' 'SW' 'PL' 'PW'}, 'minparent', 150) 

t = 

Decision tree for classification 
1 if PL<2.45 then node 2 elseif PL>=2.45 then node 3 else setosa 
2 class = setosa 
3 class = versicolor 

不知道,但它可能会更快,最终手工编码它 - 尤其是如果你反正结合其他自定义代码。祝你好运!

+0

非常感谢,它效果很好。 – omarzouk

+0

实际上,它有时并不会完全切断,即树只由根节点组成:S – omarzouk

+0

嗯......有一个小例子可以发布吗?如果不是,请尝试通过http://www.mathworks.com/help/toolbox/stats/classregtree.html上的其他选项进行操作。举一个例子,如果风险相等,并且mergeleaves处于默认状态(“on”),那么我认为不会有任何削减。 –

0

如果t1是你的树,由classregtree返回的,我想你可以创建一个决策残端t2用命令

t2 = prune(t1, 'level', max(prunelist(t1)-1)); 

这是否你需要什么?

+1

那么1-它效率不高,2-发生的情况是,如果树不平衡,修剪可能会偏向另一边,所以我最终得到一棵树,左边的分支中有一个分支,但没有右边的分支,如果我增加了1个级别,最后我得到了根节点。不知道是否合并离开会解决这个问题。还是)感谢你的建议 :-) – omarzouk