78 lines
2.9 KiB
Python
78 lines
2.9 KiB
Python
|
|
def gen_tables(basedir, datasets):
|
|
|
|
|
|
mock_h = LogisticRegression(),
|
|
methods = [method for method, _ in gen_CAP(mock_h, None)] + [method for method, _ in gen_CAP_cont_table(mock_h)]
|
|
classifiers = [classifier for classifier, _ in gen_classifiers()]
|
|
|
|
os.makedirs('./tables', exist_ok=True)
|
|
|
|
with_oracle = 'oracle' in basedir
|
|
|
|
tex_doc = """
|
|
\\documentclass[10pt,a4paper]{article}
|
|
\\usepackage[utf8]{inputenc}
|
|
\\usepackage{amsmath}
|
|
\\usepackage{amsfonts}
|
|
\\usepackage{amssymb}
|
|
\\usepackage{graphicx}
|
|
\\usepackage{tabularx}
|
|
\\usepackage{color}
|
|
\\usepackage{colortbl}
|
|
\\usepackage{xcolor}
|
|
\\begin{document}
|
|
"""
|
|
|
|
for classifier in classifiers:
|
|
for metric in [measure for measure, _ in gen_acc_measure()]:
|
|
|
|
table = Table(datasets, methods, prec_mean=5, clean_zero=True)
|
|
for method, dataset in itertools.product(methods, datasets):
|
|
path = getpath(basedir, classifier, metric, dataset, method)
|
|
if not os.path.exists(path):
|
|
print('missing ', path)
|
|
continue
|
|
results = json.load(open(path, 'r'))
|
|
true_acc = results['true_acc']
|
|
estim_acc = np.asarray(results['estim_acc'])
|
|
if any(np.isnan(estim_acc)):
|
|
print(f'nan values found in {method=} {dataset=}')
|
|
continue
|
|
if any(estim_acc>1.00001):
|
|
print(f'values >1 found in {method=} {dataset=} [max={estim_acc.max()}]')
|
|
continue
|
|
if any(estim_acc<-0.00001):
|
|
print(f'values <0 found in {method=} {dataset=} [min={estim_acc.min()}]')
|
|
continue
|
|
errors = cap_errors(true_acc, estim_acc)
|
|
table.add(dataset, method, errors)
|
|
|
|
tex = table.latexTabular()
|
|
table_name = f'{basedir}_{classifier}_{metric}.tex'
|
|
table_name = table_name.replace('/', '_')
|
|
with open(f'./tables/{table_name}', 'wt') as foo:
|
|
foo.write('\\begin{table}[h]\n')
|
|
foo.write('\\centering\n')
|
|
foo.write('\\resizebox{\\textwidth}{!}{%\n')
|
|
foo.write('\\begin{tabular}{c|'+('c'*len(methods))+'}\n')
|
|
foo.write(tex)
|
|
foo.write('\\end{tabular}%\n')
|
|
foo.write('}\n')
|
|
foo.write('\\caption{Classifier ' + classifier.replace('_', ' ') + ('(oracle)' if with_oracle else '') +
|
|
' evaluated in terms of ' + metric.replace('_', ' ') + '}\n')
|
|
foo.write('\\end{table}\n')
|
|
|
|
tex_doc += "\input{" + table_name + "}\n\n"
|
|
|
|
tex_doc += """
|
|
\\end{document}
|
|
"""
|
|
with open(f'./tables/main.tex', 'wt') as foo:
|
|
foo.write(tex_doc)
|
|
|
|
print("[Tables Done] runing latex")
|
|
os.chdir('./tables/')
|
|
os.system('pdflatex main.tex')
|
|
os.system('rm main.aux main.log')
|