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

Roy*_*eIX 6 python machine-learning decision-tree scikit-learn

我有一个数据集,其中类是不平衡的.这些课程要么是0,1要么是2.

我如何计算prediction error每个类,然后重新平衡weights相应地Sklearn.

lej*_*lot 10

如果您想要完全平衡(将每个类视为同等重要),您可以简单地传递class_weight='balanced',如文档中所述:

"平衡"模式使用y的值自动调整与输入数据中的类频率成反比的权重 n_samples / (n_classes * np.bincount(y))

  • 请注意,它是分类器(构造函数)的参数,而不是`fit`的参数。 (3认同)

zha*_*ing 8

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

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

clf = tree.DecisionTreeClassifier(class_weight={A:9,B:1})
Run Code Online (Sandbox Code Playgroud)

它class_weight='balanced'也会工作,它只是根据每个班级频率的比例自动调整重量

在此输入图像描述

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