标签: python machine-learning scikit-learn decision-tree
我有一个数据集,其中类是不平衡的。这些类可以是0,1或2。
0
1
2
如何计算每个班级的prediction error,然后在weights中相应地重新平衡Sklearn。
prediction error
weights
Sklearn
答案 0 :(得分:9)
如果您想要完全平衡(将每个课程视为同等重要),您只需传递BGImageID,如docs中所述:
BGImageID
“平衡”模式使用y的值自动调整 权重与输入数据中的类频率成反比 作为class_weight='balanced'
class_weight='balanced'
答案 1 :(得分:7)
如果A类频率为10%且B类频率为90%,则B类将成为优势类,您的决策树将偏向主导类
在这种情况下,您可以将dic {A:9,B:1}传递给模型以指定每个类的权重,例如
{A:9,B:1}
clf = tree.DecisionTreeClassifier(class_weight={A:9,B:1})
class_weight='balanced'也可以使用,它只是根据每个班级频率的比例自动调整权重
使用class_weight='balanced'后,每个班级的记录编号变得相同(约88923)