Skip to main content

๐Ÿ” privacylens

Audit any ML model for privacy vulnerabilities โ€” in 3 lines of code.

CI Coverage PyPI version Python Discussions License: MIT PRs Welcome


๐ŸŽฏ What is privacylens?

Most ML engineers don't know if their model is leaking private training data. privacylens audits it.

from privacylens import audit

report = audit(model, X_train, y_train, X_test)
report.summary()

# Export HTML Compliance Report for GDPR/HIPAA sharing
report.to_html("audit_report.html")
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚             ๐Ÿ” privacylens โ€” Privacy Audit Report            โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ Check                        โ”‚ Score      โ”‚ Risk            โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ Membership Inference Attack  โ”‚ 0.087      โ”‚ LOW             โ”‚
โ”‚ PII Leakage Detection        โ”‚ 0.000      โ”‚ LOW             โ”‚
โ”‚ Model Inversion Risk         โ”‚ 0.042      โ”‚ LOW             โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

Model: RandomForestClassifier
Overall Risk: LOW

โ€ข MIA advantage score: 0.087 โ€” model shows low Membership Inference vulnerability.
โ€ข PII leakage score: 0.000 โ€” model shows low PII Leakage vulnerability.
โ€ข Model Inversion score: 0.042 โ€” model shows low Model Inversion vulnerability.

โœจ Features

  • ๐Ÿ•ต๏ธ Membership Inference Attack (MIA) โ€” Detect if an attacker can identify training records using shadow model estimation (Shokri et al., 2017)
  • ๐Ÿ”Ž PII Leakage Detection โ€” Detect sensitive PII (Emails, SSNs, Credit Cards, Phones, IPs) memorized in predictions or samples
  • ๐Ÿ”„ Model Inversion Risk Scorer โ€” Evaluate feature reconstructability risk from output confidence probabilities (Fredrikson et al., 2015)
  • ๐ŸŒ Native Framework Adapters โ€” Out-of-the-box support for scikit-learn, PyTorch (nn.Module), XGBoost, and HuggingFace Transformers
  • ๐Ÿ“„ HTML Compliance Reports โ€” Export standalone, interactive HTML reports (--report audit.html) for security & GDPR/HIPAA compliance sharing
  • ๐ŸŽจ Beautiful terminal output โ€” Rich colour-coded risk tables with LOW / MEDIUM / HIGH classification
  • ๐Ÿค– CLI + Python API โ€” Use in scripts or integrate into CI/CD pipelines (privacylens audit)
  • ๐Ÿ“Š JSON output โ€” Machine-readable results for dashboards and reporting (--output json)

๐Ÿ“ฆ Installation

# Base install (scikit-learn models)
pip install privacyaudit

# With PyTorch support
pip install "privacyaudit[torch]"

# With XGBoost support
pip install "privacyaudit[xgboost]"

# Everything (PyTorch, XGBoost, Transformers)
pip install "privacyaudit[all]"

Note: The PyPI package is privacyaudit. Import in Python as from privacylens import audit.


๐Ÿš€ Quick Start

from sklearn.ensemble import RandomForestClassifier
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split
from privacylens import audit

# Train a model
X, y = make_classification(n_samples=1000, n_features=20, random_state=42)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3)

model = RandomForestClassifier(n_estimators=100)
model.fit(X_train, y_train)

# Audit it for privacy vulnerabilities (MIA + PII Leakage + Model Inversion)
report = audit(model, X_train, y_train, X_test, y_test)
report.summary()

# Export interactive HTML audit report
report.to_html("compliance_report.html")

# Get audit results as dict (for JSON logging or API responses)
print(report.to_dict())

๐Ÿ–ฅ๏ธ CLI Usage

# Audit a saved model file
privacylens audit model.pkl train.csv test.csv

# Export interactive HTML report
privacylens audit model.pkl train.csv test.csv --report compliance.html

# Output JSON for CI/CD integration
privacylens audit model.pkl train.csv test.csv --output json

# Skip MIA check in fast pipelines
privacylens audit model.pkl train.csv test.csv --no-mia

๐Ÿ—๏ธ Architecture

