Bias Detection and Mitigation Toolkit for Responsible AI.
fairml is a Python package designed to help data scientists and machine learning engineers detect, visualize, and mitigate bias in datasets and models seamlessly.
With intuitive APIs, rich visualizations, and practical mitigation techniques, fairml makes fairness-aware AI development accessible to every practitioner.
✅ Bias detection metrics
✅ Bias visualization dashboards
✅ Pre-processing and post-processing mitigation methods
✅ scikit-learn compatible pipelines
✅ Lightweight, modular, and extensible design
pip install fairml(Currently under development; install via GitHub for now)
pip install git+https://github.com/nik21hil/fairml.gitfrom fairml import detection
# Example: Calculate Statistical Parity Difference
spd = detection.statistical_parity_difference(y_true, y_pred, sensitive_features)
print("Statistical Parity Difference:", spd)More detailed examples and notebooks are available in the examples/ folder.
detection.py: Bias detection metricsvisualization.py: Fairness visualizations and plotsmitigation.py: Bias mitigation algorithmsutils.py: Helper functions
The fairml.mitigation module offers multiple pre-processing techniques to handle class imbalance and fairness-aware reweighting:
from fairml.mitigation import reweight_samples
weights = reweight_samples(y, sensitive_features, privileged_group='M', unprivileged_group='F')from fairml.mitigation import resample_dataset
X_res, y_res, group_res = resample_dataset(X, y, sensitive_features,
privileged_group='M',
unprivileged_group='F',
strategy='undersample') # or 'oversample'- SMOTE
from fairml.mitigation import apply_smote
X_res, y_res = apply_smote(X, y)- ADASYN
from fairml.mitigation import apply_adasyn
X_res, y_res = apply_adasyn(X, y)- Hybrid Sampling (SMOTE + RandomUnderSampler)
from fairml.mitigation import apply_hybrid_sampling
X_res, y_res = apply_hybrid_sampling(X, y)- Combined Sampling
from fairml.mitigation import combined_resample
X_res, y_res = combined_resample(X, y, strategy='smote_tomek') # or 'smote_enn'- Cluster Centroids (Under-sampling)
from fairml.mitigation import apply_cluster_centroids
X_res, y_res = apply_cluster_centroids(X, y)These techniques help create a balanced dataset before training, reducing unfair bias in imbalanced classes.
fairml/
│
├── fairml/
│ ├── detection.py
│ ├── visualization.py
│ ├── mitigation.py
│ ├── utils.py
│
├── examples/
├── tests/
├── setup.py
├── pyproject.toml
├── requirements.txt
├── README.md
├── LICENSE
└── .gitignore
- Phase 0: Project setup
- Phase 1: Core bias detection metrics
- Phase 2: Visualization module
- Phase 3: Pre-processing mitigation techniques
- Phase 4: Post-processing mitigation techniques
- Phase 5: End-to-end example notebooks
- Phase 6: PyPI release
Contributions are welcome. Please open an issue or pull request to discuss improvements, features, or bug fixes.
This project is licensed under the MIT License - see the LICENSE file for details.
- IBM AI Fairness 360
- Microsoft Fairlearn
- The broader AI fairness and ethics research community
Nikhil Singh
GitHub | LinkedIn
Enjoy building! 🎯