from sklearn.metrics import confusion_matrix, f1_score, multilabel_confusion_matrix
from operator import truediv
import numpy
import matplotlib.pyplot as plt
if __name__ == "__main__":
confusion = numpy.array((
[0, 2, 3 , 5, 3, 6],
[1, 0, 1 , 0, 0 , 1],
[ 6 , 1, 0 , 4 , 1 , 2],
[ 7 , 1 , 0 ,0 , 10 , 4],
[ 2 , 2 , 1 , 16 ,0 , 9],
[ 8 , 3, 4 , 9 , 6 ,0]))
# plt.matshow(cf_matrix,cmap=plt.cm.gray)
# plt.savefig('true.jpg')
# row_sum = numpy.sum(cf_matrix,axis=1)
# err_matrix = cf_matrix / row_sum
# numpy.fill_diagonal(err_matrix,0)
# # plt.matshow(err_matrix,cmap=plt.cm.gray)
# plt.matshow(err_matrix)
# plt.savefig('false.jpg')
# 热度图,后面是指定的颜色块,可设置其他的不同颜色
plt.imshow(confusion, cmap=plt.cm.Blues)
# plt.imshow(confusion)
# ticks 坐标轴的坐标点
# label 坐标轴标签说明
indices = range(len(confusion))
# 第一个是迭代对象,表示坐标的显示顺序,第二个参数是坐标轴显示列表
plt.xticks(indices, [0, 1, 2, 3, 4, 5])
plt.yticks(indices, [0, 1, 2, 3, 4, 5])
plt.colorbar()
plt.xlabel('Predict')
plt.ylabel('GT')
plt.title('cf_matrix')
# plt.rcParams两行是用于解决标签不能显示汉字的问题
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams["font.family"] = "sans-serif"
plt.rcParams['axes.unicode_minus'] = False
# 显示数据
for first_index in range(len(confusion)): #第几行
for second_index in range(len(confusion[first_index])): #第几列
# plt.text(first_index, second_index, confusion[first_index][second_index])
plt.text(first_index, second_index, confusion[second_index][first_index])
# 在matlab里面可以对矩阵直接imagesc(confusion)
# 显示
plt.show()
plt.savefig('false2.jpg')