RandomForest-sklearn中的分类阈值


9

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

首先,数据是不平衡的(0级为30%,1级为70%)。因此,我认为分类器更倾向于偏向于类别1,这意味着将类别从类别0转移到类别1(类别0的分类错误为1297,类别1的分类错误为520)。我怎样才能解决这个问题?缩减采样是否有帮助?或更改分类阈值?

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

Answers:


7

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

另外,您可以通过传递sample_weight少数派样本的更高样本来偏向训练算法。


谢谢。我当时正在考虑增加小班学生的体重。但是,我在RandomForest分类器(SGD分类器中没有)中看不到任何东西
Big Data Lover

fit方法接受sample_weight非常灵活的参数(每个参数一个权重),并且可以进行仿真class_weight(每个目标类一个权重)。
ogrisel

谢谢。当我使用clf = clf.fit(X,Y,sample_weight = preprocessing.balance_weights(y)时,给我ValueError:操作数不能与形状一起广播。y是二进制0/1
Big Data Lover 2013年

的形状是y什么?为什么你有不同的Yy
ogrisel
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.