好看的混淆矩阵

网上绘制的混淆矩阵都不太满意。。。经过本人多次实验,如下混淆矩阵最为美观,特此记录

import matplotlib
matplotlib.use('Agg')
from matplotlib import rcParams

import matplotlib.pyplot as plt
import numpy as np

# 给定混淆矩阵
cm = np.array([[6839, 1609],
               [311, 0]])

proportion = []
length = len(cm)

# 计算每个单元格的比例
for i in cm:
    for j in i:
        temp = j / (np.sum(i))
        proportion.append(temp)

pshow = []
for i in proportion:
    pt = "%.2f%%" % (i * 100)
    pshow.append(pt)

proportion = np.array(proportion).reshape(length, length)
pshow = np.array(pshow).reshape(length, length)

config = {
    "font.family": 'Times New Roman',  # 设置字体类型
}
rcParams.update(config)

# 绘制混淆矩阵
plt.imshow(proportion, interpolation='nearest', cmap=plt.cm.Blues)
plt.title("Confusion Matrix", fontsize=20)
plt.colorbar()
classes = ["Car", "Backgroud"]
tick_marks = np.arange(len(classes))
plt.xticks(tick_marks, classes, fontsize=17)
plt.yticks(tick_marks, classes, fontsize=17)

iters = np.reshape([[[i, j] for j in range(length)] for i in range(length)], (cm.size, 2))
for i, j in iters:
    if (i == j):
        plt.text(j, i - 0.12, format(cm[i, j]), va='center', ha='center', fontsize=18,
                 color='white', weight=5)
        plt.text(j, i + 0.12, pshow[i, j], va='center', ha='center', fontsize=17, color='white')
    else:
        plt.text(j, i - 0.12, format(cm[i, j]), va='center', ha='center', fontsize=18)
        plt.text(j, i + 0.12, pshow[i, j], va='center', ha='center', fontsize=17)

plt.ylabel('True Label', fontsize=18)
plt.xlabel('Predict Label', fontsize=18)
plt.tight_layout()

# 保存图像
plt.savefig('confusion_matrix.png')

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

WiIsonEdwards

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值