From 74b3703641829baca0e598f6c82c9eeb10763ef5 Mon Sep 17 00:00:00 2001 From: rylon Date: Sat, 15 Jun 2013 23:41:54 +0200 Subject: [PATCH] webmining u4 recall --- .../4_Uebung/code/confusion_matrix.py | 55 ++++++++++++++----- 1 file changed, 42 insertions(+), 13 deletions(-) diff --git a/ss2013/1_Web Mining/Uebungen/4_Uebung/code/confusion_matrix.py b/ss2013/1_Web Mining/Uebungen/4_Uebung/code/confusion_matrix.py index 5580c2f5..32c18c50 100644 --- a/ss2013/1_Web Mining/Uebungen/4_Uebung/code/confusion_matrix.py +++ b/ss2013/1_Web Mining/Uebungen/4_Uebung/code/confusion_matrix.py @@ -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() + \ No newline at end of file