热图中转置混淆矩阵的原因
reason for transposed confusion matrix in heatmap
我绘制了一个热图,它将混淆矩阵作为输入数据。混淆矩阵的形状为:
[[37 0 0 0 0 0 0 0 0 0]
[ 0 42 0 0 0 1 0 0 0 0]
[ 1 0 43 0 0 0 0 0 0 0]
[ 0 0 0 44 0 0 0 0 1 0]
[ 0 0 0 0 37 0 0 1 0 0]
[ 0 0 0 0 0 47 0 0 0 1]
[ 0 0 0 0 0 0 52 0 0 0]
[ 0 0 0 0 1 0 0 47 0 0]
[ 0 1 0 1 0 0 0 1 45 0]
[ 0 0 0 0 0 2 0 0 0 45]]
绘制热图的代码是:
fig2=plt.figure()
fig2.add_subplot(111)
sns.heatmap(confm.T,annot=True,square=True,cbar=False,fmt="d")
plt.xlabel("true label")
plt.ylabel("predicted label")
产生:
如您所见,输入矩阵 "confm" 被转置 (confm.T)。这是什么原因?我必须这样做吗?
当我用你提供的代码绘制你的数据时,我得到了这个:
没有转置并且交换 x 和 y 标签时你得到:
fig2=plt.figure()
fig2.add_subplot(111)
sns.heatmap(confm,annot=True,square=True,cbar=False,fmt="d")
plt.xlabel("predicted label")
plt.ylabel("true label")
这导致相同的混淆矩阵。转置真正做的是交换哪个是预测,哪个是基本事实(真实标签)。您需要使用什么取决于数据的格式。
只有当你想切换沿着哪个轴放置哪些数据时才需要转置。我通常按原样使用混淆矩阵:y - 真实标签,x - 预测标签。仅当您喜欢时才需要转置矩阵和交换标签,反之亦然:y - 预测标签,x - 真实标签。
我绘制了一个热图,它将混淆矩阵作为输入数据。混淆矩阵的形状为:
[[37 0 0 0 0 0 0 0 0 0]
[ 0 42 0 0 0 1 0 0 0 0]
[ 1 0 43 0 0 0 0 0 0 0]
[ 0 0 0 44 0 0 0 0 1 0]
[ 0 0 0 0 37 0 0 1 0 0]
[ 0 0 0 0 0 47 0 0 0 1]
[ 0 0 0 0 0 0 52 0 0 0]
[ 0 0 0 0 1 0 0 47 0 0]
[ 0 1 0 1 0 0 0 1 45 0]
[ 0 0 0 0 0 2 0 0 0 45]]
绘制热图的代码是:
fig2=plt.figure()
fig2.add_subplot(111)
sns.heatmap(confm.T,annot=True,square=True,cbar=False,fmt="d")
plt.xlabel("true label")
plt.ylabel("predicted label")
产生:
如您所见,输入矩阵 "confm" 被转置 (confm.T)。这是什么原因?我必须这样做吗?
当我用你提供的代码绘制你的数据时,我得到了这个:
没有转置并且交换 x 和 y 标签时你得到:
fig2=plt.figure()
fig2.add_subplot(111)
sns.heatmap(confm,annot=True,square=True,cbar=False,fmt="d")
plt.xlabel("predicted label")
plt.ylabel("true label")
这导致相同的混淆矩阵。转置真正做的是交换哪个是预测,哪个是基本事实(真实标签)。您需要使用什么取决于数据的格式。
只有当你想切换沿着哪个轴放置哪些数据时才需要转置。我通常按原样使用混淆矩阵:y - 真实标签,x - 预测标签。仅当您喜欢时才需要转置矩阵和交换标签,反之亦然:y - 预测标签,x - 真实标签。