Exemplo n.º 1
0
    '''
    data['X']['mid_level_lapse_rate_ens_mean_spatial_mean'] = data['X']['mid_level_lapse_rate_ens_mean_spatial_mean'] / 2.67765 
    X['mid_level_lapse_rate_ens_mean_spatial_mean'] = X['mid_level_lapse_rate_ens_mean_spatial_mean'] / 2.67765

    fname = join(perm_path, f'permutation_importance_all_models_{target}_{time}_training_{metric}{drop_opt}{perm_method}.nc')
    explainer = InterpretToolkit(X=data['X'],y=data['targets'],estimator_output='probability',) 
    perm_results = explainer.load(fname)
    #important_vars = perm_results['multipass_rankings__LogisticRegression'].values[:12]
    #important_vars = ['low_level_lapse_rate_ens_mean_spatial_mean']

    important_vars = ['mid_level_lapse_rate_ens_mean_spatial_mean']
    all_vars = perm_results['singlepass_rankings__LogisticRegression'].values

    display_feature_names = {f: to_readable_names([f])[0] for f in all_vars} 
    #display_feature_names = _fix_long_names(display_feature_names)
    feature_units = {f: get_units(f)for f in all_vars}

    if option == 'interaction':
        interaction_index = 'auto'
        y = None
    elif option == 'targets':
        interaction_index=None
        y =data['targets']
    elif option == 'interaction_and_target':
        interaction_index = 'auto'
        y =data['targets']
    else:
        interaction_index=None
        y =data['targets']
        y = np.ones((len(y)))
    )

    #examples_subset = shap.sample(examples_transformed, 1000)

    myInterpreter = InterpretToolkit(model=[model.steps[-1][1]],
                                     model_names=[model_name],
                                     examples=examples_subset,
                                     targets=target_subset,
                                     feature_names=feature_names)

    display_feature_names = {
        f: to_readable_names([f])[0]
        for f in feature_names
    }
    display_feature_names = _fix_long_names(display_feature_names)
    feature_units = {f: get_units(f) for f in feature_names}

    date_subset = date_col[:len(examples_subset)].reshape(
        len(examples_subset), 1)

    examples_subset = np.concatenate((examples_subset, date_subset), axis=1)
    examples_subset = pd.DataFrame(examples_subset,
                                   columns=original_feature_names)

    if normalize_method != None:
        unnormalize = UnNormalize(model.steps[1][1], feature_names)
        feature_values = unnormalize._full_inverse_transform(examples_subset)
    else:
        unnormalize = None
        feature_values = examples_subset.values
        'cin_ml_ens_mean_spatial_mean',
        'lcl_ml_ens_mean_spatial_mean',
        'shear_v_0to6_ens_mean_spatial_mean',
        'srh_0to3_ens_mean_spatial_mean',
    ]

    # {'w_up_time_max_ens_mean_of_90th': 'Updraft  ($\\mu_e$ of P$_{90}$ of max$_t$)', 'uh_2to5_time_max_ens_mean_of_90th': '2-5 km UH  ($\\mu_e$ of P$_{90}$ of max$_t$)', 'cape_ml_ens_mean_spatial_mean': 'ML CAPE  ($\\mu_e$)'}
    display_feature_names = {
        f: to_readable_names([f])[0].split('(')[0][:-1]
        for f in important_vars
    }

    print(display_feature_names)

    display_feature_names = _fix_long_names(display_feature_names)
    feature_units = {f: get_units(f) for f in important_vars}

    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

        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)