コード例 #1
0
        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)
コード例 #2
0
        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)
コード例 #3
0
    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)
コード例 #4
0
        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)