混淆矩阵的绘制

import matplotlib.pyplot as plt
from sklearn.metrics import confusion_matrix
import numpy as np
from matplotlib.font_manager import FontProperties
font = FontProperties(fname=r"c:/windows/fonts/simhei.ttf", size=10)

class_list = {"正常":0, "不正常":1, "背景":2}
def plot_confusion_matrix(cm, labels_name, title, colorbar=False, cmap=None):
    plt.imshow(cm, interpolation='nearest', cmap=cmap)    # 在特定的窗口上显示图像
    for i in range(len(cm)):
        for j in range(len(cm)):
            plt.annotate(cm[j, i], xy=(i, j), horizontalalignment='center', verticalalignment='center')
    if colorbar:
        plt.colorbar()
    num_local = np.array(range(len(labels_name)))    
    plt.xticks(num_local, labels_name, fontproperties=font)    # 将标签印在x轴坐标上
    plt.yticks(num_local, labels_name, fontproperties=font)    # 将标签印在y轴坐标上
    plt.title(title)    # 图像标题
    plt.ylabel('True label')    
    plt.xlabel('Predicted label')
    plt.show()



lines = open("D:/res.txt", "r", encoding="utf-8").readlines()

y_true = []
y_pred = []

for line in lines:
    line_sp = line.strip().split(",")
    print(line_sp)
    y_true.append(class_list[line_sp[1]])
    y_pred.append(class_list[line_sp[2]])

    # print()

cm = confusion_matrix(y_true, y_pred)
print(cm)
plot_confusion_matrix(cm, class_list, "Confusion Matrix")