【问题标题】:sklearn classifier - predict_proba threshold that maximizes aucsklearn 分类器 - 最大化 auc 的 predict_proba 阈值
【发布时间】:2018-08-14 08:21:14
【问题描述】:

我有一个三类分类问题。我训练分类器,然后绘制不同类别​​的 ROC。

我需要为每个类获取最大化 TPR 和最小化 FPR 的阈值。在 Matlab 中,这是返回的。有没有办法在 python / sklearn 中检索它?

谢谢。

【问题讨论】:

  • roc_curve 返回 tpr、fpr 和阈值。您不能以适当的方式同时最大化 TPF 和最小化 FPR。 I 你只是想在曲线上找到最靠近图表左上角的点 (0, 1)?
  • @Quickbeam2k1 我有函数输出的 TPR、FPR 和阈值数组。是的,我需要曲线上最靠近左上角的点的阈值。

标签: python machine-learning scikit-learn classification roc


【解决方案1】:

所以我的想法是这样的:

import numpy as np
idx = np.linalg.norm(
    (np.array([[0, 1]]) -np.stack([fpr, tpr], axis=1)), 
    axis=1).argmax()
max_thresh = thresholds[idx]

这里做了什么:将 FPR 和 TPR 堆叠在一起作为 2D 向量。减去向量每一行的左上角并取范数。这计算距离。取 argmax 可以知道最大值出现在哪一行。最后,返回该索引处的阈值

【讨论】:

  • 用 np.array([[0, 1]],我得到右上角,我用 np.array([[1, 0]] 得到左上角。谢谢!
  • hmm,但如果 FPR 是 x 轴,TPR 是 y 轴 -> 那么 (0,1) 应该是正确的点。不过,如果它适合你,我也很高兴
  • @DreX 如果答案解决了您的问题,请接受(答案会占用受访者的宝贵时间)
猜你喜欢
  • 2020-11-27
  • 2022-11-07
  • 2019-07-25
  • 2021-07-10
  • 2015-10-03
  • 2018-09-16
  • 2018-09-06
  • 2018-03-03
  • 2017-06-11
相关资源
最近更新 更多