示例#1
0
def shap_values(model, x_train, x_text, features, initialization_examples):
    """    
    Provides feature importances to explain the model.
    
    Parameters:
    x_train: input dataset to train the model
    x_test: test dataset
    model: trained model
    features: list of feature names. Optional, used if doing classification
    classes: list of output class labels or names. Optional, used if doing classification
    
    Returns:
    explainer (object): provides the feature importances that determines the prediction of the model
    global_explanation (object): provides the global feature importances that determines the prediction of the model
    local_explanation (object): provides the global feature importances that determines the prediction of the model
    
    """
    explainer = TabularExplainer(model, x_train, features=features)

    # you can use the training data or the test data here
    global_explanation = explainer.explain_global(x_test)

    # explain the selected data point in the test set
    local_explanation = explainer.explain_local(x_test)

    return explainer, global_explanation, local_explanation
x_train, x_test, y_train, y_test = train_test_split(
    X, y, test_size=0.2, random_state=0)

clf = svm.SVC(gamma=0.001, C=100., probability=True)
model = clf.fit(x_train, y_train)

explainer = TabularExplainer(model,
                             x_train,
                             features=feature_names,
                             classes=classes)

global_explanation = explainer.explain_global(x_test)


instance_num = 0
local_explanation = explainer.explain_local(x_test[instance_num, :])

prediction_value = clf.predict(x_test)[instance_num]

sorted_local_importance_values = local_explanation.get_ranked_local_values()[
    prediction_value]
sorted_local_importance_names = local_explanation.get_ranked_local_names()[
    prediction_value]


ExplanationDashboard(global_explanation, model, dataset=x_test, true_y=y_test)
ModelPerformanceDashboard(model, dataset=x_test, true_y=y_test)

input("Press Enter to continue...")
# Evaluate the RFC model
from sklearn.metrics import confusion_matrix
cm = confusion_matrix(Y_test, Y_predict)
score = rfc.score(X_test, Y_test)

#explainability

from interpret.ext.blackbox import TabularExplainer

classes = ['Not Greater than 50k', "Greater than 50k"]
features = list(X.columns)

tab_explainer = TabularExplainer(trained_model,
                                 X_train,
                                 features=features,
                                 classes=classes)

#global
global_explaination = tab_explainer.explain_global(X_train)

global_fi = global_explaination.get_feature_importance_dict()

#local

X_explain = X_test[:5]

local_explaination = tab_explainer.explain_local(X_explain)

local_f = local_explaination.get_ranked_local_names()
local_importance = local_explaination.get_ranked_local_values()
示例#4
0
global_tab_feature_importance = global_tab_explanation.get_feature_importance_dict()


# PFIExplainer
global_pfi_explanation = pfi_explainer.explain_global(X_train, y_train)
global_pfi_feature_importance = global_pfi_explanation.get_feature_importance_dict()


# MimicExplainer
local_mim_explanation = mim_explainer.explain_local(X_test[0:5])
local_mim_features = local_mim_explanation.get_ranked_local_names()
local_mim_importance = local_mim_explanation.get_ranked_local_values()


# TabularExplainer
local_tab_explanation = tab_explainer.explain_local(X_test[0:5])
local_tab_features = local_tab_explanation.get_ranked_local_names()
local_tab_importance = local_tab_explanation.get_ranked_local_values()

#for showing it on client interface

# Import Azure ML run library
from azureml.core.run import Run
from azureml.contrib.interpret.explanation.explanation_client import ExplanationClient
from interpret.ext.blackbox import TabularExplainer
# other imports as required

# Get the experiment run context
run = Run.get_context()

# code to train model goes here