在 MATLAB 中修改决策树的精度
Posted
技术标签:
【中文标题】在 MATLAB 中修改决策树的精度【英文标题】:modify precision of a decision tree in MATLAB 【发布时间】:2018-09-16 18:11:50 【问题描述】:我使用 fitrtree 创建了一个回归树 我想采用 CutPoint 等参数并降低精度,如下所示:
tree.CutPoint=round(tree.CutPoint,5);
但我不能这样做,因为 CutPoint 设置为只读,我想修改它或创建一个与此树基本相同但具有这些修改的树。不幸的是,文档仅通过 fitrtree 函数显示构造函数。是否有可能做到这一点?如果有,怎么做?
【问题讨论】:
【参考方案1】:这只是部分建议性解决方案。我希望其他人能提出更好的解决方案。
无效的解决方案:
通常,每当出现此类问题时,(繁琐的)解决方案是找到该类的构造函数,然后将所有字段(包括您的 round(tree.CutPoint,5)
为 CutPoint
,即类似这样的东西)提供给构造函数
NewTree = RegressionTree('X',tree.X,'Y',tree.Y,...,'CutPoint',round(tree.CutPoint,5),...)
理论上应该创建一个新树NewTree
,它与tree
相同,除了已舍入的CutPoint
。
但是,查看它所说的构造函数的文档(或帮助中心)
这个类的对象不能通过调用构造函数来创建。使用 FITTREE 通过将树拟合到训练数据来创建 RegressionTree 对象。
所以这种方法也行不通。然后,我尝试在类的层次结构中更进一步,看看是否可以使用这些方法做到这一点,然后向下发展,这也是(我能找到的)不可能的。
我的建议:
似乎 Mathworks 已经竭尽全力确保我们不会篡改生成的树。因此,我的基本建议是不要使用这种方法。然而,这可以通过多种方式完成:
如果您键入例如,所有用于构建树的代码似乎都可用。 edit RegressionTree
因此您应该能够找到结果树设置为private
的点,然后可以将其更改为public
。
如果您不想更改现有的 Matlab 代码,那么 Kota Hara 已经自己实现了 binary regression trees,您可以尝试一下。
最后一个建议是自己实现它,注意您不需要编写一个非常通用的方法,只需一个可以解决您的问题的方法。然后可以使用任何语言。
正如一开始所说,我希望有人比我运气好,尽管我非常怀疑,因为似乎 Mathworks 已经做了很多工作来阻止你 - 也许有一个漏洞,但我不知道.
【讨论】:
以上是关于在 MATLAB 中修改决策树的精度的主要内容,如果未能解决你的问题,请参考以下文章
决策树的分类报告参数(精度、召回率、f1 分数、支持)为 1.0