models=[calibrated_pipeline], model_names=model_names, examples=examples, targets=target_values, ) # Load the permutation important results from the saved pickle file with open(f'IMPORTANT_FEATURES_ALL_MODELS_{target}_{time}.pkl', 'rb') as pkl_file: important_vars = pickle.load(pkl_file) features = list(itertools.combinations(important_vars, r=2)) results = myInterpreter.calc_ale( features=features, n_bootstrap=n_bootstrap, subsample=subsample, n_jobs=njobs, n_bins=n_bins, ) results_fname = join( ale_path, f'ale_2d_results_{model_name}_{target}_{time}{drop_opt}{resample_method}.nc' ) print(f'Saving {results_fname}...') myInterpreter.save_results(fname=results_fname, data=results) duration = datetime.datetime.now() - start_time seconds = duration.total_seconds() hours = seconds // 3600
model_names=[model_name], examples=examples_transformed, targets=target_values_transformed, feature_names=feature_names) 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_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()}',
parameters['model_name'] = model_name calibrated_pipeline = _load_model(**parameters) model = calibrated_pipeline.calibrated_classifiers_[0].base_estimator 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) result_dict = myInterpreter.calc_ale( features=feature_names, nbootstrap=1, subsample=0.6, njobs=40, nbins=30, ) ale_std = [] for f in feature_names: ale_std.append(np.std(result_dict[f][model_name]['values'], ddof=1)) dropped_features = [] idx = np.argsort(ale_std)[::-1] c = 0 # Drop a feature if its std(ALE) is an order of magnitude # less than the max std(ALE) for i in idx: if c == 0: