Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使sklearn.metrics.confusion_matrix()始终返回TP、TN、FP、FN?_Python_Scikit Learn_Confusion Matrix - Fatal编程技术网

Python 如何使sklearn.metrics.confusion_matrix()始终返回TP、TN、FP、FN?

Python 如何使sklearn.metrics.confusion_matrix()始终返回TP、TN、FP、FN?,python,scikit-learn,confusion-matrix,Python,Scikit Learn,Confusion Matrix,我正在使用sklearn.metrics.confusion\u matrix(y\u actual,y\u predict) from sklearn.metrics import confusion_matrix y_actual, y_predict = [1,1,1,1], [0,0,0,0] tn, fp, fn, tp = confusion_matrix(y_actual, y_predict).ravel() >>> [0 0 4 0] # ok y_a

我正在使用sklearn.metrics.confusion\u matrix(y\u actual,y\u predict)

from sklearn.metrics import confusion_matrix

y_actual, y_predict = [1,1,1,1], [0,0,0,0]
tn, fp, fn, tp = confusion_matrix(y_actual, y_predict).ravel()
>>> [0 0 4 0]   # ok

y_actual, y_predict = [1,1,1,1],[0,1,0,1]
tn, fp, fn, tp = confusion_matrix(y_actual, y_predict).ravel()
>>> [0 0 2 2]   # ok
但是,在某些情况下,混淆矩阵()并不总是返回这些信息,我会得到ValueError,如下所示

from sklearn.metrics import confusion_matrix

y_actual, y_predict = [0,0,0,0],[0,0,0,0]
tn, fp, fn, tp = confusion_matrix(y_actual, y_predict).ravel()
>>> [4]    # ValueError: not enough values to unpack (expected 4, got 1)

y_actual, y_predict = [1,1,1,1],[1,1,1,1]
tn, fp, fn, tp = confusion_matrix(y_actual, y_predict).ravel()
>>> [4]    # ValueError: not enough values to unpack (expected 4, got 1)
我的临时解决方案是编写自己的函数来提取这些信息。是否有任何方法可以强制混淆矩阵()始终返回tn、fp、fn、tp输出


谢谢

这个问题与输入矩阵中包含的唯一标签的数量有关。在第二组示例中,它(正确地)仅使用一个类(分别为0或1)构建混淆矩阵

要强制它输出两个类,即使其中一个未被预测,请使用
标签
属性

y_actual, y_predict = [0,0,0,0],[0,0,0,0]
tn, fp, fn, tp = confusion_matrix(y_actual, y_predict, labels=[0,1]).ravel()
>> array([[4, 0],
          [0, 0]])

哇,太完美了!!非常感谢。所以函数是
ravel