У меня довольно общий вопрос о матрицах numpy: я попытался нормализовать результаты в зависимости от строк, но у меня возникают некоторые странные белые линии. Это из-за того, что некоторые нули застряли где-то в делении?Белые линии в матрице замешательства?
Вот код:
import numpy as np
from matplotlib.pylab import *
def confusion_matrix(results,tagset):
# results : list of tuples (predicted, true)
# tagset : list of tags
np.seterr(divide='ignore', invalid='ignore')
mat = np.zeros((len(tagset),len(tagset)))
percent = [0,0]
for guessed,real in results :
mat[tagset.index(guessed),tagset.index(real)] +=1
if guessed == real :
percent[0] += 1
percent[1] += 1
else :
percent[1] += 1
mat /= mat.sum(axis=1)[:,np.newaxis]
matshow(mat,fignum=100)
xticks(arange(len(tagset)),tagset,rotation =90,size='x-small')
yticks(arange(len(tagset)),tagset,size='x-small')
colorbar()
show()
#print "\n".join(["\t".join([""]+tagset)]+["\t".join([tagset[i]]+[str(x) for x in
(mat[i,:])]) for i in xrange(mat.shape[1])])
return (percent[0]/float(percent[1]))*100
Спасибо за ваше время! (Я надеюсь, что ответ не слишком очевидна)
Пример изображения может помочь (что такое "странные белые линии"). Чтобы облегчить отладку, вы можете попытаться разделить свой код на две части: одну, которая создает матрицу, и матрицу. Затем в ipython (или другом) запустите первую функцию для получения матрицы. Убедитесь, что в данных нет нулей или NaN для всей строки и что она выглядит так, как вы ожидаете. – daveydave400