回答问题

我正在处理不平衡类(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])
Logo

学AI,认准AI Studio!GPU算力,限时免费领,邀请好友解锁更多惊喜福利 >>>

更多推荐