Skip to main content

⚖️ justiceai

Build Status Coverage Python Tests License Code style: ruff

Fairness em ML para Produção: A primeira biblioteca Python focada em monitoramento de fairness em produção, com compliance LGPD/BACEN nativo e relatórios standalone.


🎯 O Problema

Ferramentas como Fairlearn e AIF360 são excelentes para pesquisa, mas param no notebook. Você precisa de fairness em produção, com:

  • ✅ Monitoramento contínuo de viés
  • ✅ Compliance automático (LGPD Art. 20, BACEN Res. 4.658)
  • ✅ Relatórios prontos para stakeholders não-técnicos
  • ✅ Zero vendor lock-in (funciona com sklearn, XGBoost, PyTorch, TensorFlow)

justiceai resolve isso.


🚀 Quick Start

from justiceai import audit
from sklearn.datasets import load_breast_cancer
from sklearn.ensemble import RandomForestClassifier
import pandas as pd

# Carregar dados
data = load_breast_cancer()
df = pd.DataFrame(data.data, columns=data.feature_names)
df['target'] = data.target
df['gender'] = np.random.choice(['M', 'F'], size=len(df))  # Atributo protegido

# Treinar modelo
model = RandomForestClassifier()
model.fit(df.drop(['target', 'gender'], axis=1), df['target'])

# Avaliar fairness em 1 linha
report = audit(
    model=model,
    data=df,
    target='target',
    protected_attrs=['gender']
)

# Visualizar
report.show()  # Abre HTML interativo no navegador
report.save_html('fairness_report.html')  # Salva para compartilhar

Output: Relatório HTML standalone com Plotly interativo, pronto para apresentar ao board.

🇧🇷 Compliance LGPD/BACEN

from justiceai import audit
from justiceai.compliance import LGPDComplianceReporter, BACENComplianceReporter

# Executar auditoria de fairness
report = audit(model, X, y, sensitive_attrs)

# Gerar relatório LGPD (Art. 20)
lgpd_reporter = LGPDComplianceReporter(report)
lgpd_reporter.save_html('lgpd_compliance.html')

# Gerar relatório BACEN (Res. 4.658)
bacen_reporter = BACENComplianceReporter(report)
compliance_data = bacen_reporter.generate_report()
print(f"Risco do Modelo: {compliance_data['risco_modelo']['nivel_risco']}")

📈 Monitoring em Produção

from justiceai.monitoring import (
    FairnessDriftDetector,
    FairnessAlerting,
    ConsoleAlertChannel
)

# Estabelecer baseline
baseline_metrics = {'statistical_parity': 0.95, 'equal_opportunity': 0.92}

# Configurar detector
detector = FairnessDriftDetector(baseline_metrics, threshold=0.10)

# Configurar alertas
alerting = FairnessAlerting()
alerting.add_channel('console', ConsoleAlertChannel())

# Monitorar novos dados
new_metrics = {'statistical_parity': 0.75, 'equal_opportunity': 0.90}
drift_result = detector.detect(new_metrics)

if drift_result.has_drift:
    print(f"⚠️ Drift detectado: {list(drift_result.drifted_metrics.keys())}")
    alerting.send_drift_alert(drift_result, detector)

📦 Instalação

Via pip (em breve)

pip install justiceai

Para Desenvolvimento

# Clone o repositório
git clone https://github.com/guhaase/justiceai.git
cd justiceai

# Instale com Poetry
poetry install

# Ative o ambiente
poetry shell

# Rode os testes
pytest

✨ Features

🔬 15+ Métricas de Fairness

Pre-Training (independentes de modelo)

  • Class Balance: Distribuição balanceada entre grupos
  • Concept Balance: Taxa de positivos balanceada
  • KL/JS Divergence: Similaridade de distribuições

Post-Training (baseadas em predições)

  • Statistical Parity: Taxa de predições positivas igual
  • Disparate Impact: Compliance com regra EEOC 80%
  • Equal Opportunity: TPR igual entre grupos
  • Equalized Odds: TPR e FPR iguais
  • + 8 métricas adicionais

📊 Relatórios Standalone

  • HTML Interativo: Plotly charts, funciona offline
  • PDF Profissional: Pronto para auditoria (em breve)
  • Markdown: Versionável em Git (em breve)

🇧🇷 Compliance Brasil

  • LGPD Art. 20: Template pronto para direito à explicação
  • BACEN Res. 4.658: Análise de risco de modelo
  • Português nativo: Relatórios e erros em PT-BR

🔌 Framework-Agnostic

Funciona com:

  • ✅ scikit-learn
  • ✅ XGBoost
  • ✅ LightGBM
  • ⏳ PyTorch (em breve)
  • ⏳ TensorFlow (em breve)
  • ⏳ ONNX (em breve)

📈 Monitoring em Produção

  • Drift Detection: Detecta degradação de fairness ao longo do tempo (threshold, PSI, KS test)
  • Alerting: Slack/Email/Webhook quando métricas violam thresholds
  • Continuous Monitoring: Histórico, tendências e alertas automáticos

