簡體   English   中英

如何使sklearn.ensemble.RandomForestRegressor不照顧雜質減少啟發式

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

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