Note
Go to the end to download the full example code
MetricFrame visualizations#
import pandas as pd
from fairlearn.datasets import fetch_adult
from sklearn.metrics import accuracy_score, precision_score
from sklearn.tree import DecisionTreeClassifier
from fairlearn.metrics import (
MetricFrame,
count,
false_negative_rate,
false_positive_rate,
selection_rate,
)
data = fetch_adult()
X = pd.get_dummies(data.data)
y_true = (data.target == ">50K") * 1
sex = data.data["sex"]
classifier = DecisionTreeClassifier(min_samples_leaf=10, max_depth=4)
classifier.fit(X, y_true)
y_pred = classifier.predict(X)
# Analyze metrics using MetricFrame
metrics = {
"accuracy": accuracy_score,
"precision": precision_score,
"false positive rate": false_positive_rate,
"false negative rate": false_negative_rate,
"selection rate": selection_rate,
"count": count,
}
metric_frame = MetricFrame(
metrics=metrics, y_true=y_true, y_pred=y_pred, sensitive_features=sex
)
metric_frame.by_group.plot.bar(
subplots=True,
layout=[3, 3],
legend=False,
figsize=[12, 8],
title="Show all metrics",
)
# Customize plots with ylim
metric_frame.by_group.plot(
kind="bar",
ylim=[0, 1],
subplots=True,
layout=[3, 3],
legend=False,
figsize=[12, 8],
title="Show all metrics with assigned y-axis range",
)
# Customize plots with colormap
metric_frame.by_group.plot(
kind="bar",
subplots=True,
layout=[3, 3],
legend=False,
figsize=[12, 8],
colormap="Accent",
title="Show all metrics in Accent colormap",
)
# Customize plots with kind (note that we are only plotting the "count" metric here because we are showing a pie chart)
metric_frame.by_group[["count"]].plot(
kind="pie",
subplots=True,
layout=[1, 1],
legend=False,
figsize=[12, 8],
title="Show count metric in pie chart",
)
# Saving plots
fig = metric_frame.by_group[["count"]].plot(
kind="pie",
subplots=True,
layout=[1, 1],
legend=False,
figsize=[12, 8],
title="Show count metric in pie chart",
)
# Don't save file during doc build
if "__file__" in locals():
fig[0][0].figure.savefig("filename.png")
Total running time of the script: (0 minutes 2.470 seconds)