0.5与人口比例没有任何关系。它是一个概率输出。没有“阈值”,如果一个类别的概率为0.51,则它似乎是最可能的类别。如果始终使用0.5,则应使用*,并且没有软件包使用其他“阈值”。如果您的概率分数是*准确且真正具有代表性的*,则您必须始终选择最可能的类别 。否则只会降低您的准确性。由于我们使用各种进行假设的算法,因此我们不知道概率为真-但您会违背模型所做的假设。
你感到困惑的class_weight做什么。更改类权重会增加表示较少的类中数据点的权重(/对于表示过多的类则减小),以使每个类的“权重”相等-好像它们具有相同数量的正例和负例。这是尝试避免始终为最常见类别投票的分类器的常见技巧。因为这样,从学习算法的角度来看,这两个类都是相同的。
- 注意:如果您担心误报/误报,则可以选择仅在某类的概率达到某个最小值时接受。但这并不会改变学习的方式,也不会改变概率背后的含义。
0
我正在处理不平衡类(5%1)的分类问题。我想预测班级,而不是概率。
在二进制分类问题中,scikit的
classifier.predict()
默认是否使用0.5
?如果没有,默认方法是什么?如果可以,该如何更改?在scikit中,某些分类器具有
class_weight='auto'
选项,但并非所有分类器都具有。使用class_weight='auto'
,.class_weight='auto'
.predict()
将实际人口比例用作阈值?什么是像一个分类,以做到这一点的方式
MultinomialNB
不支持class_weight
?除了使用predict_proba()
然后自己计算类之外。