我有一个数据集,其中的类是不平衡的。这些课程是0
,1
或2
。Sklearn:如何使用DecisionTreeClassifier来平衡分类?
如何计算每个班级的prediction error
,然后在Sklearn
中相应地重新平衡weights
。
我有一个数据集,其中的类是不平衡的。这些课程是0
,1
或2
。Sklearn:如何使用DecisionTreeClassifier来平衡分类?
如何计算每个班级的prediction error
,然后在Sklearn
中相应地重新平衡weights
。
如果你想完全平衡(对待每类作为同样重要的),你可以简单地传递class_weight='balanced'
,因为它是在规定的docs:
的“平衡”模式使用的Y的值自动调整权重 成反比类的频率在输入数据作为
n_samples/(n_classes * np.bincount(y))
如果类A的频率为10%,B级的频率为90%,那么类B就成为主导类和决策树将成为实现这一占主导地位
在这种情况下,阶级偏见,你可以传递一个DIC {A:9,B:1}
到模型指定每个类的权重,像
clf = tree.DecisionTreeClassifier(class_weight={A:9,B:1})
的class_weight='balanced'
会也行,根据各组频数的比例它只是自动调整权重
我用class_weight='balanced'
后,每个班级的记录数量已经变得相同(大约88923)
我对来自class_weight的值列表“平衡”感到困惑。这是否意味着分类器对每个类同等重要?如果是这样,那么它是如何通过决策树传播的呢?树中每个节点的值列表如何变化?我在问,因为我在运行分类器时看到的自己的输出中感到困惑。 – OfLettersAndNumbers
请注意,它是分类器(构造函数)的一个参数,而不是'fit'。 –