1. 程式人生 > >metrics.roc_curve()輸出的tpr或fpr的結果為nan

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]