Sklearn:如何使用DecisionTreeClassifier平衡分类?

时间:2016-05-30 09:29:04

标签: python machine-learning scikit-learn decision-tree

我有一个数据集,其中类是不平衡的。这些类可以是012

如何计算每个班级的prediction error,然后在weights中相应地重新平衡Sklearn

2 个答案:

答案 0 :(得分:9)

如果您想要完全平衡(将每个课程视为同等重要),您只需传递BGImageID,如docs中所述:

  

“平衡”模式使用y的值自动调整   权重与输入数据中的类频率成反比   作为class_weight='balanced'

答案 1 :(得分:7)

如果A类频率为10%且B类频率为90%,则B类将成为优势类,您的决策树将偏向主导类

在这种情况下,您可以将dic {A:9,B:1}传递给模型以指定每个类的权重,例如

clf = tree.DecisionTreeClassifier(class_weight={A:9,B:1})

class_weight='balanced'也可以使用,它只是根据每个班级频率的比例自动调整权重

enter image description here

使用class_weight='balanced'后,每个班级的记录编号变得相同(约88923)