[英]How is the impurity decrease of a split computed in case we have multiple outputs using RandomForestRegressor of Scikit-Learn library
[英]how to make sklearn.ensemble.RandomForestRegressor not take care of impurity decrease heuristic
我正在使用sklearn的RandomForestRegressor來實現隨機森林插補。 Sklearn允許我們設置參數min_impurity_decrease
來指定拆分停止條件的啟發式。 例如,如果min_impurity_decrease = 0.0
,並且如果節點拆分導致更差的雜質,則該節點將成為葉節點。
問題是,我希望Random Forest能夠完全生長,而不會盡早停止或修剪。 但是必須將min_impurity_decrease
設置為非負浮點數。 有什么解決辦法嗎?
直觀地,我試圖設置min_impurity_decrease = float("-inf")
,這會導致錯誤消息。
您顯然必須修改sklearn代碼。 看一下有關如何以可編輯模式安裝sklearn的答案 。 確保創建新的虛擬環境,以免弄亂原始的sklearn文件。
好消息是您不必更改任何Cython代碼。 轉到文件sklearn/tree/tree.py
僅在BaseDecisionTree
類中檢查min_impurity_decrease
的值。 根據Github的說法,在306行中有一個代碼段:
if self.min_impurity_decrease < 0.:
raise ValueError("min_impurity_decrease must be greater than "
"or equal to 0")
只需刪除它並重新加載庫即可。 我無法測試此解決方案,所以如果您遇到任何問題,請告訴我。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.