Verwirrung Matrix mit der Anzahl der klassifizierten / fehlklassifiziert Instanzen auf sie (Python / Matplotlib)

StackOverflow https://stackoverflow.com/questions/2897826

Frage

Ich bin eine Verwirrung Matrix mit matplotlib mit dem folgenden Code Plotten:

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

Aber ich will die Konfusionsmatrix die Zahlen darauf, wie diese Grafik (der rechte) zu zeigen. Wie kann ich die conf_arr auf der Grafik zeichnen?

War es hilfreich?

Lösung

Sie können mit Text um beliebigen Text in Ihrem Grundstück zu setzen. Zum Beispiel wird die folgenden Zeilen in Ihren Code einfügen, schreibt die Zahlen (man beachte die erste und letzte Zeile aus dem Code sind Ihnen zu zeigen, wo meine Zeilen einfügen):

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)

Andere Tipps

Die einzige Art, wie ich es wirklich war Anmerkungen sehen konnte, zu tun zu verwenden. Versuchen Sie die folgenden Zeilen:

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

vor der Figur zu speichern. Sie fügt hinzu, die Zahlen, aber ich lasse Sie herausfinden, wie die Größe der Zahlen zu bekommen, wie Sie wollen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top