if normalize_method != None: unnormalize_func = UnNormalize(model.steps[1][1], feature_names) else: unnormalize_func = None result_dict = myInterpreter.calc_ale( features=important_vars, nbootstrap=100, subsample=1.0, njobs=njobs, nbins=30, ) ale_results.append(result_dict) myInterpreter.model_names = model_set ale_results = merge_nested_dict(ale_results) myInterpreter.set_results(ale_results, option='ale') fig, axes = myInterpreter.plot_ale( display_feature_names=display_feature_names, to_probability=True, display_units=feature_units, title= f'{plt_config.title_dict[target]} {time.replace("_", " ").title()}', unnormalize=unnormalize_func, n_columns=n_columns, figsize=figsize) fname = f'ale_{target}_{time}_{drop_opt}_special.png' base_plot.save_figure(fig=fig, fname=fname)
njobs = 1 if model_name == 'XGBoost' else len(important_vars) if normalize_method != None: unnormalize_func = UnNormalize(model.steps[1][1], feature_names) else: unnormalize_func = None result_dict = myInterpreter.calc_pd( features=important_vars, nbootstrap=10, subsample=0.1, njobs=njobs, nbins=20, ) pd_results.append(result_dict) myInterpreter.model_names = model_set pd_results = merge_nested_dict(pd_results) myInterpreter.set_results(pd_results, option='pdp') fig, axes = myInterpreter.plot_pd( display_feature_names=display_feature_names, to_probability=True, display_units=feature_units, title= f'{plt_config.title_dict[target]} {time.replace("_", " ").title()}', unnormalize=unnormalize_func) fname = f'pdp_{target}_{time}_{drop_opt}.png' base_plot.save_figure(fig=fig, fname=fname)
ale_results = [] for i, model_name in enumerate(model_set): parameters['model_name'] = model_name calibrated_pipeline = _load_model(**parameters) model = calibrated_pipeline.calibrated_classifiers_[0].base_estimator path = '/work/mflora/ML_DATA/permutation_importance/' fnames = [ join( path, f'permutation_importance_{model_name}_{target}_{time}_training_norm_aupdc{drop_opt}.pkl' ) ] perm_imp_results = load_pickle(fnames) myInterpreter = InterpretToolkit(model=[None]) myInterpreter.set_results(perm_imp_results, option='permutation_importance') important_vars = myInterpreter.get_important_vars( perm_imp_results, multipass=True, combine=False, )[model_name][:9] important_vars = ['srh_0to1_ens_mean_spatial_mean'] examples_transformed, target_values_transformed = just_transforms( model, examples, target_values) myInterpreter = InterpretToolkit(model=[model.steps[-1][1]], model_names=[model_name], examples=examples_transformed, targets=target_values_transformed, feature_names=feature_names)
stp_examples = stp_examples.values print(stp_examples.shape) base_clf = model.steps[-1][1] myInterpreter = InterpretToolkit(model=[base_clf], model_names=[model_name], examples=stp_examples, targets=stp_target_values, feature_names=feature_names) out_dict = myInterpreter.calc_contributions( method='shap', data_for_shap=examples_transformed, performance_based=True, n_examples=250, shap_sample_size=200) results.append(out_dict) myInterpreter.model_names = model_set results = merge_nested_dict(results) myInterpreter.set_results(results, option='contributions') fig = myInterpreter.plot_contributions(to_only_varname=to_only_varname, model_names=model_set, wspace=2.0) fname = f'contributions_stp_geq_2_performance_based_all_models_{target}_{time}{drop_opt}.png' print(f'Saving {fname}..') base_plot.save_figure(fig=fig, fname=fname)