CDE#

class mlquantify.likelihood.CDE(learner=None, tol=0.0001, max_iter=100, init_cfp=1.0)[source]#

CDE-Iterate for binary classification prevalence estimation.

Threshold \(\tau\) from false positive and false negative costs: .. math:

\tau = \frac{c_{FP}}{c_{FP} + c_{FN}}

Hard classification by thresholding posterior probability \(p(+|x)\) at \(\tau\): .. math:

\hat{y}(x) = \mathbf{1}_{p(+|x) > \tau}

Prevalence estimation via classify-and-count: .. math:

\hat{p}_U(+) = \frac{1}{N} \sum_{n=1}^N \hat{y}(x_n)

False positive cost update: .. math:

c_{FP}^{new} = \frac{p_L(+)}{p_L(-)} \times \frac{\hat{p}_U(-)}{\hat{p}_U(+)} \times c_{FN}
Parameters:
learnerestimator, optional

Wrapped classifier (unused).

tolfloat, default=1e-4

Convergence tolerance.

max_iterint, default=100

Max iterations.

init_cfpfloat, default=1.0

Initial false positive cost.

References

[1]

Esuli, A., Moreo, A., & Sebastiani, F. (2023). Learning to Quantify. Springer.

aggregate(*args)[source]#

Aggregate binary predictions to obtain multiclass prevalence estimates.

fit(X, y)[source]#

Fit the quantifier under a binary decomposition strategy.

get_metadata_routing()[source]#

Get metadata routing of this object.

Please check User Guide on how the routing mechanism works.

Returns:
routingMetadataRequest

A MetadataRequest encapsulating routing information.

get_params(deep=True)[source]#

Get parameters for this estimator.

Parameters:
deepbool, default=True

If True, will return the parameters for this estimator and contained subobjects that are estimators.

Returns:
paramsdict

Parameter names mapped to their values.

predict(X)[source]#

Predict class prevalences using the trained binary quantifiers.

save_quantifier(path: str | None = None) None[source]#

Save the quantifier instance to a file.

set_params(**params)[source]#

Set the parameters of this estimator.

The method works on simple estimators as well as on nested objects (such as Pipeline). The latter have parameters of the form <component>__<parameter> so that it’s possible to update each component of a nested object.

Parameters:
**paramsdict

Estimator parameters.

Returns:
selfestimator instance

Estimator instance.