📚 Documentação

Status: ✅ Completa


🔬 Comparação com Concorrentes

Feature Fairlearn AIF360 justiceai
Métricas 8 70+ 15+ (curadas)
MLOps/Produção ❌ ❌ ✅
Compliance BR ❌ ❌ ✅
Reports Standalone ❌ ⚠️ ✅ (HTML Plotly)
Framework-Agnostic ⚠️ ⚠️ ✅
API 1-liner ❌ ❌ ✅
Monitoring ❌ ❌ ✅ (em breve)

🗺️ Roadmap

✅ v0.1.0 (Sprint 1-3) - COMPLETO

  • Setup projeto (Poetry, CI/CD)
  • 15+ métricas de fairness
  • Reports HTML com Plotly
  • API audit() simples
  • FairnessEvaluator API
  • Model adapters (sklearn + factory)
  • Documentação completa (MkDocs)
  • 3 tutoriais Jupyter
  • 192 testes, 90%+ coverage
  • FAQ com 40+ questões

🏗️ v0.2.0 (Sprint 4) - Compliance

  • Suporte XGBoost, LightGBM
  • Templates LGPD/BACEN
  • Monitoring e drift detection
  • Threshold optimization
  • Reports PDF

🔮 v0.3.0 (Sprint 5) - Release Público

  • Publicado no PyPI
  • GitHub Pages documentation
  • Português nativo completo
  • Suporte PyTorch/TensorFlow

🌟 v1.0+ (Futuro)

  • Mitigação automática de viés
  • IA-powered insights (LLM)
  • Integração MLflow/W&B
  • SaaS offering (?)

🤝 Contribuindo

Contribuições são muito bem-vindas! Veja CONTRIBUTING.md para guidelines.

Como Contribuir

  1. Fork o repositório
  2. Clone seu fork: git clone https://github.com/SEU-USUARIO/justiceai.git
  3. Crie uma branch: git checkout -b feature/minha-feature
  4. Faça mudanças e commit: git commit -m "feat: adiciona minha feature"
  5. Push: git push origin feature/minha-feature
  6. Abra um Pull Request

Code Quality

Antes de abrir PR, rode:

# Formatar código
make format

# Linting
make lint

# Type checking
make type-check

# Testes
make test

# Tudo de uma vez
make quality

📊 Status do Projeto

Fase Atual: Sprint 3 Completo - v0.1.0 Ready!

Métrica Status Target
Coverage ✅ 90.03% 90%
Testes ✅ 192 passing 150+
Docs ✅ 20 pages 100%
Tutorials ✅ 3 notebooks 3

Sprints Completos: 3/5 (60%)

  • ✅ Sprint 1: Core Metrics
  • ✅ Sprint 2: HTML Reports
  • ✅ Sprint 3: API + Documentation
  • 🔄 Sprint 4: Compliance (próximo)
  • ⏳ Sprint 5: Release Público

📄 Licença

Este projeto está licenciado sob a MIT License.

MIT License

Copyright (c) 2026 Gustavo Haase

Permission is hereby granted, free of charge, to any person obtaining a copy...

👥 Autores

Gustavo Haase


🙏 Agradecimentos

  • DeepBridge: Base de código que inspirou este projeto
  • Fairlearn/AIF360: Referências de métricas
  • Comunidade Python: Ferramentas incríveis (Poetry, Pytest, Black, etc.)

📞 Suporte


🌟 Star History

Star History Chart


Feito com ❤️ para tornar ML mais justo e responsável

⚖️ justiceai - Fairness em ML para Produção

Metadata

Release files for justiceai 0.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 justiceai 0.4.0
File Size Uploaded
justiceai-0.4.0.tar.gz 51.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for justiceai 0.4.0
File Interpreter ABI Platform
justiceai-0.4.0-py3-none-any.whl Python 3 none any Details

Total release size: 116.3 kB

Release files / justiceai-0.4.0.tar.gz

Download URL justiceai-0.4.0.tar.gz
Size 51.6 kB
Tags Source
SHA-256 checksum
How to use checksums
a09fd59539cb24c2bf7c7f27f2a01eef0ca2efb2e19f03c1d4effdf3cfefa96b
BLAKE2b-256 checksum
How to use checksums
34aee6b6f9d0d90bbc9815b6ce6232d6c5194be29c7f64c8b14cd6ddf7661a6e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/2.1.3 CPython/3.12.10 Linux/6.6.87.1-microsoft-standard-WSL2

Release files / justiceai-0.4.0-py3-none-any.whl

Download URL justiceai-0.4.0-py3-none-any.whl
Size 64.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
3300962336729964a623ff1f4fc2830739348b736ed2cc980dfaba9f65d1496f
BLAKE2b-256 checksum
How to use checksums
58918c58a37f096c6a0cb0fc09a35a0ff0de47d140dc0293f01cdaa47a90e7ff
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/2.1.3 CPython/3.12.10 Linux/6.6.87.1-microsoft-standard-WSL2

Release history Release notifications | RSS feed

This release

0.4.0 This release

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