在传递到"auc"之前如何处理从'roc_curve'返回的 NaN?



我在scikit learn中使用度量模型中的"roc_curve"。示例显示'roc_curve'应该在'auc'之前调用,类似于:

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.

这在术语或结果上意味着什么/有办法克服这一点吗?

您声明这一行:

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

这导致了这样的结论,即你可能已经复制了同样使用";pos_label=2";。

然而,在大多数情况下;pos_label";为1。因此,如果代码输出的概率在0和1之间,那么pos_label应该是1。

您是否试图使用roc_curve来评估多类分类器?换句话说,如果您在非二进制的分类问题上使用roc_curve,那么这将无法正常工作。多维ROC分析有数学方法,但python中当前的ROC方法没有实现它们。

要评估多类问题,请尝试使用以下方法:来自sklearn的confusion_mmatrix和classification_report,以及来自skll的kappa()。

相关内容

  • 没有找到相关文章

最新更新