在MATLAB中修改决策树的精度

在MATLAB中修改决策树的精度,matlab,class,tree,decision-tree,Matlab,Class,Tree,Decision Tree,我使用FirtTree创建了一个回归树 我希望采用切割点等参数,并降低精度,如下所示: tree.CutPoint=round(tree.CutPoint,5); 但我不能这样做,因为切点设置为只读,我想修改它,或者创建一个与此基本相同但经过修改的树。不幸的是,文档仅通过firtree函数显示构造函数。有可能这样做吗?如果是的话,如何解决呢?这只是一个部分提示性的解决方案。我希望其他人能想出更好的解决办法 不起作用的解决方案: 通常,每当出现此类问题时,(繁琐的)解决方案是找到类的构造函数,然

我使用FirtTree创建了一个回归树 我希望采用切割点等参数,并降低精度,如下所示:

tree.CutPoint=round(tree.CutPoint,5);

但我不能这样做,因为切点设置为只读,我想修改它,或者创建一个与此基本相同但经过修改的树。不幸的是,文档仅通过firtree函数显示构造函数。有可能这样做吗?如果是的话,如何解决呢?

这只是一个部分提示性的解决方案。我希望其他人能想出更好的解决办法

不起作用的解决方案:

通常,每当出现此类问题时,(繁琐的)解决方案是找到类的构造函数,然后将所有字段(包括
轮(tree.CutPoint,5)
作为
切点(CutPoint)
)提供给构造函数,例如

NewTree = RegressionTree('X',tree.X,'Y',tree.Y,...,'CutPoint',round(tree.CutPoint,5),...)
理论上应该创建一个新的树,
NewTree
,它与
相同,除了已舍入的
切点

然而,在它所说的构造器的文档(或帮助中心)中

无法通过调用构造函数来创建此类的对象。使用FirtTree通过将树拟合到训练数据来创建RegressionTree对象

因此,这种方法也行不通。然后我试着在类的层次结构中更进一步,看看是否可以用这些方法来实现,然后向下发展,这(我所能发现的)也是不可能的

我的建议:

似乎Mathworks在确保我们不会篡改生成的树方面做了大量工作。因此,我的基本建议是不要使用这种方法。但是,这可以通过几种方式实现:

  • 如果您键入例如
    编辑回归树
    ,似乎所有用于构建树的代码都可用,因此您应该能够找到结果树设置为
    私有
    ,然后可以更改为
    公共

  • 如果您不想更改现有的Matlab代码,那么Kota Hara已经自己实现了,您可以尝试一下

  • 最后一个建议是自己实现它,注意你不需要编写一个非常通用的方法,只需要一个能解决你的问题的方法。这可以是任何语言

正如一开始所说,我希望有人比我更幸运,尽管我高度怀疑这一点,因为似乎Mathworks在阻止你这么做方面做了很多工作——也许有一个漏洞,但我不知道