2016-05-30 126 views

回答

5

如果你想完全平衡(对待每类作为同样重要的),你可以简单地传递class_weight='balanced',因为它是在规定的docs

的“平衡”模式使用的Y的值自动调整权重 成反比类的频率在输入数据作为 n_samples/(n_classes * np.bincount(y))

+0

请注意,它是分类器(构造函数)的一个参数,而不是'fit'。 –

4

如果类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)

+0

我对来自class_weight的值列表“平衡”感到困惑。这是否意味着分类器对每个类同等重要?如果是这样,那么它是如何通过决策树传播的呢?树中每个节点的值列表如何变化?我在问,因为我在运行分类器时看到的自己的输出中感到困惑。 – OfLettersAndNumbers