[英]modify precision of a decision tree in MATLAB
我使用fitrtree创建了一个回归树,我想采用诸如CutPoint之类的参数并降低精度,如下所示:
tree.CutPoint=round(tree.CutPoint,5);
但我无法执行此操作,因为CutPoint设置为只读,我想对其进行修改或创建与该树基本相同但进行了这些修改的树。 不幸的是,文档仅显示构造函数通过fitrtree函数。 是否有可能做到这一点? 如果是这样,怎么办?
这只是部分暗示性的解决方案。 我希望其他人能提出更好的解决方案。
不起作用的解决方案:
通常,每当发生此类问题时,(繁琐的)解决方案就是找到该类的构造函数,然后将所有包含您的round(tree.CutPoint,5)
的字段作为CutPoint
提供给构造函数,即类似这样的东西
NewTree = RegressionTree('X',tree.X,'Y',tree.Y,...,'CutPoint',round(tree.CutPoint,5),...)
从理论上讲,它应该创建一个新树NewTree
,它与tree
相同,但CutPoint
已舍入。
但是,查看其构造函数的文档(或帮助中心)
此类的对象无法通过调用构造函数来创建。 使用FITRTREE通过将树适合训练数据来创建RegressionTree对象。
因此,这种方法也不起作用。 然后,我尝试在类的层次结构中更进一步,以查看是否可以使用这些方法来完成该方法,然后向下扩展它,这也是(我无法找到的)可能性。
我的建议:
看起来Mathworks在确保我们不篡改结果树的过程中花了很大的力气。 因此,我的基本建议是不使用此方法。 但是,可以通过以下几种方式完成此操作:
如果您键入例如edit RegressionTree
,似乎所有用于构建树的代码都可用,因此您应该能够找到将结果树设置为private
,然后可以将其更改为public
。
如果您不打算更改现有的Matlab代码,那么Kota Hara可以自己实现二进制回归树的实现,您可以尝试一下。
最后的建议是自己实施,并指出您不需要编写一种非常通用的方法即可解决问题。 这样可以是任何语言。
如开始时所说,我希望有人比我幸运,尽管我对此表示高度怀疑,因为看来Mathworks在阻止您使用它方面已经做了很多工作-也许有漏洞利用,但我不知道。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.