Fair Candidate Screening System =============================== Setup ----- .. code:: ipython3 #!git clone https://github.com/pikalab-unibo-students/master-thesis-dizio-ay2324.git .. code:: ipython3 import utils import pandas as pd import numpy as np from enum import Enum # Fairlib import chardet import fairlib as fl from fairlearn.metrics import demographic_parity_ratio, equalized_odds_ratio from fairlib.preprocessing import LFR, DisparateImpactRemover, Reweighing from fairlib.inprocessing import AdversarialDebiasing # Statistics from matplotlib import pyplot as plt import seaborn as sns # Preprocessing from sklearn.preprocessing import OrdinalEncoder from sklearn.preprocessing import StandardScaler from sklearn.model_selection import train_test_split # Classification from sklearn.model_selection import StratifiedKFold from sklearn.linear_model import LogisticRegression from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score, roc_auc_score import torch import torch.nn as nn # Post-processing from aif360.algorithms.postprocessing import CalibratedEqOddsPostprocessing, EqOddsPostprocessing, RejectOptionClassification, DeterministicReranking from aif360.datasets import StandardDataset .. code:: ipython3 # Allowing reproducibility random_seed = 42 np.random.seed(random_seed) Dataset Loading --------------- .. code:: ipython3 dataset_path = 'direct_matching_20240213.csv' .. code:: ipython3 with open(dataset_path, 'rb') as f: result = chardet.detect(f.read()) encoding = result['encoding'] .. code:: ipython3 df = fl.DataFrame(pd.read_csv(dataset_path, delimiter=';', encoding=encoding)) Data Preparation ---------------- .. code:: ipython3 df.head(11) .. raw:: html
| cand_id | job_id | distance_km | match_score | match_rank | cand_gender | cand_age_bucket | cand_domicile_province | cand_domicile_region | cand_education | job_contract_type | job_professional_category | job_sector | job_work_province | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 5,664,912 | OFF_1011_1427 | 32.327042 | 99.573387 | 1 | Male | 45-54 | UD | FRIULI VENEZIA GIULIA | NaN | Lavoro subordinato | Geometra e tecnico di costruzioni civili e ind... | Progettisti / Design / Grafici | UD |
| 1 | 4,999,120 | OFF_1011_1427 | 15.595593 | 99.210564 | 2 | Male | 35-44 | UD | FRIULI VENEZIA GIULIA | NaN | Lavoro subordinato | Geometra e tecnico di costruzioni civili e ind... | Progettisti / Design / Grafici | UD |
| 2 | 5,413,671 | OFF_1011_1427 | 31.348877 | 99.118614 | 3 | Female | 45-54 | UD | FRIULI VENEZIA GIULIA | NaN | Lavoro subordinato | Geometra e tecnico di costruzioni civili e ind... | Progettisti / Design / Grafici | UD |
| 3 | 5,965,090 | OFF_1011_1427 | 66.315598 | 97.409767 | 4 | Male | 15-24 | TS | FRIULI VENEZIA GIULIA | NaN | Lavoro subordinato | Geometra e tecnico di costruzioni civili e ind... | Progettisti / Design / Grafici | UD |
| 4 | 5,771,219 | OFF_1011_1427 | 15.595593 | 97.323875 | 5 | Female | 35-44 | UD | FRIULI VENEZIA GIULIA | NaN | Lavoro subordinato | Geometra e tecnico di costruzioni civili e ind... | Progettisti / Design / Grafici | UD |
| 5 | 2,216,205 | OFF_1011_1427 | 24.946939 | 96.922318 | 6 | Male | 55-74 | UD | FRIULI VENEZIA GIULIA | Diploma / Accademia : Geometra | Lavoro subordinato | Geometra e tecnico di costruzioni civili e ind... | Progettisti / Design / Grafici | UD |
| 6 | 4,594,051 | OFF_1011_1427 | 27.959969 | 96.245216 | 7 | Male | 55-74 | UD | FRIULI VENEZIA GIULIA | NaN | Lavoro subordinato | Geometra e tecnico di costruzioni civili e ind... | Progettisti / Design / Grafici | UD |
| 7 | 5,148,878 | OFF_1011_1427 | 25.512180 | 96.235245 | 8 | Male | 25-34 | UD | FRIULI VENEZIA GIULIA | NaN | Lavoro subordinato | Geometra e tecnico di costruzioni civili e ind... | Progettisti / Design / Grafici | UD |
| 8 | 5,933,345 | OFF_1011_1427 | 28.856832 | 96.009712 | 9 | Female | 45-54 | GO | FRIULI VENEZIA GIULIA | NaN | Lavoro subordinato | Geometra e tecnico di costruzioni civili e ind... | Progettisti / Design / Grafici | UD |
| 9 | 7,204,128 | OFF_1011_1427 | 31.348877 | 95.802277 | 10 | Female | 35-44 | UD | FRIULI VENEZIA GIULIA | NaN | Lavoro subordinato | Geometra e tecnico di costruzioni civili e ind... | Progettisti / Design / Grafici | UD |
| 10 | 5,025,089 | OFF_1038_1739 | 17.786076 | 99.949821 | 1 | Male | 25-34 | MI | LOMBARDIA | Diploma / Accademia : Liceo scientifico | Ricerca e selezione | Macellaio (m/f) | GDO / Retail / Commessi / Scaffalisti | MI |
| cand_id | job_id | distance_km | cand_gender | cand_age_bucket | cand_domicile_province | cand_domicile_region | cand_education | job_contract_type | job_professional_category | job_sector | job_work_province | hired | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 5,664,912 | OFF_1011_1427 | 32.327042 | Male | 45-54 | UD | FRIULI VENEZIA GIULIA | NaN | Lavoro subordinato | Geometra e tecnico di costruzioni civili e ind... | Progettisti / Design / Grafici | UD | 0 |
| 1 | 4,999,120 | OFF_1011_1427 | 15.595593 | Male | 35-44 | UD | FRIULI VENEZIA GIULIA | NaN | Lavoro subordinato | Geometra e tecnico di costruzioni civili e ind... | Progettisti / Design / Grafici | UD | 0 |
| 2 | 5,413,671 | OFF_1011_1427 | 31.348877 | Female | 45-54 | UD | FRIULI VENEZIA GIULIA | NaN | Lavoro subordinato | Geometra e tecnico di costruzioni civili e ind... | Progettisti / Design / Grafici | UD | 0 |
| 3 | 5,965,090 | OFF_1011_1427 | 66.315598 | Male | 15-24 | TS | FRIULI VENEZIA GIULIA | NaN | Lavoro subordinato | Geometra e tecnico di costruzioni civili e ind... | Progettisti / Design / Grafici | UD | 0 |
| 4 | 5,771,219 | OFF_1011_1427 | 15.595593 | Female | 35-44 | UD | FRIULI VENEZIA GIULIA | NaN | Lavoro subordinato | Geometra e tecnico di costruzioni civili e ind... | Progettisti / Design / Grafici | UD | 0 |
| cand_id | job_id | distance_km | cand_gender | cand_age_bucket | cand_domicile_province | cand_domicile_region | cand_education | job_contract_type | job_professional_category | job_sector | job_work_province | hired | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| count | 8647 | 8647 | 8647.000000 | 8647 | 8646 | 8644 | 8642 | 2341 | 8647 | 8647 | 8647 | 8647 | 8647.000000 |
| unique | 6798 | 865 | NaN | 2 | 5 | 79 | 18 | 433 | 3 | 247 | 26 | 53 | NaN |
| top | 6,550,205 | OFF_1011_1427 | NaN | Male | 25-34 | MI | LOMBARDIA | Licenza media | Lavoro subordinato | Operaio Generico Metalmeccanico | Operai Generici | MI | NaN |
| freq | 18 | 10 | NaN | 4766 | 2936 | 1341 | 3989 | 433 | 5658 | 770 | 2829 | 1689 | NaN |
| mean | NaN | NaN | 29.769432 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 0.612582 |
| std | NaN | NaN | 23.493063 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 0.487189 |
| min | NaN | NaN | 0.000000 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 0.000000 |
| 25% | NaN | NaN | 12.253924 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 0.000000 |
| 50% | NaN | NaN | 23.447361 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 1.000000 |
| 75% | NaN | NaN | 41.754654 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 1.000000 |
| max | NaN | NaN | 99.966797 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 1.000000 |
| distance_km | cand_age_bucket | cand_domicile_province | cand_education | job_contract_type | job_professional_category | job_sector | job_work_province | hired | grouped_regions | |
|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 32 | 45-54 | 71.0 | NaN | Lavoro subordinato | Geometra e tecnico di costruzioni civili e ind... | Progettisti / Design / Grafici | UD | 0 | north Male |
| 1 | 16 | 35-44 | 71.0 | NaN | Lavoro subordinato | Geometra e tecnico di costruzioni civili e ind... | Progettisti / Design / Grafici | UD | 0 | north Male |
| 2 | 31 | 45-54 | 71.0 | NaN | Lavoro subordinato | Geometra e tecnico di costruzioni civili e ind... | Progettisti / Design / Grafici | UD | 0 | north Female |
| 3 | 66 | 15-24 | 69.0 | NaN | Lavoro subordinato | Geometra e tecnico di costruzioni civili e ind... | Progettisti / Design / Grafici | UD | 0 | north Male |
| 4 | 16 | 35-44 | 71.0 | NaN | Lavoro subordinato | Geometra e tecnico di costruzioni civili e ind... | Progettisti / Design / Grafici | UD | 0 | north Female |
| distance_km | cand_age_bucket | cand_domicile_province | cand_education | job_contract_type | job_professional_category | job_sector | job_work_province | hired | grouped_regions | |
|---|---|---|---|---|---|---|---|---|---|---|
| count | 8520.000000 | 8520.000000 | 8520.000000 | 8520.000000 | 8520.000000 | 8520.000000 | 8520.000000 | 8520.000000 | 8520.000000 | 8520 |
| unique | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 6 |
| top | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | north Male |
| freq | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 4350 |
| mean | 29.658803 | 1.892019 | 39.069131 | 5.233685 | 0.677465 | 136.788615 | 9.522183 | 27.065258 | 0.610681 | NaN |
| std | 23.349403 | 1.170752 | 23.577801 | 1.530368 | 0.945372 | 67.772409 | 4.105599 | 15.813288 | 0.487625 | NaN |
| min | 0.000000 | 0.000000 | 0.000000 | 0.000000 | 0.000000 | 0.000000 | 0.000000 | 0.000000 | 0.000000 | NaN |
| 25% | 12.000000 | 1.000000 | 11.000000 | 6.000000 | 0.000000 | 91.000000 | 7.000000 | 9.000000 | 0.000000 | NaN |
| 50% | 23.000000 | 2.000000 | 38.000000 | 6.000000 | 0.000000 | 126.000000 | 12.000000 | 26.000000 | 1.000000 | NaN |
| 75% | 42.000000 | 3.000000 | 59.000000 | 6.000000 | 2.000000 | 203.000000 | 12.000000 | 44.000000 | 1.000000 | NaN |
| max | 100.000000 | 4.000000 | 77.000000 | 7.000000 | 2.000000 | 246.000000 | 17.000000 | 52.000000 | 1.000000 | NaN |
| hired | 0 | 1 |
|---|---|---|
| grouped_regions | ||
| 0.0 | 0.358491 | 0.641509 |
| 1.0 | 0.523649 | 0.476351 |
| 2.0 | 0.370315 | 0.629685 |
| 3.0 | 0.391954 | 0.608046 |
| 4.0 | 0.939394 | 0.060606 |
| 5.0 | 0.475610 | 0.524390 |