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