二元分类问题中每个概率截止值的准确度(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 中没有内置函数。我认为这没有实现的原因是你将有机会过度拟合,你基本上会将你的训练集调整到对测试集有风险的基线。
想象一个二元分类问题。假设我在 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 中没有内置函数。我认为这没有实现的原因是你将有机会过度拟合,你基本上会将你的训练集调整到对测试集有风险的基线。