RandomForest-sklearn 中的分类阈值

机器算法验证 分类 随机森林 精确召回 不平衡类
2022-03-03 20:04:42

1)如何在sklearn的RandomForest中更改分类阈值(我认为默认为0.5)?

2) 如何在 sklearn 中进行欠采样?

3) 我从 RandomForest 分类器得到以下结果:[[1635 1297] [520 3624]]

         precision    recall  f1-score   support

class 0       0.76      0.56      0.64      2932
class 1       0.74      0.87      0.80      4144

平均/总计 0.75 0.74 0.73 7076

首先,数据不平衡(30% 来自 0 类,70% 来自 1 类)。所以,我认为分类器更可能偏向于 1 类,这意味着将一些从 0 类移动到 1 类(0 类有 1297 个错误分类,1 类有 520 个错误分类)。我怎样才能解决这个问题?下采样是否有帮助?或改变分类阈值?

更新:0 类有 40% 的人口,而 1 类是 60%。但是,从 0 类到 1 类(1297)的漂移很高,而我希望它变低。

1个回答

您确实可以将随机森林包装在一个类中,该类predict调用predict_proba内部随机森林的方法并输出类 1,前提是它高于自定义阈值。

sample_weight或者,您可以通过为少数类的样本传递更高的值来偏置训练算法。