我在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()。