gpt4 book ai didi

python - 如何仅注释 seaborn 热图的对角线元素

转载 作者:行者123 更新时间:2023-12-01 06:51:44 30 4
gpt4 key购买 nike

我正在使用 Seaborn 热图来绘制大型混淆矩阵的输出。由于对角线元素代表正确的预测,因此它们更重要的是显示数量/正确率。正如问题所示,如何仅注释热图中的对角线条目?

我查阅过这个网站https://seaborn.pydata.org/examples/many_pairwise_correlations.html ,但它对于如何仅注释对角线条目没有帮助。希望有人能帮忙解决这个问题。预先感谢您!

最佳答案

这有助于您理解您的想法吗?您给出的 URL 示例没有对角线,我在主对角线下方注释了对角线。要注释您的混淆矩阵对角线,您可以通过将 np.diag(..., -1) 中的 -1 值更改为 0 来适应我的代码。

请注意我在 sns.heatmap(...) 中添加的附加参数 fmt='',因为我的 annot 矩阵元素是字符串。

代码

from string import ascii_letters
import numpy as np
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

sns.set(style="white")

# Generate a large random dataset
rs = np.random.RandomState(33)
y = rs.normal(size=(100, 26))
d = pd.DataFrame(data=y, columns=list(ascii_letters[26:]))

# Compute the correlation matrix
corr = d.corr()

# Generate a mask for the upper triangle
mask = np.zeros_like(corr, dtype='bool')
mask[np.triu_indices_from(mask)] = True

# Set up the matplotlib figure
f, ax = plt.subplots(figsize=(11, 9))

# Generate a custom diverging colormap
cmap = sns.diverging_palette(220, 10, as_cmap=True)

# Generate the annotation
annot = np.diag(np.diag(corr.values,-1),-1)
annot = np.round(annot,2)
annot = annot.astype('str')
annot[annot=='0.0']=''

# Draw the heatmap with the mask and correct aspect ratio
sns.heatmap(corr, mask=mask, cmap=cmap, vmax=.3, center=0,
square=True, linewidths=.5, cbar_kws={"shrink": .5}, annot=annot, fmt='')

plt.show()

输出 enter image description here

关于python - 如何仅注释 seaborn 热图的对角线元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58961290/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com