2016-12-31 1989 views
0

我使用python在二进制目标类的不平衡数据集上运行随机森林。我想将默认概率阈值0.5更改为另一个值以提高召回率和精确度。到目前为止,我找不到任何可用于执行此任务的已定义方法或类。任何人都可以请教一个方法,或者是否意味着我应该自己编写代码?干杯如何在随机森林中设置自己的概率阈值?

+0

您正在运行哪个库? Python没有“随机森林”。 –

+0

@AmiTavory我使用'from sklearn.ensemble import RandomForestClassifier' – LUSAQX

+1

您可以使用'p = clf.predict_proba(X)'得到概率,然后计算'Y = p> custom_value' – tihom

回答

1

的RandomForestClassifier scikit学习没有固定的阈值,以指定一个类样品。正如你在RandomForestClassifier.predict的源代码中看到的那样,它只是返回最可能的类。当然你可以使用@thiom提出的方法,但我很难想象这会提高精度和回忆。

举例来说,如果你选择的阈值是0.7和类概率为0.6和0.4,你什么分配类?一个都没有?

作为一种替代方法,您可以尝试使用RandomForestClassifier的class_weight选项来更多地重视您的代表性不足的班级。

+0

我同意。改变预测概率并不是提高不平衡类的精度/召回率的有效方法。您将需要更新您的模型训练策略,如玩类别权重(如Rene所建议的)或更改抽样频率。 – tihom