< ✏️ Examples

COMPAS Reality Example#

This example demonstrates which features are most important that indicate the recidivism of an criminal. The COMPAS Dataset was utilized to determine the characteristics of the criminals and whether or not they reoffended two years following the crime.

Warning

This example explains reality, not model predictions. As a result, we cannot assess the model’s fairness because we lack predictions (y_predict) and cannot compare them to reality (y_true).

This dataset can be obtained using the load_compas() function:

>>> from xaiographs.datasets import load_compas
>>> df_dataset = load_compas()
>>> df_dataset.head(3)
   id FirstName   LastName Gender        Age_range         Ethnicity  days_b_screening_arrest     c_jail_in    c_jail_out  Days_in_jail c_charge_degree                   c_charge_desc  is_recid  is_violent_recid score_risk_recidivism score_text_risk_recidivism  score_risk_violence score_text_risk_violence  Low_Recid  Medium_Recid  High_Recid  No_Recid  score_text_risk_violence  Low_Recid  Medium_Recid  High_Recid  No_Recid  Recid  predict_two_year_recid  real_two_year_recid
0   1    miguel  hernandez   Male  Greater than 45             Other                     -1.0  13/8/13 6:03  14/8/13 5:41             1               F    Aggravated Assault w/Firearm         0                 0                     1                        Low                    1                      Low          1             0           0         1                       Low          1             0           0         1      0                       0                    0
1   3     kevon      dixon   Male          25 - 45  African-American                     -1.0  26/1/13 3:45   5/2/13 5:36            10               F  Felony Battery w/Prior Convict         1                 1                     3                        Low                    1                      Low          1             0           0         0                       Low          1             0           0         0      1                       0                    1
2   5     marcu      brown   Male     Less than 25  African-American                      NaN           NaN           NaN             0               F          Possession of Cannabis         0                 0                     8                       High                    6                   Medium          0             0           1         1                    Medium          0             0           1         1      0                       1                    0

To determine the explainability of this dataset, XAIoGraphs provides a dataset that has already been discretized and columns with targets probabilities using load_compas_reality_discretized() function:

>>> from xaiographs.datasets import load_compas_reality_discretized
>>> df_dataset, features_cols, target_cols = load_compas_reality_discretized()
>>> df_dataset.head(3)
  id Gender        Age_range         Ethnicity MaritalStatus c_charge_degree is_recid is_violent_recid  Recid  No_Recid
0  1   Male  Greater than 45             Other        Single               F       NO               NO      0         1
1  3   Male          25 - 45  African-American        Single               F      YES              YES      1         0
2  5   Male          25 - 45             Other     Separated               M       NO               NO      0         1

 

Code Example#

The following entry point (with Python virtual environment enabled) is used to demonstrate this example.

>> compas_reality_example

Alternatively, you may run the code below to view a full implementation of all XAIoGraphs functionalities with this Dataset:

from xaiographs import Explainer
from xaiographs import Why
from xaiographs.datasets import load_compas_reality_discretized, load_compas_reality_why

LANG = 'en'

# LOAD DATASETS & SEMANTICS
df_compas, feature_cols, target_cols = load_compas_reality_discretized()
df_values_semantics, df_target_values_semantics = load_compas_reality_why(language=LANG)

# EXPLAINER
explainer = Explainer(importance_engine='LIDE', verbose=1)
explainer.fit(df=df_compas, feature_cols=feature_cols, target_cols=target_cols)

# WHY
why = Why(language=LANG,
          explainer=explainer,
          why_values_semantics=df_values_semantics,
          why_target_values_semantics=df_target_values_semantics,
          verbose=1)
why.fit()

 

XAIoWeb COMPAS#

After running the .fit() methods of each of the classes (one, two, or all three), a sequence of JSON files are generated in the xaioweb_files folder to visualized in XAIoWeb interface.

To launch the web (with the virtual environment enabled), run the following entry point:

>> xaioweb -d xaioweb_files -o -f

And the results seen in XAIoWeb are the following:

 

Global Explainability#

 

Global Explainability

 

Local Explainability#

 

Local Explainability

 

< ✏️ Examples