Quickstart

The Python package qunfold implements our unified framework of algorithms for quantification and unfolding. It is designed for enabling the composition of novel methods from existing and easily customized loss functions and data representations. Moreover, this package leverages a powerful optimization back-end to yield state-of-the-art performances for all compositions.

Installation

pip install --upgrade pip setuptools wheel
pip install 'qunfold @ git+https://github.com/mirkobunse/qunfold'

Moreover, you will need a JAX backend. Typically, the CPU backend will be ideal:

pip install "jax[cpu]"

Upgrading

To upgrade an existing installation of qunfold, run

pip install --force-reinstall --no-deps 'qunfold @ git+https://github.com/mirkobunse/qunfold@main'

Usage

Basically, you use this package as follows:

from qunfold import ACC # Adjusted Classify and Count
from sklearn.ensemble import RandomForestClassifier

acc = ACC( # use OOB predictions for training the quantifier
    RandomForestClassifier(oob_score=True)
)
acc.fit(X_trn, y_trn) # fit to training data
p_hat = acc.predict(X_tst) # estimate a prevalence vector

You can easily compose new quantification methods from existing loss functions and data representations. In the following example, we compose the ordinal variant of ACC and prepare it for being used in QuaPy.

# the ACC loss, regularized with strength 0.01 for ordinal quantification
loss = TikhonovRegularized(LeastSquaresLoss(), 0.01)

# the original data representation of ACC with 10-fold cross-validation
representation = ClassRepresentation(CVClassifier(LogisticRegression(), 10))

# the ordinal variant of ACC, ready for being used in QuaPy
ordinal_acc = QuaPyWrapper(LinearMethod(loss, representation))