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()
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