import os from time import time import numpy as np from sklearn.linear_model import LogisticRegression import quapy as qp from LocalStack.method import * from quapy.method.aggregative import PACC, EMQ, KDEyML from quapy.model_selection import GridSearchQ from quapy.protocol import UPP from pathlib import Path SEED = 1 METHODS = [ ('PACC', PACC(), {}), ('EMQ', EMQ(), {}), ('KDEy-ML', KDEyML(), {}), ] TRANSDUCTIVE_METHODS = [ ('LSQ', LocalStackingQuantification(EMQ()), {}), ('LSQ2', LocalStackingQuantification2(EMQ()), {}), ('LSQ-torch', LocalStackingQuantification3(EMQ()), {}) ] def show_results(result_path): import pandas as pd df = pd.read_csv(result_path + '.csv', sep='\t') pd.set_option('display.max_columns', None) pd.set_option('display.max_rows', None) pd.set_option('display.width', 1000) # Ajustar el ancho máximo pv = df.pivot_table(index='Dataset', columns="Method", values=["MAE"], margins=True) print(pv) pv = df.pivot_table(index='Dataset', columns="Method", values=["MRAE"], margins=True) print(pv) # pv = df.pivot_table(index='Dataset', columns="Method", values=["KLD"], margins=True) # print(pv) # pv = df.pivot_table(index='Dataset', columns="Method", values=["TR-TIME"], margins=True) # print(pv) # pv = df.pivot_table(index='Dataset', columns="Method", values=["TE-TIME"], margins=True) # print(pv) if __name__ == '__main__': qp.environ['SAMPLE_SIZE'] = 500 qp.environ['N_JOBS'] = -1 n_bags_val = 25 n_bags_test = 100 result_dir = f'results_quantification/localstack' os.makedirs(result_dir, exist_ok=True) global_result_path = f'{result_dir}/allmethods' with open(global_result_path + '.csv', 'wt') as csv: csv.write(f'Method\tDataset\tMAE\tMRAE\tKLD\tTR-TIME\tTE-TIME\n') for method_name, quantifier, param_grid in METHODS + TRANSDUCTIVE_METHODS: with open(global_result_path + '.csv', 'at') as csv: for dataset in qp.datasets.UCI_MULTICLASS_DATASETS: local_result_path = os.path.join(Path(global_result_path).parent, method_name + '_' + dataset + '.dataframe') if os.path.exists(local_result_path): # print(f'result file {local_result_path} already exist; skipping') report = qp.util.load_report(local_result_path) means = report.mean(numeric_only=True) csv.write(f'{method_name}\t{dataset}\t{means["mae"]:.5f}\t{means["mrae"]:.5f}\t{means["kld"]:.5f}\t{means["tr_time"]:.3f}\t{means["te_time"]:.3f}\n') csv.flush() show_results(global_result_path)