python/matplotlib绘制混淆矩阵图


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

你可能感兴趣的:(Python,python,矩阵,开发语言)