QuaPy/quapy/method
Alejandro Moreo Fernandez 89548d3a8b Add GMNet, a Gaussian-mixture neural quantifier
Ports GMNet (from https://github.com/pglez84/gmnet) into quapy/method/_gmnet.py,
mirroring how HistNetQ was ported: dropping that repo's quantificationlib-backed
bag generators in favor of QuaPy's own sampling protocols, and adding geotorch
(now a 'neural' extra dependency) to keep the Gaussian layers' covariance matrices
positive-definite during training.

- GMNet represents each bag instance by its likelihood under one or more learned
  mixtures of Gaussians ("GM branches"), mean-pools these representations over the
  bag, and predicts prevalence from the result. Supports multiple stacked GM
  branches with an optional CKA-regularization term encouraging their latent
  representations to be dissimilar.
- Fixes two aspects of the original architecture that assumed a fixed, training-time
  bag_size baked into the network (a reshape step, and forward-hook-based activation
  capture for CKA): both are now computed from the actual input shape/plain
  attributes at forward time, so the model also works on predict()'s arbitrary-sized
  test samples, not just same-size bags.
- Factors the bag-based training loop shared by HistNetQ and GMNet (bag generation,
  fit/fit_from_samples, early stopping, LR scheduling, checkpointing, predict) out of
  _histnet.py into a new BagTrainedQuantifier base class in
  quapy/method/_neural_bags.py; HistNetQ's public API and behavior are unchanged.
- Aliased in meta.py (torch/geotorch-optional, mirroring HistNetQ/QuaNet) and
  registered in META_METHODS.
- Adds test_gmnet covering single-branch and multi-branch+CKA (via
  fit_from_samples/mix_bags) variants.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-08 14:47:03 +02:00
..
stan index in labelled collection from versions restored 2025-11-15 17:56:37 +01:00
__init__.py Add GMNet, a Gaussian-mixture neural quantifier 2026-09-08 14:47:03 +02:00
_bayesian.py downgrade missing-bayes-deps notice to debug level 2026-07-20 12:14:31 +02:00
_energy.py added EDx and improve doc 2026-07-07 15:46:45 +02:00
_gmnet.py Add GMNet, a Gaussian-mixture neural quantifier 2026-09-08 14:47:03 +02:00
_helper.py adding EDy and improved manuals 2026-07-06 17:30:42 +02:00
_histnet.py Add GMNet, a Gaussian-mixture neural quantifier 2026-09-08 14:47:03 +02:00
_kdey.py added dataset for images 2026-07-02 18:21:35 +02:00
_liep_draft.py added bbse hard and soft and classifier adaptation wrapper 2026-08-26 18:08:37 +02:00
_neural_bags.py Add GMNet, a Gaussian-mixture neural quantifier 2026-09-08 14:47:03 +02:00
_quanet.py adding histnet 2026-08-20 11:40:55 +02:00
_threshold_optim.py Fix 10 correctness bugs and clean up warnings/logging in core library 2026-07-04 18:49:44 +02:00
aggregative.py added bbse hard and soft and classifier adaptation wrapper 2026-08-26 18:08:37 +02:00
base.py Fix 10 correctness bugs and clean up warnings/logging in core library 2026-07-04 18:49:44 +02:00
composable.py mergin and solving pytests 2025-10-06 12:03:31 +02:00
confidence.py improving doc manuals and added bonferroni parameter to interval construction 2026-07-06 12:11:24 +02:00
meta.py Add GMNet, a Gaussian-mixture neural quantifier 2026-09-08 14:47:03 +02:00
non_aggregative.py added EDx and improve doc 2026-07-07 15:46:45 +02:00