簡體   English   中英

在MATLAB中修改決策樹的精度

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM