confusion_matrix - 解包

时间:2018-03-01 17:25:10

标签: python list scikit-learn confusion-matrix

我尝试使用confusion_matrix功能,如下所示:

tn, fp, fn, tp = confusion_matrix(y_true, y_predict).ravel()

y_truey_predict都是列表。当我恢复他们的形状时,我得到:(71,)

但是我对上述声明收到以下错误:

ValueError: too many values to unpack

我不确定是不是因为(71,)中的第二个(空)维度?如果这是问题,我不确定如何删除它。

有什么想法吗?

感谢。

2 个答案:

答案 0 :(得分:2)

如果输出数量确定,则只能动态分配多个变量。如果将confusion_matrix的结果分配给单个变量,则可以在循环中检查其内容并有条件地分配内容:

returned = confusion_matrix(y_true, y_predict).ravel()

for var in returned:
    #... do stuff with each item in the returned collection

你也可以检查它的长度,如果它是4,你可以照常进行:

if len(returned) == 4:
    tn, fp, fn, tp = returned

答案 1 :(得分:0)

您尝试执行的行 tn, fp, fn, tp = confusion_matrix(y_true, y_predict).ravel() 仅在输出中有 2 个类(二进制分类)时才有效。但是,您得到的错误表明您有 2 个以上的类(多类分类)。在这种情况下,tn, fp, fn, tp 没有意义。相反,您可以可视化混淆矩阵(例如,使用热图)。