nirdizati_light.explanation.wrappers.ice_wrapper
1from pdpbox import info_plots 2#from pdpbox.utils import _get_grids 3from sklearn.inspection import PartialDependenceDisplay 4#from src.encoding.common import get_encoded_df 5#from src.encoding.models import ValueEncodings 6#from src.explanation.models import Explanation 7 8 9def ice_explain(CONF, predictive_model, encoder, target_df,explanation_target= None): 10 if explanation_target is None: 11 explanation_target = 'AMOUNT_REQ' 12 else: 13 explanation_target = explanation_target 14 target_df = target_df.iloc[:,1:] 15 feature_grids, percentile_info = _get_grids( 16 feature_values=target_df[explanation_target].values, num_grid_points=10, grid_type=None, 17 percentile_range='percentile', grid_range=None) 18 custom_grids = [x for x in range(int(feature_grids.min()), int(feature_grids.max()))] 19 fig, axes, summary_df = info_plots.target_plot( 20 df = target_df, 21 feature = explanation_target, 22 feature_name = explanation_target, 23 cust_grid_points = custom_grids, 24 target = 'label', 25 show_percentile = False 26 ) 27 summary_df = summary_df[summary_df['count'] != 0] 28 lists = list(target_df[explanation_target].values) 29 indexs = [lists.index(x) for x in summary_df['x']] 30 encoder.decode(target_df) 31 values = target_df[explanation_target].values 32 lst = [] 33 for x in range(len(indexs) - 1): 34 lst.append({'value': values[indexs[x]], 35 'label': summary_df['label'].iloc[x], 36 'count': int(summary_df['count'].iloc[x]), 37 }) 38 return lst,fig,axes
def
ice_explain(CONF, predictive_model, encoder, target_df, explanation_target=None):
10def ice_explain(CONF, predictive_model, encoder, target_df,explanation_target= None): 11 if explanation_target is None: 12 explanation_target = 'AMOUNT_REQ' 13 else: 14 explanation_target = explanation_target 15 target_df = target_df.iloc[:,1:] 16 feature_grids, percentile_info = _get_grids( 17 feature_values=target_df[explanation_target].values, num_grid_points=10, grid_type=None, 18 percentile_range='percentile', grid_range=None) 19 custom_grids = [x for x in range(int(feature_grids.min()), int(feature_grids.max()))] 20 fig, axes, summary_df = info_plots.target_plot( 21 df = target_df, 22 feature = explanation_target, 23 feature_name = explanation_target, 24 cust_grid_points = custom_grids, 25 target = 'label', 26 show_percentile = False 27 ) 28 summary_df = summary_df[summary_df['count'] != 0] 29 lists = list(target_df[explanation_target].values) 30 indexs = [lists.index(x) for x in summary_df['x']] 31 encoder.decode(target_df) 32 values = target_df[explanation_target].values 33 lst = [] 34 for x in range(len(indexs) - 1): 35 lst.append({'value': values[indexs[x]], 36 'label': summary_df['label'].iloc[x], 37 'count': int(summary_df['count'].iloc[x]), 38 }) 39 return lst,fig,axes