metrics.roc_curve()输出的tpr或fpr的结果为nan

在用metrics.roc_curve()函数计算tpr的时候,出现tpr为nan的情况,主要是因为label里面没有正样本的标签。

下面是roc_curve()里面的一段源码,其中tps[-1]存放的是所有的正样本。同理,如果fpr出现nan的情况是因为label里面没有负样本。

 if fps[-1] <= 0:
        warnings.warn("No negative samples in y_true, "
                      "false positive value should be meaningless",
                      UndefinedMetricWarning)
        fpr = np.repeat(np.nan, fps.shape)
    else:
        fpr = fps / fps[-1]

    if tps[-1] <= 0:
        warnings.warn("No positive samples in y_true, "
                      "true positive value should be meaningless",
                      UndefinedMetricWarning)
        tpr = np.repeat(np.nan, tps.shape)
    else:
        tpr = tps / tps[-1]

我们来看个?,正样本的标签为2,负样本的标签为1:

from sklearn import metrics
import numpy as np

y = np.array([1,1,1,1])
scores = scores = np.array([0.1, 0.4, 0.35, 0.8])
fpr, tpr, thresholds = metrics.roc_curve(y, scores, pos_label=2)

 因为样本中没有怎样本,所以tpr的值就为nan

tpr
Out[16]: array([nan, nan, nan])

 

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值