def printGnuplot( key ): import py_stats fr = fullResults # ## Extract keys. files = map( getLocalName, fList ) #learners = map( lambda x : x[0], localStructureLearner ) # Learners in order required by gnuplot scripts. learners = ['CPT', 'logit', 'tree', 'dualCTL', 'FBDe', 'FBDe-Tree'] folds = fr[files[0]][learners[0]].keys() # ## Print Learner Key print "# ", for x in learners: print x, print # ## Print out actual data. for f in files: n = f.split('.')[-1] # Print number of cases print str(n), "\t", for x in learners: data = [] for xx in fr[f][x].values(): if xx.has_key(key): data.append( xx[key] ) if len(data) > 1: print "%4.8f\t" % py_stats.mean(data), else: print "& XXX & XXX", for x in learners: data = [] for xx in fr[f][x].values(): if xx.has_key(key): data.append( xx[key] ) if len(data) > 1: print "%4.8f\t" % py_stats.sterr(data), else: print "& XXX & XXX",
def printAverage( key, sort = True ): import py_stats print "\nTotal - ", key t = {} fr = fullResults netNames = map( getLocalName, fList ) #netNames = fr.keys() #netNames.sort() # Make a consistent ordering. for data in netNames: print "\n",data, key summary = [] for k in localStructureLearner: #fr['balance-scale.arff'].keys(): if fr[data].keys().count(k[0]) == 0: continue k = k[0] t[k] = [] for i in fr[data][k].keys(): ## I think there is a bug here in jython serialisation debug[0] = fr[data][k][i] try: if not isNone(debug[0]):# != None: if fr[data][k][i].has_key(key) and (not isNone(fr[data][k][i][key])): t[k].append( fr[data][k][i][key] ) elif key.endswith(".2") and fr[data][k][i].has_key(key[:-2]) and (not isNone(fr[data][k][i][key[:-2]])): t[k].append( fr[data][k][i][key[:-2]] ) except AttributeError: print "Ignoring exception, probably due to buggy serialisation", debug[0], k, i, str(debug[0]) continue # Do nothing. if len(t[k]) > 1 : summary.append( {"mean":py_stats.mean(t[k]), "sterr":py_stats.sterr(t[k]),"len":len(t[k]), "name": k } ) else: summary.append( {"mean":0, "sterr":0,"len":len(t[k]), "name": k } ) if sort: summary.sort(lambda a,b: a["mean"] > b["mean"]) # for x in summary: print pad(x["name"],11), "\tmean=",x["mean"], "\tsterr=",x["sterr"], "\tlen", x["len"]
def printGnuplot(key): import py_stats fr = fullResults # ## Extract keys. files = map(getLocalName, fList) #learners = map( lambda x : x[0], localStructureLearner ) # Learners in order required by gnuplot scripts. learners = ['CPT', 'logit', 'tree', 'dualCTL', 'FBDe', 'FBDe-Tree'] folds = fr[files[0]][learners[0]].keys() # ## Print Learner Key print "# ", for x in learners: print x, print # ## Print out actual data. for f in files: n = f.split('.')[-1] # Print number of cases print str(n), "\t", for x in learners: data = [] for xx in fr[f][x].values(): if xx.has_key(key): data.append(xx[key]) if len(data) > 1: print "%4.8f\t" % py_stats.mean(data), else: print "& XXX & XXX", for x in learners: data = [] for xx in fr[f][x].values(): if xx.has_key(key): data.append(xx[key]) if len(data) > 1: print "%4.8f\t" % py_stats.sterr(data), else: print "& XXX & XXX",
def printAverage(key, sort=True): import py_stats print "\nTotal - ", key t = {} fr = fullResults netNames = map(getLocalName, fList) #netNames = fr.keys() #netNames.sort() # Make a consistent ordering. for data in netNames: print "\n", data, key summary = [] for k in localStructureLearner: #fr['balance-scale.arff'].keys(): if fr[data].keys().count(k[0]) == 0: continue k = k[0] t[k] = [] for i in fr[data][k].keys(): ## I think there is a bug here in jython serialisation debug[0] = fr[data][k][i] try: if not isNone(debug[0]): # != None: if fr[data][k][i].has_key(key) and (not isNone( fr[data][k][i][key])): t[k].append(fr[data][k][i][key]) elif key.endswith(".2") and fr[data][k][i].has_key( key[:-2]) and (not isNone( fr[data][k][i][key[:-2]])): t[k].append(fr[data][k][i][key[:-2]]) except AttributeError: print "Ignoring exception, probably due to buggy serialisation", debug[ 0], k, i, str(debug[0]) continue # Do nothing. if len(t[k]) > 1: summary.append({ "mean": py_stats.mean(t[k]), "sterr": py_stats.sterr(t[k]), "len": len(t[k]), "name": k }) else: summary.append({ "mean": 0, "sterr": 0, "len": len(t[k]), "name": k }) if sort: summary.sort(lambda a, b: a["mean"] > b["mean"]) # for x in summary: print pad( x["name"], 11 ), "\tmean=", x["mean"], "\tsterr=", x["sterr"], "\tlen", x["len"]
def printLatex(key): import py_stats fr = fullResults # ## Extract keys. files = fr.keys() learners = fr[files[0]].keys() folds = fr[files[0]][learners[0]].keys() # ## Begin printing latex. ## -- Header. print "\\begin{table}[htbp]" print "\t\\centering" print "\t\\scriptsize" print "\t\\begin{tabular}{|c|", for _ in files: print "rr|", print "} \\hline" # ## File names. print "\tDataset ", for f in files: print "& \\multicolumn{2}{|c|}{", f[:-4], "} ", print "\\tabularnewline \\hline \\hline" print "\tMetric ", for _ in files: print "& Mean & SE ", print "\\tabularnewline \\hline" # ## Print out actual data. for x in learners: print "\t" + str(x), "\t", for f in files: data = [] for xx in fr[f][x].values(): if xx.has_key(key): data.append(xx[key]) #print "&", py_stats.mean(data), "& ", py_stats.sterr(data), if len(data) > 1: print "& %4.3f & %4.3f" % (py_stats.mean(data), py_stats.sterr(data)), else: print "& XXX & XXX", print " \\tabularnewline" # ## Print footer. print "\t\\hline" print "\t\\end{tabular}" print "\t\\caption{", key, "}" print "\t\\label{}" print "\\end{table}"
def printLatex( key ): import py_stats fr = fullResults # ## Extract keys. files = fr.keys() learners = fr[files[0]].keys() folds = fr[files[0]][learners[0]].keys() # ## Begin printing latex. ## -- Header. print "\\begin{table}[htbp]" print "\t\\centering" print "\t\\scriptsize" print "\t\\begin{tabular}{|c|", for _ in files: print "rr|", print "} \\hline" # ## File names. print "\tDataset ", for f in files: print "& \\multicolumn{2}{|c|}{",f[:-4],"} ", print "\\tabularnewline \\hline \\hline" print "\tMetric ", for _ in files: print "& Mean & SE ", print "\\tabularnewline \\hline" # ## Print out actual data. for x in learners: print "\t"+str(x), "\t", for f in files: data = [] for xx in fr[f][x].values(): if xx.has_key(key): data.append( xx[key] ) #print "&", py_stats.mean(data), "& ", py_stats.sterr(data), if len(data) > 1: print "& %4.3f & %4.3f" % (py_stats.mean(data), py_stats.sterr(data)), else: print "& XXX & XXX", print " \\tabularnewline"