scikit-learn .predict() 默认阈值
回答问题 我正在处理不平衡类(5% 1)的分类问题。我想预测班级,而不是概率。 在一个二分类问题中,scikit的classifier.predict()是默认使用0.5的吗?如果没有,默认方法是什么?如果是这样,我该如何更改它? 在 scikit 中,一些分类器具有class_weight='auto'选项,但并非所有分类器都有。用class_weight='auto',.predict()会用
·
回答问题
我正在处理不平衡类(5% 1)的分类问题。我想预测班级,而不是概率。
在一个二分类问题中,scikit的classifier.predict()
是默认使用0.5
的吗?如果没有,默认方法是什么?如果是这样,我该如何更改它?
在 scikit 中,一些分类器具有class_weight='auto'
选项,但并非所有分类器都有。用class_weight='auto'
,.predict()
会用实际人口比例作为阈值吗?
在像MultinomialNB
这样不支持class_weight
的分类器中执行此操作的方法是什么?除了使用predict_proba()
然后自己计算类。
Answers
scikit的
classifier.predict()
是默认使用0.5的吗?
在概率分类器中,是的。正如其他人所解释的那样,从数学角度来看,这是唯一合理的阈值。
在像 MultinomialNB 这样不支持
class_weight
的分类器中执行此操作的方法是什么?
您可以设置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])
更多推荐
已为社区贡献126483条内容
所有评论(0)