如何解释Scikit-Learn中的ROC_Curve(测试,预测)



我正在与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计算AUC的各种阈值在范围内变化(1,0)。理想情况下,我所知道的是脱粒机在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 ])

我的preadive_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]

阈值不限于[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曲线。

相关内容

  • 没有找到相关文章

最新更新