二进制分类问题中每个概率截断的准确性(python sklearn准确性)

时间:2020-01-27 17:15:49

标签: python scikit-learn classification

想象一个二进制分类问题。假设我在pred_test中存储了800,000个预测概率。我将cutoff定义为pred_test中的任何值,以便大于或等于cutoff的值被分配值为1且小于cutoff的值分配的值为0。

sklearn中是否有一个函数可以为cutoff中的每个pred_train返回模型的准确性?我希望看到模型的准确性与每个截止点的函数关系,以便系统地选择一个截止点。

我尝试了以下操作:

_list = []
for cutoff in np.unique(np.sort(pred_test)):
    binary_prediction = np.where(pred_test >= cutoff, 1, 0)
    _list.append( (cutoff, binary_prediction == y_test).sum() / len(pred_test) )

在这里,y_test是基础事实(一个数组,其中包含观察到的针对800,000行每一行的结果)。该代码返回一个列表,其中每个值都包含截止值及其相应的准确性得分。

对象pred_test具有大约600,000个不同的值,所以我要迭代600,000次左右。上面的代码可以正常工作,但是要花很长时间才能完成。有没有更有效的方法可以做到这一点?我敢打赌,sklearn已经具有执行此操作的功能。

1 个答案:

答案 0 :(得分:3)

下面是一些类似的线程来检查它:Getting the maximum accuracy for a binary probabilistic classifier in scikit-learn

scikit-learn中没有内置函数。我认为未执行此操作的原因是您将有机会进行过拟合,基本上可以将火车设置调整为对测试集有风险的基线。