1
0
Fork 0

switching

This commit is contained in:
Alejandro Moreo Fernandez 2023-07-16 18:43:40 +02:00
parent 72c63fff09
commit 9ad4503153
2 changed files with 21 additions and 17 deletions

View File

@ -3,11 +3,11 @@ import quapy as qp
import os import os
from sklearn.linear_model import LogisticRegression from sklearn.linear_model import LogisticRegression
from sklearn.preprocessing import StandardScaler from sklearn.preprocessing import StandardScaler
from Ordinal.model import RegressionQuantification, LogisticAT, LogisticSE, LogisticIT, LAD, OrdinalRidge from Ordinal.model import LogisticAT, LogisticSE, LogisticIT, LAD, OrdinalRidge #, RegressionQuantification
from quapy.method.aggregative import PACC, CC, EMQ, PCC, ACC from quapy.method.aggregative import PACC, CC, EMQ, PCC, ACC
from os.path import join from os.path import join
from utils import load_samples_folder, load_single_sample_pkl from utils import load_samples_folder, load_single_sample_pkl
from evaluation import nmd, mnmd from Ordinal.evaluation import nmd, mnmd
from tqdm import tqdm from tqdm import tqdm
@ -37,11 +37,11 @@ def quantifiers():
yield 'PACC(OLR-AT)', PACC(LogisticAT()), params_OLR yield 'PACC(OLR-AT)', PACC(LogisticAT()), params_OLR
yield 'SLD(OLR-AT)', EMQ(LogisticAT()), params_OLR yield 'SLD(OLR-AT)', EMQ(LogisticAT()), params_OLR
yield 'CC(OLR-SE)', CC(LogisticSE()), params_OLR # yield 'CC(OLR-SE)', CC(LogisticSE()), params_OLR
yield 'PCC(OLR-SE)', PCC(LogisticSE()), params_OLR # yield 'PCC(OLR-SE)', PCC(LogisticSE()), params_OLR
yield 'ACC(OLR-SE)', ACC(LogisticSE()), params_OLR # yield 'ACC(OLR-SE)', ACC(LogisticSE()), params_OLR
yield 'PACC(OLR-SE)', PACC(LogisticSE()), params_OLR # yield 'PACC(OLR-SE)', PACC(LogisticSE()), params_OLR
yield 'SLD(OLR-SE)', EMQ(LogisticSE()), params_OLR # yield 'SLD(OLR-SE)', EMQ(LogisticSE()), params_OLR
yield 'CC(OLR-IT)', CC(LogisticIT()), params_OLR yield 'CC(OLR-IT)', CC(LogisticIT()), params_OLR
yield 'PCC(OLR-IT)', PCC(LogisticIT()), params_OLR yield 'PCC(OLR-IT)', PCC(LogisticIT()), params_OLR
@ -53,6 +53,7 @@ def quantifiers():
# regression-based ordinal regression (see https://pythonhosted.org/mord/) # regression-based ordinal regression (see https://pythonhosted.org/mord/)
yield 'CC(LAD)', CC(LAD()), params_SVR yield 'CC(LAD)', CC(LAD()), params_SVR
yield 'ACC(LAD)', ACC(LAD()), params_SVR yield 'ACC(LAD)', ACC(LAD()), params_SVR
yield 'CC(ORidge)', CC(OrdinalRidge()), params_Ridge yield 'CC(ORidge)', CC(OrdinalRidge()), params_Ridge
yield 'ACC(ORidge)', ACC(OrdinalRidge()), params_Ridge yield 'ACC(ORidge)', ACC(OrdinalRidge()), params_Ridge
@ -60,7 +61,7 @@ def quantifiers():
def run_experiment(params): def run_experiment(params):
qname, q, param_grid = params qname, q, param_grid = params
qname += posfix qname += posfix
resultfile = join(resultpath, f'{qname}.all.csv') resultfile = join(resultpath, f'{qname}.all.APP-OQ.csv')
if os.path.exists(resultfile): if os.path.exists(resultfile):
print(f'result file {resultfile} already exists: continue') print(f'result file {resultfile} already exists: continue')
return None return None
@ -105,16 +106,16 @@ def run_experiment(params):
print(f'{qname}: {mean_nmd:.4f} +-{std_nmd:.4f}') print(f'{qname}: {mean_nmd:.4f} +-{std_nmd:.4f}')
report.to_csv(resultfile, index=False) report.to_csv(resultfile, index=False)
print('[learning regressor-based adjustment]') # print('[learning regressor-based adjustment]')
q = RegressionQuantification(q.best_model(), val_samples_generator=load_dev_samples) # q = RegressionQuantification(q.best_model(), val_samples_generator=load_dev_samples)
q.fit(None) # q.fit(None)
report = qp.evaluation.gen_prevalence_report(q, gen_fn=load_test_samples, error_metrics=[nmd]) # report = qp.evaluation.gen_prevalence_report(q, gen_fn=load_test_samples, error_metrics=[nmd])
mean_nmd = report['nmd'].mean() # mean_nmd = report['nmd'].mean()
std_nmd = report['nmd'].std() # std_nmd = report['nmd'].std()
print(f'[{qname} regression-correction] {mean_nmd:.4f} +-{std_nmd:.4f}') # print(f'[{qname} regression-correction] {mean_nmd:.4f} +-{std_nmd:.4f}')
resultfile = join(resultpath, f'{qname}.all.reg.csv') # resultfile = join(resultpath, f'{qname}.all.reg.csv')
report.to_csv(resultfile, index=False) # report.to_csv(resultfile, index=False)
return hyperparams return hyperparams

View File

@ -12,6 +12,9 @@ import quapy as qp
from quapy.data import LabelledCollection from quapy.data import LabelledCollection
def jaggedness(p):
return (1/min(6, len(p)+1)) * sum((-p_prev + 2*p_i - p_next)**2 for p_prev, p_i, p_next in zip(p[:-2], p[1:-1], p[2:]))
def load_simple_sample_npytxt(parentdir, filename, classes=None): def load_simple_sample_npytxt(parentdir, filename, classes=None):
samplepath = join(parentdir, filename+'.txt') samplepath = join(parentdir, filename+'.txt')