Skip to main content

Unfair Data Generator

Repository size License GitHub commit activity Percentage of issues still open Average time to resolve an issue GitHub contributors

📋 About • 📦 Installation • 🚀 Usage • ⚖️ Supported Equality Types • 📜 License

📋 About

Unfair Data Generator is a Python library designed for generating biased classification datasets with intentional unfairness patterns. This tool extends scikit-learn's make_classification function to include sensitive group information and fairness constraints, allowing users to create controlled datasets with specific bias patterns for testing and developing fairness algorithms. ⚖️🧪

Unfair Data Generator supports various fairness criteria violations and provides comprehensive tools for visualization and evaluation, making it an essential tool for fairness research and education. 💡

✨ Features

  • Biased Dataset Generation: Create classification datasets with intentional bias across sensitive groups. 🗃️
  • Fairness Evaluation: Built-in tools for evaluating model fairness across different groups. ⚖️
  • Visualization: Visualization capabilities for understanding bias patterns and fairness metrics. 📈
  • Flexible Configuration: Support for various equality types (demographic parity, equal opportunity, equal opportunity, equalized odds). ⚙️
  • Leaky Features: Generate features that leak sensitive information to simulate real-world bias. 🔓
  • Multiple Groups: Support for 2-5 sensitive groups with intuitive weather-based naming. 🌦️
  • Scikit-learn Compatible: Extends familiar scikit-learn patterns and interfaces. 🎯

📦 Installation

🚀 Usage

The following example demonstrates how to generate a biased dataset and evaluate fairness using unfair-data-generator. More examples can be found in the examples directory.

import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score

from unfair_data_generator.unfair_classification import make_unfair_classification
from unfair_data_generator.util.helpers import get_params_for_certain_equality_type
from unfair_data_generator.util.model_trainer import train_and_evaluate_model_with_classifier
from unfair_data_generator.util.visualizer import (
    visualize_TPR_FPR_metrics, 
    visualize_accuracy, 
    visualize_groups_separately
)

# Configure dataset parameters
fairness_type = "Demographic parity"
n_sensitive_groups = 3

# Generate group-specific parameters for fairness violation
group_params = get_params_for_certain_equality_type(fairness_type, n_sensitive_groups)

# Generate biased dataset
X, y, Z, centroids = make_unfair_classification(
    n_samples=5000,
    n_features=10,
    n_informative=3,
    n_leaky=2,
    random_state=42
    group_params=group_params,
    return_sensitive_group_centroids=True,
)

# Visualize group-specific patterns
visualize_groups_separately(X, y, Z)
visualize_group_classes(X, y, Z, centroids)

# Train model and evaluate fairness
metrics = train_and_evaluate_model_with_classifier(X, y, Z)

# Visualize fairness metrics
title = f"{fairness_type} with {n_sensitive_groups} sensitive groups"
visualize_TPR_FPR_metrics(metrics, title)
visualize_accuracy(metrics, title)

⚖️ Supported Equality Types

The library supports generating datasets that systematically violate specific fairness criteria. Each type creates different bias patterns:

  • Equal quality
    Different classification performance across groups.
  • Demographic parity
    Unequal positive prediction rates across groups.
  • Equal opportunity
    Unequal true positive rates across groups.
  • Equalized odds
    Unequal true positive and false positive rates across groups.

📜 License

This package is distributed under the MIT License. This license can be found online at http://www.opensource.org/licenses/MIT.

Disclaimer

This framework is provided as-is, and there are no guarantees that it fits your purposes or that it is bug-free. Use it at your own risk!

Metadata

Release files for unfair-data-generator 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 unfair-data-generator 0.1.0
File Size Uploaded Provenance Actions
unfair_data_generator-0.1.0.tar.gz 16.6 kB Without provenance Details for unfair_data_generator-0.1.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for unfair-data-generator 0.1.0
File Interpreter ABI Platform Actions
unfair_data_generator-0.1.0-py3-none-any.whl Python 3 none any Details for unfair_data_generator-0.1.0-py3-none-any.whl

Total release size: 34.1 kB

Release files / unfair_data_generator-0.1.0.tar.gz

Download URL unfair_data_generator-0.1.0.tar.gz
Size 16.6 kB
Tags Source
SHA-256 checksum
How to use checksums
0205317c16af366ce624aedbc62a3e2bb3fb8f4ee8c0956bef4a634c4af9051a
BLAKE2b-256 checksum
How to use checksums
34558cbc93ee54f6eeb51539c3421b4f850be308233d68384f59dedae4753c14
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.7.1 CPython/3.11.2 Windows/10

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

Download URL unfair_data_generator-0.1.0-py3-none-any.whl
Size 17.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
4ae89b0cf9eb904145e27bf8365e852eb6c44931cdce24bc074d7748e370d8eb
BLAKE2b-256 checksum
How to use checksums
c35a029d1d0546c0fc0432cc23c85aaeab26770116a6f1c6d4e6a7c997dfcdc0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.7.1 CPython/3.11.2 Windows/10

Security for unfair-data-generator 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