privacylens/
โ”œโ”€โ”€ src/privacylens/
โ”‚   โ”œโ”€โ”€ __init__.py         # Public API: audit(), AuditReport, Auditors, Adapters
โ”‚   โ”œโ”€โ”€ auditor.py          # Core orchestrator
โ”‚   โ”œโ”€โ”€ adapters/
โ”‚   โ”‚   โ”œโ”€โ”€ base.py         # BaseModelAdapter & get_adapter() factory
โ”‚   โ”‚   โ”œโ”€โ”€ sklearn_adapter.py
โ”‚   โ”‚   โ”œโ”€โ”€ pytorch_adapter.py
โ”‚   โ”‚   โ”œโ”€โ”€ xgboost_adapter.py
โ”‚   โ”‚   โ””โ”€โ”€ hf_adapter.py   # HuggingFace Transformers Adapter
โ”‚   โ”œโ”€โ”€ attacks/
โ”‚   โ”‚   โ”œโ”€โ”€ membership.py   # MIA engine (shadow model + attack classifier)
โ”‚   โ”‚   โ””โ”€โ”€ inversion.py    # Model Inversion Risk Auditor (Fredrikson et al.)
โ”‚   โ”œโ”€โ”€ leakage/
โ”‚   โ”‚   โ””โ”€โ”€ pii.py          # PII Leakage Auditor (Regex + Severity Weighting)
โ”‚   โ”œโ”€โ”€ report/
โ”‚   โ”‚   โ””โ”€โ”€ html.py         # HTML Compliance Report Generator (Jinja2)
โ”‚   โ””โ”€โ”€ cli.py              # Click CLI
โ”œโ”€โ”€ examples/
โ”‚   โ””โ”€โ”€ benchmark_demo.py   # Flagship Enterprise Privacy Audit Benchmark
โ””โ”€โ”€ tests/
    โ”œโ”€โ”€ test_auditor.py
    โ”œโ”€โ”€ test_membership.py
    โ”œโ”€โ”€ test_pii_leakage.py
    โ”œโ”€โ”€ test_inversion.py
    โ”œโ”€โ”€ test_adapters.py
    โ”œโ”€โ”€ test_html_report.py
    โ””โ”€โ”€ test_hf_adapter.py

๐Ÿ“– Risk Score Interpretation

Check Score Risk Level Meaning
0.0 โ€“ 0.10 ๐ŸŸข LOW Model reveals minimal membership/PII/inversion information
0.10 โ€“ 0.30 ๐ŸŸก MEDIUM Moderate risk โ€” review training data exposure
0.30 โ€“ 1.00 ๐Ÿ”ด HIGH Model likely memorising sensitive training data

๐Ÿค Contributing

See CONTRIBUTING.md. All contributions welcome!

๐Ÿ“„ License

MIT โ€” see LICENSE.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

privacyaudit-1.0.0.tar.gz (19.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

privacyaudit-1.0.0-py3-none-any.whl (21.9 kB view details)

Uploaded Python 3

File details

Details for the file privacyaudit-1.0.0.tar.gz.

File metadata

  • Download URL: privacyaudit-1.0.0.tar.gz
  • Upload date:
  • Size: 19.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for privacyaudit-1.0.0.tar.gz
Algorithm Hash digest
SHA256 e72d7806340f3ef830b3abb79497ce373615bc9cf8e049226ed41b7f973c87d6
MD5 2d91eb1c40d534f285cc3206132366d0
BLAKE2b-256 81416839e3fca24593a752cfed57d2fa1118f5d212ff640d623fa415ead85052

See more details on using hashes here.

Provenance

The following attestation bundles were made for privacyaudit-1.0.0.tar.gz:

Publisher: release.yml on nithin42/privacylens

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file privacyaudit-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: privacyaudit-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 21.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for privacyaudit-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 452503e5f245ca0f183a83bdd1e81c33f4a81bccc8618ca490954c0a634eb212
MD5 dbdfc30a43029149b423f420cd811475
BLAKE2b-256 81c28134a6fe5e7884c13779d5a3d365aa5cdf7a6239c7c94fb876d29cdeb177

See more details on using hashes here.

Provenance

The following attestation bundles were made for privacyaudit-1.0.0-py3-none-any.whl:

Publisher: release.yml on nithin42/privacylens

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page