diff --git a/quapy/CHANGE_LOG.txt b/CHANGE_LOG.txt similarity index 100% rename from quapy/CHANGE_LOG.txt rename to CHANGE_LOG.txt diff --git a/README.md b/README.md index 12164a3..d9f697c 100644 --- a/README.md +++ b/README.md @@ -13,7 +13,7 @@ for facilitating the analysis and interpretation of the experimental results. ### Last updates: -* Version 0.1.8 is released! major changes can be consulted [here](quapy/CHANGE_LOG.txt). +* Version 0.1.8 is released! major changes can be consulted [here](CHANGE_LOG.txt). * A detailed documentation is now available [here](https://hlt-isti.github.io/QuaPy/) * The developer API documentation is available [here](https://hlt-isti.github.io/QuaPy/build/html/modules.html) diff --git a/quapy/method/aggregative.py b/quapy/method/aggregative.py index 1fb693c..e07213d 100644 --- a/quapy/method/aggregative.py +++ b/quapy/method/aggregative.py @@ -355,8 +355,11 @@ class ACC(AggregativeCrispQuantifier): binary) and `B` is the vector of prevalence values estimated via CC, as $x=A^{-1}B$. This solution might not exist for degenerated classifiers, in which case the method defaults to classify and count (i.e., does not attempt any adjustment). - Another option is to search for the prevalence vector that minimizes the loss |Ax-B|. The latter is + Another option is to search for the prevalence vector that minimizes the L2 norm of |Ax-B|. The latter is achieved by indicating solver='minimize'. This one generally works better, and is the default parameter. + More details about this can be consulted in `Bunse, M. "On Multi-Class Extensions of Adjusted Classify and + Count", on proceedings of the 2nd International Workshop on Learning to Quantify: Methods and Applications + (LQ 2022), ECML/PKDD 2022, Grenoble (France) `_. """ def __init__(self, classifier: BaseEstimator, val_split=5, n_jobs=None, solver='minimize'): @@ -471,6 +474,18 @@ class PACC(AggregativeSoftQuantifier): for `k`). Alternatively, this set can be specified at fit time by indicating the exact set of data on which the predictions are to be generated. :param n_jobs: number of parallel workers + :param solver: indicates the method to be used for obtaining the final estimates. The choice + 'exact' comes down to solving the system of linear equations `Ax=B` where `A` is a + matrix containing the class-conditional probabilities of the predictions (e.g., the tpr and fpr in + binary) and `B` is the vector of prevalence values estimated via CC, as $x=A^{-1}B$. This solution + might not exist for degenerated classifiers, in which case the method defaults to classify and count + (i.e., does not attempt any adjustment). + Another option is to search for the prevalence vector that minimizes the L2 norm of |Ax-B|. The latter is + achieved by indicating solver='minimize'. This one generally works better, and is the default parameter. + More details about this can be consulted in `Bunse, M. "On Multi-Class Extensions of Adjusted Classify and + Count", on proceedings of the 2nd International Workshop on Learning to Quantify: Methods and Applications + (LQ 2022), ECML/PKDD 2022, Grenoble (France) `_. + """ def __init__(self, classifier: BaseEstimator, val_split=5, n_jobs=None, solver='minimize'):