当前位置: 首页 > 知识库问答 >
问题:

Seaborn热图混淆矩阵显示未按预期显示

仉峻
2023-03-14

请指导我的混淆矩阵的热图显示。我尝试了不同的图大小,但没有得到正确的显示。我的代码如下和屏幕截图

def show_confusion_matrix(test_labels,predictions):
    confusion=sk_metrics.confusion_matrix(np.argmax(test_labels,axis=1),np.argmax(predictions,axis=1))
    confusion_normalized=confusion.astype('float')/confusion.sum(axis=1)
    #confusion_normalized=confusion_matrix(np.argmax(y_test,axis=1),np.argmax(predictions,axis=1))
    axis_labels=list(uniquelabel) ## unique labels has 120 dog breed names
    fig,ax=plt.subplots(figsize=(30,70))
    ax=sns.heatmap(confusion_normalized,xticklabels=axis_labels,yticklabels=axis_labels,
                   linewidths=0.10,cmap='Blues',annot=True,fmt='.2f',square=True)
    plt.title('Confusion_matrix')
    plt.ylabel("True Label")
    plt.xlabel("Predicted Label")

show_confusion_matrix(y_test,predictions)  

共有1个答案

年健
2023-03-14

我发现的第一个问题是字体大小

from seaborn import set
from seaborn import set_style

set(font_scale=1.8)
set_style("darkgrid")

或者您可以设置样式whitegrid

你有很多功能,因此我建议你用一个简单的方法来应用蒙版。

from numpy import zeros_like
from numpy import triu_indices_from

mask = zeros_like(confusion_normalized)
mask[triu_indices_from(mask)] = True

您需要使用confusion_normalized,因为您想要绘制标准化的混淆矩阵。

from seaborn import axes_style
from matplotlib.pyplot import subplots

with axes_style("white"):
    f, ax = subplots(figsize=(15, 15))
    ax = heatmap(confusion_normalized, 
                 annot=True, 
                 mask=mask, 
                 vmax=1,
                 vmin=0,
                 square=True, 
                 cmap="YlGnBu",
                 linewidths=1.5, 
                 annot_kws={"size": 18})
    
savefig('heatmap.png')

示例输出

 类似资料:
  • 问题内容: 我确定我忘记了一些非常简单的内容,但是我无法获得某些与Seaborn合作的计划。 如果我做: 然后,我通常使用matplotlib创建的任何图都将获得Seaborn样式(背景为灰色网格)。 但是,如果我尝试执行以下示例之一,例如: pairplot函数返回一个PairGrid对象,但该图未显示。 我有点困惑,因为matplotlib似乎可以正常运行,并且Seaborn样式已应用于其他m

  • 我正在对实际数据和来自分类器的预测数据进行多标签分类。实际数据包括三类(c1、c2和c3),同样,预测数据也包括三类(c1、c2和c3)。数据如下 在多标签分类中,文档可能属于多个类别。在上述数据中,1表示文档属于特定类,0表示文档不属于特定类。 第一行Actual\u数据表示文档属于c1类和c2类,不属于c3类。类似地,第一行predicted\u数据表示文档属于类别c1、c2和c3。 最初我使

  • 我有两个向量,实际值和预测值。两者都是因子类型,有8个级别。第八层实际观测值只有55个,预测值为0。然而,当我制作一个混乱矩阵时,8级观察值消失或以某种方式移动。实际总数的列不应该等于它们的实际计数吗? 我用了两种不同的方法来反复检查。我还尝试显式地使两个向量中的因子级别相同。到目前为止运气不好。

  • 在混淆矩阵中,对角线表示预测标签与正确标签匹配的情况。所以对角线是好的,而所有其他单元格都是坏的。为了澄清非专家的CM中什么是好的,什么是坏的,我想给对角线一个不同于其他颜色的颜色。我想用Python实现这一点 基本上,我试图实现这个问题在R中的作用(ggplot2热图2不同的配色方案-混淆矩阵:与分类不同的配色方案中的匹配) 这将导致此图像: 我想用例如为非对角单元格着色。所以我想象会有2个色条

  • 我试图弄清楚如何使用神经网络为多标签分类任务生成混淆矩阵。我之前设法使用函数“交集”计算准确性,因为对此我不关心任何排序。 然而,为了计算混淆矩阵,我确实关心预测/标签的索引顺序。由于标签的值始终相同(

  • 我是jQuery的新手,我试图在不使用jQuery的切换函数的情况下创建一个show/hide切换按钮,但我不知道下面的代码有什么问题。 “隐藏”按钮可成功隐藏段落。隐藏部分起作用了。它添加了一个类“show”,删除了类“hide”,并更改了按钮的文本。我使用Dev工具来查看这个部分,这个部分正在工作,但是再次点击按钮就不工作了,即show部分。 null null