The AI Fairness 360 toolkit is an open-source library to help detect and mitigate bias in machine learning models. The AI Fairness 360 R package includes a comprehensive set of metrics for datasets and models to test for biases, explanations for these metrics, and algorithms to mitigate bias in datasets and models.
Install the CRAN version:
install.packages("aif360")
Or install the development version from GitHub:
# install.packages("devtools")
devtools::install_github("Trusted-AI/AIF360/aif360/aif360-r")
Then, use the install_aif360() function to install AIF360:
library(aif360)
install_aif360()
AIF360 is distributed as a Python package and so needs to be installed within a Python environment on your system. By default, the install_aif360() function attempts to install AIF360 within an isolated Python environment (“r-reticulate”).
You can check using reticulate::conda_python()
and
reticulate::py_config()
- Install reticulate and check if you have miniconda installed. If you do, go to step 2.
install.packages("reticulate")
reticulate::conda_list()
If you get an error: Error: Unable to find conda binary. Is Anaconda installed?
, please install miniconda
reticulate::install_miniconda()
If everything worked, you should get the message:
* Miniconda has been successfully installed at '/home/rstudio/.local/share/r-miniconda'.
You can double check:
reticulate::conda_list()
You will get something like this:
name python
1 r-miniconda /home/rstudio/.local/share/r-miniconda/bin/python
2 r-reticulate /home/rstudio/.local/share/r-miniconda/envs/r-reticulate/bin/python
- You can create a new conda env and then configure which version of Python to use:
reticulate::conda_create(envname = "r-test")
reticulate::use_miniconda(condaenv = "r-test", required = TRUE)
Check that everything is working reticulate::py_config()
.
- If you haven’t yet, please install the aif360 package
install.packages("aif360")
and then install aif360 dependencies
aif360::install_aif360(envname = "r-test")
Note that this step should take a few minutes and the R session will restart.
- Finally, load the aif360 functions
library(aif360)
reticulate::use_miniconda(condaenv = "r-test", required = TRUE)
load_aif360_lib()
load_aif360_lib()
# load a toy dataset
data <- data.frame("feature1" = c(0,0,1,1,1,1,0,1,1,0),
"feature2" = c(0,1,0,1,1,0,0,0,0,1),
"label" = c(1,0,0,1,0,0,1,0,1,1))
# format the dataset
formatted_dataset <- aif360::aif_dataset(data_path = data,
favor_label = 0,
unfavor_label = 1,
unprivileged_protected_attribute = 0,
privileged_protected_attribute = 1,
target_column = "label",
protected_attribute = "feature1")
If you’d like to contribute to the development of aif360, please read these guidelines.
Please note that the aif360 project is released with a Contributor Code of Conduct. By contributing to this project, you agree to abide by its terms.