【问题标题】:How to Interpret roc_curve(Test,Predictions) in scikit-learn如何在 scikit-learn 中解释 roc_curve(Test,Predictions)
【发布时间】:2016-10-22 20:15:48
【问题描述】:

我正在使用 scikit-learn 解决分类问题,以预测机会的赢或输。
我使用了这段代码:

fpr, tpr, thresholds =roc_curve(yTest,predictions)

结果是:

    (array([ 0.       ,  0.2628946,  1.       ]),
     array([ 0.        ,  0.73692477,  1.        ]),
     array([2, 1, 0]))

我知道使用 fpr、tpr 来计算在 (1,0) 范围内变化的各种阈值的 AUC。理想情况下,我所知道的阈值应该在 1 到 0 之间。

但是,这里的阈值为 2,1,0。从中了解什么以及如何解释。

示例代码看起来不错:

import numpy as np
from sklearn import metrics
y = np.array([1, 1, 2, 2])
scores = np.array([0.1, 0.4, 0.35, 0.8])
fpr, tpr, thresholds = metrics.roc_curve(y, scores, pos_label=2)
>>>fpr
array([ 0. ,  0.5,  0.5,  1. ])
>>>tpr
array([ 0.5,  0.5,  1. ,  1. ])
>>> thresholds
array([ 0.8 ,  0.4 ,  0.35,  0.1 ])

我的 predict_proba(yTest) 是:

[ 0.09573287  0.90426713]
 [ 0.14987409  0.85012591]
 [ 0.16348188  0.83651812]
 ..., 
 [ 0.13957409  0.86042591]
 [ 0.04478675  0.95521325]
 [ 0.03492729  0.96507271]

【问题讨论】:

  • 您能分享一下您的 yTest 和预测数组中的值吗?
  • @AbhinavArora:编辑了我的问题

标签: python machine-learning scikit-learn data-mining


【解决方案1】:

阈值不限于 [0;1]。

只有 TPR 和 FPR 是费率,即 0 到 1。

如果您看到文档,它会告诉您它是如何得出值 2 的:

降低用于计算 fpr 和 tpr 的决策函数的阈值。 thresholds[0] 表示没有实例被预测,任意设置为max(y_score) + 1

如果您的输入数据具有值[100,42,42,3.14],那么它将考虑阈值[101, 100, 42, 3.14]

从您的阈值[2,1,0] 来看,您没有以正确的方式使用此功能。您可能已经切换了两个参数?因为输出表明您的输入分数都是 0 或 1。在此类数据上,ROC 曲线退化,您只需使用精度和召回率。但是如果你切换了分数和标签,你可能会得到一个真正的ROC曲线。

【讨论】:

    猜你喜欢
    • 2017-01-02
    • 2015-08-17
    • 2014-06-26
    • 2014-06-11
    • 2013-04-26
    • 2015-06-19
    • 2020-02-10
    • 2020-11-23
    • 2017-05-22
    相关资源
    最近更新 更多