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")