PU Learning Toolbox
Positive-Unlabeled learning in Python -- sklearn-compatible API, 17 research paper methods, SCAR & SAR support.
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-toolboxturns 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 installinto the system environment (PEP 668) -- create a venv instead. - Anaconda / Miniconda:
pip install pu-toolboxinside a conda env (the package is PyPI-only;conda installwill not find it). If you already installed torch via conda, a plainpip 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_sar_dataset
from pu_toolbox import PUPipeline
# Synthetic PU data: some positives are labeled (1), rest are unlabeled (0)
X, y_pu, y_true, _ = make_sar_dataset(
n_samples=1000, n_features=8, class_prior=0.3, 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/).
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
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pu_toolbox-1.1.0.tar.gz.
File metadata
- Download URL: pu_toolbox-1.1.0.tar.gz
- Upload date:
- Size: 868.4 kB
- Tags: Source
- Uploaded using 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}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
45c44a7a55973e2d5d0f7346610e4c7cd48a35bd9fc68bd9331d3d138f5e1daf
|
|
| MD5 |
6f64ed2ecb1cd620e26a01e33981e050
|
|
| BLAKE2b-256 |
119f30437e7d69ac1fef1eb7e4a690325e329c3fd843154034c244c48a3b032b
|
File details
Details for the file pu_toolbox-1.1.0-py3-none-any.whl.
File metadata
- Download URL: pu_toolbox-1.1.0-py3-none-any.whl
- Upload date:
- Size: 191.2 kB
- Tags: Python 3
- Uploaded using 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}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3c5141e6a5e2b18cf4035f21187ec9e0fd7e32a53fa1be1c6245f9e0f38fc7b4
|
|
| MD5 |
6806d9d7297f9a640d0668bb45ab6549
|
|
| BLAKE2b-256 |
0a7371cd5c5b9bf42db3d10a040e0ad30a0af8a09972afd1fb565284fe8dbac1
|