2010-05-24 32 views
10

Tôi đang âm mưu một ma trận nhầm lẫn với matplotlib với đoạn mã sau:Lẫn lộn Matrix với số phân loại trường hợp/phân loại sai về nó (Python/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") 

Nhưng tôi muốn các ma trận nhầm lẫn để hiển thị những con số trên nó giống như hình ảnh này (hình bên phải). Làm thế nào tôi có thể vẽ conf_arr trên đồ họa?

confusion matrix

+0

wow, mã này có thể đọc được như Đĩa Phaistos – siamii

Trả lời

10

Bạn có thể sử dụng text để đặt văn bản tùy ý trong cốt truyện của mình. Ví dụ, chèn những dòng sau vào code của bạn sẽ viết những con số (chú ý dòng đầu tiên và cuối cùng là từ mã của bạn để cho bạn thấy nơi để chèn dòng của tôi):

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

+0

Cảm ơn bạn đã giải pháp. Nó chính xác làm những gì tôi cần. Chúc mừng! – Pinkie

1

Cách duy nhất tôi thực sự có thể nhìn thấy để làm việc đó là sử dụng các chú thích. Hãy thử các dòng sau:

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

trước khi lưu hình. Nó cho biết thêm các con số, nhưng tôi sẽ cho bạn biết làm thế nào để có được kích thước của các con số như thế nào bạn muốn họ.

+0

Tuyệt vời! Cảm ơn! – Pinkie

Các vấn đề liên quan