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