如何使用DecisionTreeClassifier平衡分类?

问题描述 投票:7回答:2

我有一个数据集,其中的类是不平衡的。这些类要么是 0, 12.

如何计算每个班级的预测误差,然后重新平衡?weights 中相应的?

python machine-learning scikit-learn decision-tree
2个回答
11
投票

如果你想完全平衡(将每个类视为同等重要),你可以简单地通过 class_weight='balanced'正如《公约》中所述 文件:

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


8
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.