# trusted-ai/aif360 architecture

> Architecture diagram of the GitHub repository trusted-ai/aif360, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-25). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/trusted-ai/aif360
- Repository: https://github.com/trusted-ai/aif360

## Overview

AIF360 is a Python toolkit for detecting and mitigating bias across the machine-learning lifecycle. Users supply datasets, protected attributes, and typically model predictions; they can transform data or train/post-process models, then evaluate fairness and inspect or detect problematic subgroups. The graph reflects the documented capability areas and sampled interfaces; unsampled algorithm wiring is intentionally left general rather than presented as a specific call chain.

Main entry points: [`aif360/datasets/structured_dataset.py`](https://github.com/trusted-ai/aif360/blob/main/aif360/datasets/structured_dataset.py) (Dataset interfaces), [`aif360/metrics/classification_metric.py`](https://github.com/trusted-ai/aif360/blob/main/aif360/metrics/classification_metric.py) (Dataset and model metrics), [`aif360/sklearn/metrics/metrics.py`](https://github.com/trusted-ai/aif360/blob/main/aif360/sklearn/metrics/metrics.py) (Sklearn fairness metrics), [`aif360/detectors/mdss_detector.py`](https://github.com/trusted-ai/aif360/blob/main/aif360/detectors/mdss_detector.py) (Bias scan)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_data["Data and interfaces"]
  node_datasets["Dataset interfaces"]
  node_dataset_loaders["Dataset loaders"]
  node_sklearn_api["Scikit-learn API"]
end

subgraph group_mitigation["Bias mitigation"]
  node_preprocess["Preprocessing mitigation"]
  node_inprocess["In-processing mitigation"]
  node_intersectional["Intersectional mitigation"]
  node_postprocess["Post-processing mitigation"]
  node_sklearn_mitigation["Sklearn mitigation"]
end

subgraph group_assessment["Fairness assessment"]
  node_classification_metrics["Dataset and model metrics"]
  node_sklearn_metrics["Sklearn fairness metrics<br/>[metrics.py]"]
  node_regression_metrics["Other fairness metrics"]
end

subgraph group_insight["Detection and explanation"]
  node_metric_explainers["Metric explainers"]
  node_mdss_detector["Bias scan<br/>[mdss_detector.py]"]
  node_facts_detector["Recourse discovery"]
end

node_user(("Data scientist"))
node_predictions["Model predictions"]
node_fairness_results["Fairness findings"]

node_user -->|"select data"| node_dataset_loaders
node_user -->|"prepare data"| node_datasets
node_dataset_loaders -->|"build datasets"| node_datasets
node_user -->|"use API"| node_sklearn_api
node_datasets -->|"transform data"| node_preprocess
node_datasets -->|"train fairly"| node_inprocess
node_datasets -->|"mitigate bias"| node_intersectional
node_datasets -->|"adjust predictions"| node_postprocess
node_datasets -->|"transform data"| node_sklearn_mitigation
node_predictions -->|"provide scores"| node_postprocess
node_datasets -->|"compare labels"| node_classification_metrics
node_predictions -->|"evaluate predictions"| node_classification_metrics
node_datasets -->|"measure fairness"| node_sklearn_metrics
node_predictions -->|"measure outcomes"| node_sklearn_metrics
node_datasets -->|"measure fairness"| node_regression_metrics
node_classification_metrics -->|"explain metrics"| node_metric_explainers
node_classification_metrics -->|"report metrics"| node_fairness_results
node_sklearn_metrics -->|"report metrics"| node_fairness_results
node_datasets -->|"scan outcomes"| node_mdss_detector
node_predictions -->|"provide expectations"| node_mdss_detector
node_datasets -->|"find recourse"| node_facts_detector
node_predictions -->|"score actions"| node_facts_detector
node_mdss_detector -->|"report subgroups"| node_fairness_results
node_facts_detector -->|"report recourse"| node_fairness_results

click node_datasets "https://github.com/trusted-ai/aif360/blob/main/aif360/datasets/structured_dataset.py"
click node_dataset_loaders "https://github.com/trusted-ai/aif360/tree/main/aif360/datasets"
click node_sklearn_api "https://github.com/trusted-ai/aif360/tree/main/aif360/sklearn"
click node_preprocess "https://github.com/trusted-ai/aif360/tree/main/aif360/algorithms/preprocessing"
click node_inprocess "https://github.com/trusted-ai/aif360/tree/main/aif360/algorithms/inprocessing"
click node_intersectional "https://github.com/trusted-ai/aif360/blob/main/aif360/algorithms/intersectional_fairness.py"
click node_postprocess "https://github.com/trusted-ai/aif360/tree/main/aif360/algorithms/postprocessing"
click node_sklearn_mitigation "https://github.com/trusted-ai/aif360/tree/main/aif360/sklearn"
click node_classification_metrics "https://github.com/trusted-ai/aif360/blob/main/aif360/metrics/classification_metric.py"
click node_sklearn_metrics "https://github.com/trusted-ai/aif360/blob/main/aif360/sklearn/metrics/metrics.py"
click node_regression_metrics "https://github.com/trusted-ai/aif360/tree/main/aif360/metrics"
click node_metric_explainers "https://github.com/trusted-ai/aif360/tree/main/aif360/explainers"
click node_mdss_detector "https://github.com/trusted-ai/aif360/blob/main/aif360/detectors/mdss_detector.py"
click node_facts_detector "https://github.com/trusted-ai/aif360/tree/main/aif360/sklearn/detectors/facts"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_datasets,node_dataset_loaders,node_sklearn_api toneBlue
class node_preprocess,node_inprocess,node_intersectional,node_postprocess,node_sklearn_mitigation toneAmber
class node_classification_metrics,node_sklearn_metrics,node_regression_metrics toneMint
class node_metric_explainers,node_mdss_detector,node_facts_detector toneRose
class node_user,node_predictions,node_fairness_results toneIndigo
```

## Components

### Data and interfaces

- [Dataset interfaces](https://github.com/trusted-ai/aif360/blob/main/aif360/datasets/structured_dataset.py): `aif360/datasets/structured_dataset.py`
- [Dataset loaders](https://github.com/trusted-ai/aif360/tree/main/aif360/datasets): `aif360/datasets`
- [Scikit-learn API](https://github.com/trusted-ai/aif360/tree/main/aif360/sklearn): `aif360/sklearn`

### Bias mitigation

- [Preprocessing mitigation](https://github.com/trusted-ai/aif360/tree/main/aif360/algorithms/preprocessing): `aif360/algorithms/preprocessing`
- [In-processing mitigation](https://github.com/trusted-ai/aif360/tree/main/aif360/algorithms/inprocessing): `aif360/algorithms/inprocessing`
- [Intersectional mitigation](https://github.com/trusted-ai/aif360/blob/main/aif360/algorithms/intersectional_fairness.py): `aif360/algorithms/intersectional_fairness.py`
- [Post-processing mitigation](https://github.com/trusted-ai/aif360/tree/main/aif360/algorithms/postprocessing): `aif360/algorithms/postprocessing`
- [Sklearn mitigation](https://github.com/trusted-ai/aif360/tree/main/aif360/sklearn): `aif360/sklearn`

### Fairness assessment

- [Dataset and model metrics](https://github.com/trusted-ai/aif360/blob/main/aif360/metrics/classification_metric.py): `aif360/metrics/classification_metric.py`
- [Sklearn fairness metrics](https://github.com/trusted-ai/aif360/blob/main/aif360/sklearn/metrics/metrics.py): `aif360/sklearn/metrics/metrics.py`
- [Other fairness metrics](https://github.com/trusted-ai/aif360/tree/main/aif360/metrics): `aif360/metrics`

### Detection and explanation

- [Metric explainers](https://github.com/trusted-ai/aif360/tree/main/aif360/explainers): `aif360/explainers`
- [Bias scan](https://github.com/trusted-ai/aif360/blob/main/aif360/detectors/mdss_detector.py): `aif360/detectors/mdss_detector.py`
- [Recourse discovery](https://github.com/trusted-ai/aif360/tree/main/aif360/sklearn/detectors/facts): `aif360/sklearn/detectors/facts`

### Other components

- **Data scientist**
- **Model predictions**
- **Fairness findings**

## Connections

- Data scientist → Dataset loaders: select data
- Data scientist → Dataset interfaces: prepare data
- Dataset loaders → Dataset interfaces: build datasets
- Data scientist → Scikit-learn API: use API
- Dataset interfaces → Preprocessing mitigation: transform data
- Dataset interfaces → In-processing mitigation: train fairly
- Dataset interfaces → Intersectional mitigation: mitigate bias
- Dataset interfaces → Post-processing mitigation: adjust predictions
- Dataset interfaces → Sklearn mitigation: transform data
- Model predictions → Post-processing mitigation: provide scores
- Dataset interfaces → Dataset and model metrics: compare labels
- Model predictions → Dataset and model metrics: evaluate predictions
- Dataset interfaces → Sklearn fairness metrics: measure fairness
- Model predictions → Sklearn fairness metrics: measure outcomes
- Dataset interfaces → Other fairness metrics: measure fairness
- Dataset and model metrics → Metric explainers: explain metrics
- Dataset and model metrics → Fairness findings: report metrics
- Sklearn fairness metrics → Fairness findings: report metrics
- Dataset interfaces → Bias scan: scan outcomes
- Model predictions → Bias scan: provide expectations
- Dataset interfaces → Recourse discovery: find recourse
- Model predictions → Recourse discovery: score actions
- Bias scan → Fairness findings: report subgroups
- Recourse discovery → Fairness findings: report recourse
