【问题标题】:Create a Tree Stump Matlab创建树桩 Matlab
【发布时间】:2012-01-14 03:45:26
【问题描述】:

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

我知道 ClassificationTree.template 和 fitensemble 函数,但我想编写自己的提升算法以将其与 LD​​A 或 fitensemble 未提供的其他分类器一起使用。

谢谢

【问题讨论】:

    标签: matlab tree decision-tree


    【解决方案1】:

    我相信您可以将minparent 参数设置为等于您的观察次数。使用 iris 示例数据:

    >> 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
    

    不确定,但最终手动编写代码可能会更快 - 特别是如果您要合并其他自定义代码。祝你好运!

    【讨论】:

    • 实际上有时它根本不切割,即树仅由根节点组成:S
    • 嗯...您可以发布一个小例子吗?如果没有,请尝试通过 mathworks.com/help/toolbox/stats/classregtree.html 的其他选项。例如,如果风险相同并且mergeleaves 保持默认(“开启”),那么我认为不会有削减。
    【解决方案2】:

    如果t1 是您的树,由classregtree 返回,我认为您可以使用命令创建决策树桩t2

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

    这能满足你的需要吗?

    【讨论】:

    • 好吧 1- 效率不高 2- 如果树不平衡,修剪可能会偏向另一侧,所以我最终得到一棵树,左分支有一个分裂,但是右分支中没有,如果我再增加 1 个级别,我最终会得到根节点。不确定是否关闭合并叶子会解决这个问题。不过感谢您的建议:-)
    猜你喜欢
    • 1970-01-01
    • 2012-08-20
    • 2016-12-14
    • 2015-07-25
    • 2014-04-07
    • 1970-01-01
    • 2021-12-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多