Matplotlib 混淆矩阵输出缺少多标签分类的某些标签

Matplotlib 混淆矩阵输出缺少多标签分类的某些标签,matplotlib,confusion-matrix,multilabel-classification,Matplotlib,Confusion Matrix,Multilabel Classification,我很难创建多标签分类的分类矩阵来评估MLPClassizer模型的性能。混淆矩阵输出应该是10x10,但我得到的是8x8,因为它没有显示9和10的标签值。true和predicted标签的类标签从1到10(无序)。代码的实现如下所示: import matplotlib.pyplot as plt import seaborn as sns side_bar = [1,2,3,4,5,6,7,8,9,10] f, ax = plt.subplots(figsize

我很难创建多标签分类的分类矩阵来评估MLPClassizer模型的性能。混淆矩阵输出应该是10x10,但我得到的是8x8,因为它没有显示9和10的标签值。true和predicted标签的类标签从1到10(无序)。代码的实现如下所示:

    import matplotlib.pyplot as plt
    import seaborn as sns
    side_bar = [1,2,3,4,5,6,7,8,9,10]
    f, ax = plt.subplots(figsize=(12,12))
    sns.heatmap(cm, annot=True, linewidth=.5, linecolor="r", fmt=".0f", ax = ax)
    ax.set_xticklabels(side_bar)
    ax.set_yticklabels(side_bar)
    plt.xlabel('Predicted Label')
    plt.ylabel('True Label')
    plt.show()

编辑:构建的混淆矩阵的代码和输出如下:

from sklearn.metrics import confusion_matrix
cm = confusion_matrix(y_test, y_pred)
print(cm)
str(cm)

   [[20  0  0  1  0  5  1  0]
   [ 3  0  0  0  0  0  0  0]
   [ 1  1  0  1  0  1  0  0]
   [ 3  0  0  0  0  3  1  1]
   [ 0  0  0  0  0  1  0  0]
   [ 3  0  0  1  0  2  1  1]
   [ 3  0  0  0  0  0  0  2]
   [ 1  0  0  0  0  0  0  1]]

  '[[20  0  0  1  0  5  1  0]\n [ 3  0  0  0  0  0  0  0]\n [ 1  1  0  1  0  
   1  0  0]\n [ 3  0  0  0  0  3  1  1]\n [ 0  0  0  0  0  1  0  0]\n [ 3  0  
   0  1  0  2  1  1]\n [ 3  0  0  0  0  0  0  2]\n [ 1  0  0  0  0  0  0  
   1]]'

有谁能为我提供一个解决方案来解决这个问题吗?

如果您的阵列
cm
是8x8,将创建8x8热图。您可能需要添加一些虚拟数据来创建一个可复制的示例。正如我在前面的评论中所说,混淆矩阵数组cm应该是10x10,但cm输出显示为8x8。你可能想看一看混乱矩阵热图来了解情况。我如何添加虚拟数据?好吧,你的混淆矩阵数组显然不是10x10。你是怎么计算的?您可以添加一个虚拟的10x10混淆矩阵作为
cm=np.random.rand(10,10)
,但它将显示一个10x10热图。你也可以发布并添加
str(cm)
的输出,向人们展示你的矩阵是什么样子。我编辑了帖子并添加了构建的混淆矩阵的代码和输出。我检查了,你对包含8个不同值的y_pred和y_测试都是正确的。