繁体   English   中英

如何制作彩色混淆矩阵(热图)? 或者,显示完整的矩阵?

[英]How can I make a colored Confusion Matrix (heatmap)? Or, show the full matrix?

我正在绘制一个混淆矩阵,显示总共 26 个类(26 个字母)的预测与实际。

我的代码如下:

y_pred = np.argmax(predictions, axis=1) # Transform predictions into 1-D array with label number

pd.DataFrame(confusion_matrix(y_test, y_pred), 
             columns=["pA", "pB", "pC", "pD", "pE", "pF", "pG", "pH", "pI", "pJ", "pK", "pL", "pM", "pN", "pO", "pP", "pQ", "pR", "pS", "pT", "pU", "pV", "pW", "pX", "pY", "pZ"],
             index=["aA", "aB", "aC", "aD", "aE", "aF", "aG", "aH", "aI", "aJ", "aK", "aL", "aM", "aN", "aO", "aP", "aQ", "aR", "aS", "aT", "aU", "aV", "aW", "aX", "aY", "aZ"])

我的 Output 看起来像这样:

在此处输入图像描述 问题是,我怎样才能显示整个行/列(没有...)或者使它在视觉上更令人愉悦和易于查看,我怎样才能将它更改为彩色版本,即使它我也可以不显示数字。

感谢您抽出时间来 go 并帮助我解决这个问题,干杯!

您可以将 dataframe 视为图像:

import matplotlib.pyplot as plt

df = pd.DataFrame(confusion_matrix(y_test, y_pred), 
         columns=["pA", "pB", "pC", "pD", "pE", "pF", "pG", "pH", "pI", "pJ", "pK", "pL", "pM", "pN", "pO", "pP", "pQ", "pR", "pS", "pT", "pU", "pV", "pW", "pX", "pY", "pZ"],
         index=["aA", "aB", "aC", "aD", "aE", "aF", "aG", "aH", "aI", "aJ", "aK", "aL", "aM", "aN", "aO", "aP", "aQ", "aR", "aS", "aT", "aU", "aV", "aW", "aX", "aY", "aZ"])

plt.imshow(df[:])

编辑:

您可以使用 plt.annotate 添加值:

cols = ["pA", "pB", "pC", "pD", "pE", "pF", "pG", "pH", "pI", "pJ", "pK", "pL", "pM", "pN", "pO", "pP", "pQ", "pR", "pS", "pT", "pU", "pV", "pW", "pX", "pY", "pZ"]
ix=["aA", "aB", "aC", "aD", "aE", "aF", "aG", "aH", "aI", "aJ", "aK", "aL", "aM", "aN", "aO", "aP", "aQ", "aR", "aS", "aT", "aU", "aV", "aW", "aX", "aY", "aZ"]
data = np.random.randint(0,10,(len(cols), len(ix)))
df = pd.DataFrame(data=data, 
         columns=cols,
         index=ix)

plt.figure(figsize=(10,10))
plt.imshow(df[:])

for r, (i, row) in enumerate(df.iterrows()):
    for c, entry in enumerate(row):
        plt.annotate(entry, xy=(c-0.3,r+.1), fontsize=8) # using annotate with offset for xy, to allow better positioning

在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM