Матрица беспорядка с количеством классифицировала/неправильно классифицировала экземпляры на нем (Python/Matplotlib)

Я вывожу матрицу беспорядка на печать с matplotlib со следующим кодом:

from numpy import *
import matplotlib.pyplot as plt
from pylab import *

conf_arr = [[33,2,0,0,0,0,0,0,0,1,3], [3,31,0,0,0,0,0,0,0,0,0], [0,4,41,0,0,0,0,0,0,0,1], [0,1,0,30,0,6,0,0,0,0,1], [0,0,0,0,38,10,0,0,0,0,0], [0,0,0,3,1,39,0,0,0,0,4], [0,2,2,0,4,1,31,0,0,0,2], [0,1,0,0,0,0,0,36,0,2,0], [0,0,0,0,0,0,1,5,37,5,1], [3,0,0,0,0,0,0,0,0,39,0], [0,0,0,0,0,0,0,0,0,0,38] ]

norm_conf = []
for i in conf_arr:
    a = 0
    tmp_arr = []
    a = sum(i,0)
    for j in i:
        tmp_arr.append(float(j)/float(a))
    norm_conf.append(tmp_arr)

plt.clf()
fig = plt.figure()
ax = fig.add_subplot(111)
res = ax.imshow(array(norm_conf), cmap=cm.jet, interpolation='nearest')
cb = fig.colorbar(res)
savefig("confmat.png", format="png")

Но я хочу к матрице беспорядка показать числа на нем как эта диаграмма (правильная). Как я могу вывестись на печать conf_arr на диаграмме?

confusion matrix

10
задан James C. 3 April 2017 в 19:18
поделиться

2 ответа

Вы можете использовать текст , чтобы вставить произвольный текст в ваш сюжет. Например, при вставке следующих строк в код будут записаны числа (обратите внимание, что первая и последняя строки взяты из вашего кода, чтобы показать вам, куда вставить мои строки):

res = ax.imshow(array(norm_conf), cmap=cm.jet, interpolation='nearest')
for i, cas in enumerate(conf_arr):
    for j, c in enumerate(cas):
        if c>0:
            plt.text(j-.2, i+.2, c, fontsize=14)
cb = fig.colorbar(res)

matrix with numbers

10
ответ дан 4 December 2019 в 01:00
поделиться

Единственный способ, которым я действительно мог это сделать, - это использовать аннотации. Попробуйте эти строки:

for i,j in ((x,y) for x in xrange(len(conf_arr))
            for y in xrange(len(conf_arr[0]))):
    ax.annotate(str(conf_arr[i][j]),xy=(i,j))

перед сохранением фигуры. Он складывает числа, но я позволю вам выяснить, как получить размеры чисел, как вы хотите.

1
ответ дан 4 December 2019 в 01:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: