webmining u4 recall

This commit is contained in:
Ulf Gebhardt 2013-06-15 23:41:54 +02:00
parent e65f1c2448
commit 74b3703641

View File

@ -15,6 +15,7 @@ accuracy = 0
document_count = 0
precision = [0,0,0,0,0,0,0,0,0,0,0]
precision_avg = 0
recalls = [0,0,0,0,0,0,0,0,0,0,0]
def load_predictionfile(file):
global document_count
@ -25,12 +26,12 @@ def load_predictionfile(file):
def confusion_matrix():
'''
c1 c2 ... c11
c1
c2
c3
c1 c2 ... c11
is c1
is c2
is c3
...
c11
is c11
'''
for pred in preds:
for c in classes:
@ -73,7 +74,7 @@ def prec():
precision[i] = 0 #division by zero
i += 1
def avg_prec():
def macro_prec():
global precision_avg
global precision
for p in precision:
@ -82,8 +83,8 @@ def avg_prec():
def pp_confusionmatrix():
print "\t\t"+classes[0][0]+"\t"+classes[1][0]+"\t"+classes[2][0]+"\t"+classes[3][0]+"\t"+classes[4][0]+"\t"+classes[5][0]+"\t"+classes[6][0]+"\t"+classes[7][0]+"\t"+classes[8][0]+"\t"+classes[9][0]+"\t"+classes[10][0]
lines = [""+classes[0][0]+"\t",classes[1][0]+"\t",""+classes[2][0]+"\t",classes[3][0]+"\t\t",classes[4][0]+"\t",classes[5][0]+"\t\t",classes[6][0]+"\t\t",classes[7][0]+"\t\t",classes[8][0]+"\t\t",classes[9][0]+"\t\t",classes[10][0]+"\t\t"]
print "is\classed\t"+classes[0][0]+"\t"+classes[1][0]+"\t"+classes[2][0]+"\t"+classes[3][0]+"\t\t"+classes[4][0]+"\t"+classes[5][0]+"\t\t"+classes[6][0]+"\t\t"+classes[7][0]+"\t\t"+classes[8][0]+"\t\t"+classes[9][0]+"\t\t"+classes[10][0]
lines = [classes[0][0]+"\t",classes[1][0]+"\t",classes[2][0]+"\t",classes[3][0]+"\t\t",classes[4][0]+"\t",classes[5][0]+"\t\t",classes[6][0]+"\t\t",classes[7][0]+"\t\t",classes[8][0]+"\t\t",classes[9][0]+"\t\t",classes[10][0]+"\t\t"]
for column in conf_matr:
lines[0] += str(column[0]) + "\t\t"
lines[1] += str(column[1]) + "\t\t"
@ -107,20 +108,48 @@ def pp_prec():
line = "Precision per class: "
i = 0
for p in precision:
line += classes[i][0]+":"+str(round(p*100,4))+" "
line += classes[i][0]+":"+str(round(p*100,4))+"% "
i += 1
print line
def pp_macroprec():
print "Precision Macroavg: "+str(round(precision_avg*100,4))+"%"
def recall():
i = 0
for c in classes:
ok_values = 0
not_okvalues = 0
j = 0
for conf in conf_matr:
if j == i:
ok_values = conf[i]
else:
not_okvalues += conf[i]
j += 1
recalls[i] = float(ok_values) / float(not_okvalues)
i += 1
def pp_recall():
i = 0
line = "Recall per class: "
for c in classes:
line += c[0]+":"+str(round(recalls[i]*100,4))+"% "
i += 1
print line
if __name__ == '__main__':
load_predictionfile(predfile)
#print preds
confusion_matrix()
pp_confusionmatrix()
#print conf_matr
accuracy()
pp_accuracy()
prec()
pp_prec()
avg_prec()
print precision_avg
pp_prec()
macro_prec()
pp_macroprec()
recall()
pp_recall()