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)
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
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})
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
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')
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
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
@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',