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