Skip to main content

Bias & Fairness Auditor

Production-ready ML fairness auditing with bias detection, mitigation strategies, and regulatory compliance checking.

Features

  • Fairness Metrics: 16+ metrics including demographic parity, equalized odds, disparate impact
  • Data Bias Detection: Selection bias, representation bias, label bias, proxy detection
  • Model Auditing: Comprehensive fairness analysis across protected groups
  • Bias Mitigation: Pre-processing, in-processing, and post-processing strategies
  • Compliance Checking: ECOA, EEOC, GDPR fairness, EU AI Act support
  • Intersectional Analysis: Multi-attribute fairness evaluation
  • Zero Dependencies Core: Works without heavy ML libraries

Installation

pip install bias-fairness-auditor           # Core (zero deps)
pip install bias-fairness-auditor[ml]       # With ML libraries
pip install bias-fairness-auditor[full]     # All features

Quick Start

Basic Model Audit

from bias_fairness_auditor import FairnessAuditor, AuditConfig

# Configure audit
config = AuditConfig(
    protected_attributes=["gender", "race"],
    fairness_threshold=0.8
)

auditor = FairnessAuditor(config)

# Audit model predictions
report = auditor.audit_model(
    predictions=[1, 0, 1, 1, 0, 1, 0, 0],
    actuals=[1, 0, 1, 0, 0, 1, 1, 0],
    protected_attributes={
        "gender": ["M", "F", "M", "F", "M", "F", "M", "F"]
    }
)

print(f"Overall fairness: {report.overall_fairness_score:.2%}")
for score in report.fairness_scores:
    status = "✓" if score.is_fair else "✗"
    print(f"{status} {score.metric.value}: {score.value:.3f}")

Data Bias Analysis

from bias_fairness_auditor import FairnessAuditor

auditor = FairnessAuditor()

data = [
    {"gender": "M", "age": 35, "income": 75000, "approved": True},
    {"gender": "F", "age": 28, "income": 65000, "approved": False},
    # ... more records
]

report = auditor.audit_data(
    data=data,
    label_column="approved",
    protected_columns=["gender", "age"]
)

print(f"Bias instances found: {len(report.bias_instances)}")
for bias in report.bias_instances:
    print(f"  {bias.severity.value}: {bias.description}")

Bias Mitigation

from bias_fairness_auditor import FairnessAuditor, MitigationType

auditor = FairnessAuditor()

# Apply reweighting
result = auditor.mitigate(
    strategy=MitigationType.REWEIGHTING,
    data=training_data,
    labels=labels,
    protected_column="gender"
)

weights = result.metadata["weights"]
# Use weights in model training

Compliance Checking

from bias_fairness_auditor import (
    FairnessAuditor, AuditConfig, ComplianceStandard
)

config = AuditConfig(
    compliance_standards=[
        ComplianceStandard.ECOA,
        ComplianceStandard.EEOC
    ]
)

auditor = FairnessAuditor(config)
result = auditor.full_audit(data, "label", predictions, ["gender"])

for compliance in result.compliance_results:
    status = "PASS" if compliance.is_compliant else "FAIL"
    print(f"{compliance.standard.value}: {status}")

Fairness Metrics

Metric Description Threshold
Demographic Parity Equal positive rates ≥ 0.8
Disparate Impact 4/5 rule compliance ≥ 0.8
Equalized Odds Equal TPR and FPR ≤ 0.2 diff
Equal Opportunity Equal TPR ≤ 0.2 diff
Predictive Parity Equal precision ≤ 0.2 diff
Calibration Probability accuracy ECE ≤ 0.1

Bias Types Detected

  • Selection Bias
  • Sampling Bias
  • Measurement Bias
  • Label Bias
  • Historical Bias
  • Representation Bias
  • Proxy Bias
  • Algorithmic Bias

API Reference

FairnessAuditor

auditor = FairnessAuditor(config: Optional[AuditConfig] = None)

# Data audit
data_report = auditor.audit_data(data, label_column, protected_columns)

# Model audit  
model_report = auditor.audit_model(predictions, actuals, protected_attributes)

# Full audit
result = auditor.full_audit(data, label_column, predictions, protected_columns)

# Mitigation
mitigation = auditor.mitigate(strategy, data, labels, protected_column)

AuditConfig

config = AuditConfig(
    protected_attributes=[ProtectedAttribute.GENDER],
    privileged_groups={ProtectedAttribute.GENDER: ["M"]},
    unprivileged_groups={ProtectedAttribute.GENDER: ["F"]},
    fairness_metrics=[FairnessMetric.DEMOGRAPHIC_PARITY],
    fairness_threshold=0.8,
    disparate_impact_threshold=0.8,
    compliance_standards=[ComplianceStandard.ECOA]
)

License

MIT License - Pranay M

Metadata

Release files for bias-fairness-auditor 0.1.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 bias-fairness-auditor 0.1.0
File Size Uploaded Provenance Actions
bias_fairness_auditor-0.1.0.tar.gz 16.6 kB Without provenance Details for bias_fairness_auditor-0.1.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for bias-fairness-auditor 0.1.0
File Interpreter ABI Platform Actions
bias_fairness_auditor-0.1.0-py3-none-any.whl Python 3 none any Details for bias_fairness_auditor-0.1.0-py3-none-any.whl

Total release size: 30.1 kB

Release files / bias_fairness_auditor-0.1.0.tar.gz

Download URL bias_fairness_auditor-0.1.0.tar.gz
Size 16.6 kB
Tags Source
SHA-256 checksum
How to use checksums
d947265a9a686afbf3f9f62f54dea2d0ca7e76552a6aa6f6a594e9bff285196e
BLAKE2b-256 checksum
How to use checksums
e79ff04cb619953d4112191bea7a0942df83a873feebbc286c0895d67ab2ae30
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.5

Release files / bias_fairness_auditor-0.1.0-py3-none-any.whl

Download URL bias_fairness_auditor-0.1.0-py3-none-any.whl
Size 13.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
2a1217c91b10649037f35d683fc17772a0bb5da5245bdda0d18565c76bba48c5
BLAKE2b-256 checksum
How to use checksums
7248a541dbb9631af4ee9f80b499524ea798e4112d62b82ce90c4d6ba699e6a4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.5

Security for bias-fairness-auditor 0.1.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files No provenance

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