From 493fb931a92c62038b33eb5c30c32dde17095986 Mon Sep 17 00:00:00 2001 From: Lorenzo Volpi Date: Fri, 3 Nov 2023 23:29:05 +0100 Subject: [PATCH] pacc added to methods --- quacc/evaluation/method.py | 65 +++++++++++++++++++++++++++++++++++++- 1 file changed, 64 insertions(+), 1 deletion(-) diff --git a/quacc/evaluation/method.py b/quacc/evaluation/method.py index d50ccab..ac6b624 100644 --- a/quacc/evaluation/method.py +++ b/quacc/evaluation/method.py @@ -2,7 +2,7 @@ import inspect from functools import wraps import numpy as np -from quapy.method.aggregative import SLD +from quapy.method.aggregative import PACC, SLD from quapy.protocol import UPP, AbstractProtocol from sklearn.linear_model import LogisticRegression @@ -127,3 +127,66 @@ def mul_sld_gs(c_model, validation, protocol) -> EvaluationReport: estimator=est, protocol=protocol, ) + + +@method +def bin_pacc(c_model, validation, protocol) -> EvaluationReport: + est = BQAE(c_model, PACC(LogisticRegression(), recalib="bcts")) + est.fit(validation) + return evaluation_report( + estimator=est, + protocol=protocol, + ) + + +@method +def mul_pacc(c_model, validation, protocol) -> EvaluationReport: + est = MCAE(c_model, PACC(LogisticRegression(), recalib="bcts")) + est.fit(validation) + return evaluation_report( + estimator=est, + protocol=protocol, + ) + + +@method +def bin_pacc_gs(c_model, validation, protocol) -> EvaluationReport: + v_train, v_val = validation.split_stratified(0.6, random_state=0) + model = BQAE(c_model, PACC(LogisticRegression())) + est = GridSearchAE( + model=model, + param_grid={ + "q__classifier__C": np.logspace(-3, 3, 7), + "q__classifier__class_weight": [None, "balanced"], + "q__recalib": [None, "bcts", "vs"], + }, + refit=False, + protocol=UPP(v_val, repeats=100), + verbose=False, + ).fit(v_train) + return evaluation_report( + estimator=est, + protocol=protocol, + ) + + +@method +def mul_pacc_gs(c_model, validation, protocol) -> EvaluationReport: + v_train, v_val = validation.split_stratified(0.6, random_state=0) + model = MCAE(c_model, PACC(LogisticRegression())) + est = GridSearchAE( + model=model, + param_grid={ + "q__classifier__C": np.logspace(-3, 3, 7), + "q__classifier__class_weight": [None, "balanced"], + "q__recalib": [None, "bcts", "vs"], + }, + refit=False, + protocol=UPP(v_val, repeats=100), + verbose=False, + ).fit(v_train) + return evaluation_report( + estimator=est, + protocol=protocol, + method_name="bin_sld_gs", + )