2013-07-17 104 views
1

我正在使用scikit-learn中的度量模型的'roc_curve'。這個例子表明,'roc_curve'應該'auc'類似於之前被稱爲:如何在傳遞給'auc'之前處理從'roc_curve'返回的NaN?

fpr, tpr, thresholds = metrics.roc_curve(y, pred, pos_label=2) 

然後:

metrics.auc(fpr, tpr) 

然而,返回以下錯誤:

Traceback (most recent call last): File "analysis.py", line 207, in <module> 
    r = metrics.auc(fpr, tpr) File "/apps/anaconda/1.6.0/lib/python2.7/site-packages/sklearn/metrics/metrics.py", line 66, in auc 
    x, y = check_arrays(x, y) File "/apps/anaconda/1.6.0/lib/python2.7/site-packages/sklearn/utils/validation.py", line 215, in check_arrays 
    _assert_all_finite(array) File "/apps/anaconda/1.6.0/lib/python2.7/site-packages/sklearn/utils/validation.py", line 18, in _assert_all_finite 
    raise ValueError("Array contains NaN or infinity.") ValueError: Array contains NaN or infinity. 

是什麼意思的條款或結果/是否有辦法解決這個問題?

+2

你爲什麼使用'pos_label = 2'?這意味着你的正面標籤是「2」 - 你的情況是否如此?如果你只有「0」和「1」作爲標籤,可以解釋NaNs :) – ihadanny

回答

0

你想讓我們roc_curve評估多類分類器嗎?換句話說,如果您在非二進制分類問題上使用roc_curve,那麼這將無法正常工作。有多維ROC分析的數學,但目前在Python中的ROC方法沒有實現它們。

要評估嘗試使用類似以下方法的多類問題:來自sklearn的confusion_matrix和classification_report以及來自skll的kappa()。

相關問題