Source code for WORC.export.hyper_params_exporter

from WORC.IOparser.config_io_classifier import load_config
from WORC.classification.construct_classifier import create_param_grid
from WORC.classification.trainclassifier import add_parameters_to_grid
from WORC.classification.AdvancedSampler import log_uniform, discrete_uniform, boolean_uniform
from scipy.stats._distn_infrastructure import rv_frozen

printers = {
    log_uniform: lambda x: '$\mathcal{U}^l(' + str(x.base) + '^{' + str(x.loc) + '}, ' + str(x.base) + '^{' + str(
        x.loc + x.scale) + '})$',
    discrete_uniform: lambda x: '$\mathcal{U}^d(' + str(x.loc) + ', ' + str(x.loc + x.scale) + ')$',
    rv_frozen: lambda x: '$\mathcal{U}(' + str(x.kwds['loc']) + ', ' + str(x.kwds['loc'] + x.kwds['scale']) + ')$',
    boolean_uniform: lambda x: '$\mathcal{B}(' + str(x.threshold) + ')$',
    list: lambda x: '{[' + ', '.join([str(y).replace('_', '\_') for y in x]) + ']}'
}

exclude = [  # exclude certain params as they are not part of hyp par optim
    'FeatureScaling_skip_features',
    'FeatPreProcess',
    'OneHotEncoding_feature_labels_tofit',
]

printer_types = tuple(printers.keys())


[docs]def export_hyper_params_to_latex(config_file_path, output_file_path): config = load_config(config_file_path) param_grid = create_param_grid(config) params = add_parameters_to_grid(param_grid, config) table_out = '' for param in sorted(params.keys()): if param in exclude: continue distri = params[param] if isinstance(distri, printer_types): tex = printers[distri.__class__](distri) table_out += param.replace("_", "\\_") + f' & {tex} ' + '\\\\ \\hline\n' else: raise ValueError(f'Could not map {param} - {distri.__dict__}') table = """\\begin{table}[] \\begin{tabular}{l|l} """ + table_out + """ \\end{tabular} \\end{table} """ with open(output_file_path, 'w') as fh: fh.write(table)