我正在处理不平衡类(5%1)的分类问题。我想预测类(class),而不是概率。
在二进制分类问题中,默认情况下scikit的classifier.predict()
是否使用0.5
?
如果没有,默认方法是什么?如果可以,该如何更改?
在scikit中,某些分类器具有class_weight='auto'
选项,但并非所有分类器都具有。使用class_weight='auto'
,.predict()
会使用实际人口比例作为阈值吗?
在不支持MultinomialNB
的class_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/