我正在处理不平衡类(5%1)的分类问题。我想预测类(class),而不是概率。

在二进制分类问题中,默认情况下scikit的classifier.predict()是否使用0.5
如果没有,默认方法是什么?如果可以,该如何更改?

在scikit中,某些分类器具有class_weight='auto'选项,但并非所有分类器都具有。使用class_weight='auto'.predict()会使用实际人口比例作为阈值吗?

在不支持MultinomialNBclass_weight这样的分类器中,如何做到这一点?除了使用predict_proba()之外,然后自己计算类。

最佳答案



在概率分类器中,是的。正如其他人所解释的那样,从数学角度来看,这是唯一明智的阈值。



您可以设置class_prior,它是每个类别y的先验概率P(y)。这有效地改变了决策边界。例如。

# minimal dataset
>>> X = [[1, 0], [1, 0], [0, 1]]
>>> y = [0, 0, 1]
# use empirical prior, learned from y
>>> MultinomialNB().fit(X,y).predict([1,1])
array([0])
# use custom prior to make 1 more likely
>>> MultinomialNB(class_prior=[.1, .9]).fit(X,y).predict([1,1])
array([1])

关于python - scikit-learn .predict()默认阈值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19984957/

10-12 19:27