Skip to main content

English | 中文

PU Learning Toolbox

Positive-Unlabeled learning in Python -- sklearn-compatible API, 17 research paper methods, SCAR & SAR support.

Python Status License

Features

  • 17 algorithms from recent PU learning research, all native clean-room implementations (method cards)
  • sklearn-compatible API -- fit(X, y) / predict(X) / decision_function(X), works with pipelines and cross-validation
  • SCAR & SAR -- constant and instance-dependent labeling mechanisms, with a data simulator
  • Data profiling + recommender -- automatic quality checks, SCAR/SAR evidence, and a 7-dimension scoring recommender that picks the method for your data
  • Auditable pipeline -- one-call PUPipeline (profile -> prior -> train -> PU-stratified CV -> evaluate) plus structured diagnostic reports and prior/propensity sensitivity analysis
  • CLI -- pu-toolbox turns the whole pipeline into terminal commands

Quick Start

pip install pu-toolbox                # core dependencies (Python >= 3.10)
pip install "pu-toolbox[torch]"       # + PyTorch-based methods (nnPU, Dist-PU, Self-PU, ...)

Installation environments

Any Python interpreter >= 3.10 works: the package is a pure-Python universal wheel with no compiled extensions, so the interpreter source does not matter. Notes per environment:

  • venv / uv (recommended): standard isolated environments, nothing special.
  • System Python (python.org / Ubuntu / Homebrew): must be >= 3.10. Ubuntu 22.04+ and Debian 12+ block pip install into the system environment (PEP 668) -- create a venv instead.
  • Anaconda / Miniconda: pip install pu-toolbox inside a conda env (the package is PyPI-only; conda install will not find it). If you already installed torch via conda, a plain pip install pu-toolbox (without the [torch] extra) still enables the PyTorch-based methods -- torch is an optional dependency loaded lazily.

Hello World

import numpy as np
from pu_toolbox.preprocessing import make_scar_dataset
from pu_toolbox import PUPipeline

# Synthetic SCAR data (labeling independent of features — the premise of
# every class-prior estimator): some positives are labeled (1), the rest
# are unlabeled (0). For SAR data use make_sar_dataset(mechanism="linear").
X, y_pu, y_true = make_scar_dataset(
    n=500, c=0.5, n_features=8, separation=1.0, random_state=42,
)

# One call: profile -> class prior -> train -> PU-stratified CV -> evaluate
report = PUPipeline().fit_evaluate(X, y_pu, y_true=y_true)
print(report.summary())

Full docs (Chinese): docs/README.md. More runnable examples: examples/minimal/.

Command Line

The pu-toolbox console command wraps the full pipeline. Full guide: docs/user/howto/cli.md.

# 1. Generate SCAR demo data (X.csv / y_pu.csv / y_true.csv)
pu-toolbox make-demo-data --out-dir demo/ --n 200 --seed 42

# 2. One-shot full pipeline run (auto mode picks the algorithm)
pu-toolbox run --data demo/X.csv --labels demo/y_pu.csv --out-dir results/

# 3. Inspect results
#    results/report.md     full Markdown report
#    results/report.json   strict JSON (no NaN), machine-readable

Documentation

Docs are split by audience; the full index is docs/README.md.

Entry Content
docs/user/quickstart.md 5-minute start (CLI + Python)
docs/user/concepts/ PU problem, SCAR/SAR, method selection
docs/user/howto/ Task guides: simulation, profiling, pipeline, CLI, reports, sensitivity
docs/user/reference/api.md Precise API contract
docs/dev/ Contributor docs: architecture, structure, roadmap, compatibility
docs/research/method_cards/ Per-paper research cards

AI workflow skill

pu-workflow (Agent Skills open standard) drives the full PU analysis workflow — profiling, assumption diagnosis, method recommendation, training, and result interpretation — from natural language. Loaded natively by Claude Code / Cursor (.claude/skills/) and Codex / Gemini CLI / Windsurf (.agents/skills/). The skill ships inside the PyPI wheel: pip install "pu-toolbox>=1.2" && pu-toolbox skill install — see How to enable and use the skill.

Development

git clone https://github.com/shuidisjtu/pu-learning-toolbox.git
cd pu-learning-toolbox
pip install -e ".[dev,torch]"   # development install
uv run pytest tests/ -v -m "not slow and not e2e"   # fast tests (e2e runs nightly)
uv run ruff check pu_toolbox/               # lint
uv run ruff format --check pu_toolbox/      # format check

# Quality gates
uv run python scripts/check_test_quality.py
uv run python scripts/check_doc_links.py
uv run python scripts/check_project_metadata.py
uv run python scripts/check_math_rendering.py
uv run python scripts/check_skill_sync.py
uv run python scripts/check_format.py        # ruff check + format --check (full scope)

See CONTRIBUTING.md for contribution guidelines.

License

MIT

Release files for pu-toolbox 1.4.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pu-toolbox 1.4.0
File Size Uploaded
pu_toolbox-1.4.0.tar.gz 913.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pu-toolbox 1.4.0
File Interpreter ABI Platform
pu_toolbox-1.4.0-py3-none-any.whl Python 3 none any Details

Total release size: 1.1 MB

Release files / pu_toolbox-1.4.0.tar.gz

Download URL pu_toolbox-1.4.0.tar.gz
Size 913.1 kB
Tags Source
SHA-256 checksum
How to use checksums
0da499d914ad82782e99f84147c8f346e71f41f038ab62c060dce088cc89f320
BLAKE2b-256 checksum
How to use checksums
f16dcd319e62a95923f5da9f9bbfe1f8d26cda8d0109af699a3c55caddc0377a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.11.23 {"installer":{"name":"uv","version":"0.11.23","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / pu_toolbox-1.4.0-py3-none-any.whl

Download URL pu_toolbox-1.4.0-py3-none-any.whl
Size 207.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
03a7a6050f905aa14388642568df775ac131ffdeca89ca79330f6d75340af69d
BLAKE2b-256 checksum
How to use checksums
c68a00f716e99d13cc66aef9b78c22654cb4e893bfcfe9b5531327c722b2a54d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.11.23 {"installer":{"name":"uv","version":"0.11.23","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release history Release notifications | RSS feed

1.11.0

2 release files

1.10.0

2 release files

1.8.0

2 release files

1.5.1

2 release files

This release

1.4.0 This release

2 release files

1.3.0

2 release files

1.2.1

2 release files

1.2.0

2 release files

1.1.1

2 release files

1.1.0

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page