# pip install aif360 scikit-learn pandas

import pandas as pd
from sklearn.linear_model import LogisticRegression
from aif360.datasets import BinaryLabelDataset
from aif360.metrics import ClassificationMetric

df = pd.DataFrame({
    'Experience': [4,6,7,8,9,10,5,4,3,2,1,0],
    'Gender':     [1,1,1,1,1,1,0,0,0,0,0,0],
    'Hired':      [1,1,1,1,0,0,0,0,0,0,0,0]
})

model = LogisticRegression().fit(df[['Experience','Gender']], df['Hired'])

df2 = df.copy()
df2['Hired'] = model.predict(df[['Experience','Gender']])

d1 = BinaryLabelDataset(df=df,  label_names=['Hired'], protected_attribute_names=['Gender'])
d2 = BinaryLabelDataset(df=df2, label_names=['Hired'], protected_attribute_names=['Gender'])

m = ClassificationMetric(d1, d2,
        privileged_groups=[{'Gender':1}],
        unprivileged_groups=[{'Gender':0}])

hr_unpriv = df2[df2['Gender']==0]['Hired'].mean()
hr_priv   = df2[df2['Gender']==1]['Hired'].mean()

print("\n--- Fairness Analysis of Model Predictions ---")
print(f"Disparate Impact Ratio: {m.disparate_impact():.2f}")
print(f"Predicted Hire Rate for Unprivileged (Females): {hr_unpriv:.2f}")
print(f"Predicted Hire Rate for Privileged (Males): {hr_priv:.2f}")