Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/276.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的多类多标签混淆矩阵_Python_Scikit Learn_Confusion Matrix - Fatal编程技术网

Python 基于Sklearn的多类多标签混淆矩阵

Python 基于Sklearn的多类多标签混淆矩阵,python,scikit-learn,confusion-matrix,Python,Scikit Learn,Confusion Matrix,我正在处理来自分类器的多类多标签输出。类的总数为14个,实例可以关联多个类。例如: y_true = np.array([[0,0,1], [1,1,0],[0,1,0]) y_pred = np.array([[0,0,1], [1,0,1],[1,0,0]) 我现在制作困惑矩阵的方式: matrix = confusion_matrix(y_true.argmax(axis=1), y_pred.argmax(axis=1)) print(matrix) 其输出如下所示: [[ 79

我正在处理来自分类器的多类多标签输出。类的总数为14个,实例可以关联多个类。例如:

y_true = np.array([[0,0,1], [1,1,0],[0,1,0])
y_pred = np.array([[0,0,1], [1,0,1],[1,0,0])
我现在制作困惑矩阵的方式:

matrix = confusion_matrix(y_true.argmax(axis=1), y_pred.argmax(axis=1))
print(matrix)
其输出如下所示:

[[ 79   0   0   0  66   0   0 151   1   8   0   0   0   0]
 [  4   0   0   0  11   0   0  27   0   0   0   0   0   0]
 [ 14   0   0   0  21   0   0  47   0   1   0   0   0   0]
 [  1   0   0   0   4   0   0  25   0   0   0   0   0   0]
 [ 18   0   0   0  50   0   0  63   0   3   0   0   0   0]
 [  4   0   0   0   3   0   0  19   0   0   0   0   0   0]
 [  2   0   0   0   3   0   0  11   0   2   0   0   0   0]
 [ 22   0   0   0  20   0   0 138   1   5   0   0   0   0]
 [ 12   0   0   0   9   0   0  38   0   1   0   0   0   0]
 [ 10   0   0   0   3   0   0  40   0   4   0   0   0   0]
 [  3   0   0   0   3   0   0  14   0   3   0   0   0   0]
 [  0   0   0   0   2   0   0   3   0   0   0   0   0   0]
 [  2   0   0   0  11   0   0  32   0   0   0   0   0   0]
 [  0   0   0   0   0   0   0   3   0   0   0   0   0   7]]

现在,我不确定sklearn的混淆矩阵是否能够处理多标签多类数据。有人能帮我吗

您需要做的是生成多个二进制混淆矩阵(因为实际上您有多个二进制标签)

大致如下:

import numpy as np
from sklearn.metrics import confusion_matrix

y_true = np.array([[0,0,1], [1,1,0],[0,1,0]])
y_pred = np.array([[0,0,1], [1,0,1],[1,0,0]])

labels = ["A", "B", "C"]

conf_mat_dict={}

for label_col in range(len(labels)):
    y_true_label = y_true[:, label_col]
    y_pred_label = y_pred[:, label_col]
    conf_mat_dict[labels[label_col]] = confusion_matrix(y_pred=y_pred_label, y_true=y_true_label)


for label, matrix in conf_mat_dict.items():
    print("Confusion matrix for label {}:".format(label))
    print(matrix)
现在,您可以使用(版本0.21)
sklearn.metrics.multilabel\u composition\u matrix

我们尝试为每个示例预测两个标签

import sklearn.metrics as skm
y_true = np.array([
                [0,0], [0,1], [1,1], [0,1], [0,1], [1,1]
              ])
 y_pred = np.array([
                [1,1], [0,1], [0,1], [1,0], [0,1], [1,1] 
              ])

 cm = skm.multilabel_confusion_matrix(y_true, y_pred)
 print(cm)
 print( skm.classification_report(y_true,y_pred))
标签混淆矩阵:

[[[2 2]
  [1 1]]

 [[0 1]
  [1 4]]]
分类报告:

              precision    recall  f1-score   support

         0       0.33      0.50      0.40         2
         1       0.80      0.80      0.80         5

micro avg        0.62      0.71      0.67         7
macro avg        0.57      0.65      0.60         7
weighted avg     0.67      0.71      0.69         7
samples avg      0.67      0.58      0.61         7

妈妈以前告诉我不要在网上和陌生人说话。非常感谢你!您能告诉我哪些元素是TP、TN、FP和FN吗。@以前在多标签混淆矩阵中,真阴性计数为00,假阴性计数为10,真阳性计数为11,假阳性计数为01。参考: