[英]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.