我如何制作彩色的混淆矩阵(热图)?还是显示完整矩阵?

问题描述 投票:0回答:1

我正在绘制一个混淆矩阵,显示总共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"])

我的输出看起来像这样:

enter image description here问题是,如何显示整个行/列(不带...),或者使其在视觉上更悦目且更易于查看,如何将其更改为彩色版本,即使可以,也可以不显示数字。

感谢您抽出宝贵的时间来帮助我,欢呼!

python deep-learning jupyter-notebook heatmap confusion-matrix
1个回答
1
投票

您可以将数据框视为图像:

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

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.