二元分类问题中每个概率截止值的准确度(python sklearn 准确度)

Accuracy for each probability cutoff in a binary classification problem (python sklearn accuracy)

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

sklearn 中是否有函数 returns pred_train 中每个 cutoff 模型的准确性?我希望将模型的准确性视为每个截止值的函数,以便系统地选择一个截止值。

我尝试了以下方法:

_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 行中每一行的观察结果)。此代码 returns 一个列表,其中每个值都包含截止值及其相应的准确度分数。

对象 pred_test 有大约 600,000 个不同的值,所以我迭代了 600,000 次左右。上面的代码可以运行,但是需要很长时间才能完成。有没有更有效的方法来做到这一点?我敢打赌 sklearn 已经有一个函数可以做到这一点。

这里有一些类似的线程可以检查它:Getting the maximum accuracy for a binary probabilistic classifier in scikit-learn

scikit-learn 中没有内置函数。我认为这没有实现的原因是你将有机会过度拟合,你基本上会将你的训练集调整到对测试集有风险的基线。