Exemple #1
0
 def test_minimum_query_instances(self):
     pytest.importorskip('sklearn')
     backend = 'sklearn'
     exp = self._get_exp(backend)
     with pytest.raises(UserConfigValidationException):
         query_instances = helpers.load_adult_income_dataset().drop("income", axis=1)[0:1]
         exp.global_feature_importance(query_instances)
Exemple #2
0
 def _get_exp(self, backend, method="random"):
     dataset = helpers.load_adult_income_dataset()
     d = dice_ml.Data(dataframe=dataset, continuous_features=['age', 'hours_per_week'], outcome_name='income')
     ML_modelpath = helpers.get_adult_income_modelpath(backend=backend)
     m = dice_ml.Model(model_path=ML_modelpath, backend=backend)
     exp = dice_ml.Dice(d, m, method=method)
     return exp
Exemple #3
0
 def test_user_data_corruption(self):
     dataset = helpers.load_adult_income_dataset()
     dataset_copy = dataset.copy()
     dice_ml.Data(dataframe=dataset, continuous_features=['age', 'hours_per_week'],
                  outcome_name='income', permitted_range={'age': [45, 60]},
                  continuous_features_precision={'hours_per_week': 2})
     pd.testing.assert_frame_equal(dataset, dataset_copy)
def data_object():
    dataset = helpers.load_adult_income_dataset()
    return dice_ml.Data(dataframe=dataset,
                        continuous_features=['age', 'hours_per_week'],
                        outcome_name='income',
                        permitted_range={'age': [45, 60]},
                        continuous_features_precision={'hours_per_week': 2})
Exemple #5
0
 def _get_exp(self,
              backend,
              method="random",
              is_public_data_interface=True):
     if is_public_data_interface:
         dataset = helpers.load_adult_income_dataset()
         d = dice_ml.Data(dataframe=dataset,
                          continuous_features=['age', 'hours_per_week'],
                          outcome_name='income')
     else:
         d = dice_ml.Data(features={
             'age': [17, 90],
             'workclass':
             ['Government', 'Other/Unknown', 'Private', 'Self-Employed'],
             'education': [
                 'Assoc', 'Bachelors', 'Doctorate', 'HS-grad', 'Masters',
                 'Prof-school', 'School', 'Some-college'
             ],
             'marital_status':
             ['Divorced', 'Married', 'Separated', 'Single', 'Widowed'],
             'occupation': [
                 'Blue-Collar', 'Other/Unknown', 'Professional', 'Sales',
                 'Service', 'White-Collar'
             ],
             'race': ['Other', 'White'],
             'gender': ['Female', 'Male'],
             'hours_per_week': [1, 99]
         },
                          outcome_name='income')
     ML_modelpath = helpers.get_adult_income_modelpath(backend=backend)
     m = dice_ml.Model(model_path=ML_modelpath, backend=backend)
     exp = dice_ml.Dice(d, m, method=method)
     return exp
Exemple #6
0
def public_data_object():
    """
    Returns a public data object for the adult income dataset
    """
    dataset = helpers.load_adult_income_dataset()
    return dice_ml.Data(dataframe=dataset,
                        continuous_features=['age', 'hours_per_week'],
                        outcome_name='income')
Exemple #7
0
def pyt_exp_object():
    backend = 'PYT'
    dataset = helpers.load_adult_income_dataset()
    d = dice_ml.Data(dataframe=dataset, continuous_features=['age', 'hours_per_week'], outcome_name='income')
    ML_modelpath = helpers.get_adult_income_modelpath(backend=backend)
    m = dice_ml.Model(model_path= ML_modelpath, backend=backend)
    exp = dice_ml.Dice(d, m)
    return exp
Exemple #8
0
def create_adult_income_dataset():
    dataset = helpers.load_adult_income_dataset()
    continuous_features = ['age', 'hours_per_week']
    target_name = 'income'
    target = dataset[target_name]
    classes = list(np.unique(target))
    categorical_features = list(
        set(dataset.columns) - set(continuous_features) - set([target_name]))
    # Split data into train and test
    data_train, data_test, y_train, y_test = train_test_split(dataset,
                                                              target,
                                                              test_size=5000,
                                                              random_state=7,
                                                              stratify=target)
    return data_train, data_test, y_train, y_test, categorical_features, \
        continuous_features, target_name, classes
Exemple #9
0
@author: dtd
"""

import sys
sys.path.append('/home/dtd/Documents/interpretable_machine_learning/Source Code/DiCE-master')

from dice_ml.utils import helpers # helper functions
from dice_ml.data_interfaces import public_data_interface
import numpy as np
import tensorflow as tf
from dice_ml.model_interfaces import keras_tensorflow_model
from dice_ml.dice_interfaces import dice_tensorflow2
import sys 
if __name__ == "__main__":
    data = helpers.load_adult_income_dataset()
    params = {}
    params['dataframe'] = data
    params['continuous_features'] = ['age', 'hours_per_week']
    params['outcome_name'] = 'income'
    
    data_inter = public_data_interface.PublicData(params)
    model_path = helpers.get_adult_income_modelpath()
    print("Loading model ")
    model = keras_tensorflow_model.KerasTensorFlowModel(model_path=model_path)
    print("Loading CE")
    dice = dice_tensorflow2.DiceTensorFlow2(data_inter, model)
	#
    query_instance = {'age':22,
                      'workclass':'Private',
                      'education':'HS-grad',