{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# This code is heavily derived from https://slundberg.github.io/shap/notebooks/Iris%20classification%20with%20scikit-learn.html\n", "import sklearn\n", "from sklearn.model_selection import train_test_split\n", "import numpy as np\n", "import shap\n", "import time\n", "\n", "X_train, X_test, y_train, y_test = train_test_split(*shap.datasets.iris(), test_size=0.2, random_state=42)\n", "\n", "# rather than use the whole training set to estimate expected values, we could summarize with\n", "# a set of weighted kmeans, each weighted by the number of points they represent. But this dataset\n", "# is so small we don't worry about it\n", "# X_train_summary = shap.kmeans(X_train, 50)\n", "\n", "shap.initjs()" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Accuracy = 1.0000\n" ] }, { "data": { "text/html": [ "\n", "
\n", "
\n", " Visualization omitted, Javascript library not loaded!
\n", " Have you run `initjs()` in this notebook? If this notebook was from another\n", " user you must also trust this notebook (File -> Trust notebook). If you are viewing\n", " this notebook on github the Javascript has been stripped for security. If you are using\n", " JupyterLab this error is because a JupyterLab extension has not yet been written.\n", "
\n", " " ], "text/plain": [ "" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# clf = sklearn.neighbors.KNeighborsClassifier()\n", "# clf = sklearn.tree.DecisionTreeClassifier()\n", "clf = sklearn.ensemble.RandomForestClassifier(n_estimators=100, random_state=42)\n", "\n", "clf.fit(X_train, y_train)\n", "# print_accuracy(clf.predict)\n", "print('Accuracy = %.4f' % sklearn.metrics.accuracy_score(y_test, clf.predict(X_test)))\n", "\n", "i = 13\n", "c = 0 # ['setosa', 'versicolor', 'virginica']\n", "# explainer = shap.KernelExplainer(clf.predict_proba, X_train)\n", "explainer = shap.TreeExplainer(clf)\n", "shap_values = explainer.shap_values(X_test.iloc[i])\n", "# plot the SHAP values for the ['setosa', 'versicolor', 'virginica'] output of the i-th instance\n", "shap.force_plot(explainer.expected_value[c], shap_values[c], X_test.iloc[i])" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "
\n", "
\n", " Visualization omitted, Javascript library not loaded!
\n", " Have you run `initjs()` in this notebook? If this notebook was from another\n", " user you must also trust this notebook (File -> Trust notebook). If you are viewing\n", " this notebook on github the Javascript has been stripped for security. If you are using\n", " JupyterLab this error is because a JupyterLab extension has not yet been written.\n", "
\n", " " ], "text/plain": [ "" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "c = 1\n", "shap.force_plot(explainer.expected_value[c], shap_values[c], X_test.iloc[i])" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "
\n", "
\n", " Visualization omitted, Javascript library not loaded!
\n", " Have you run `initjs()` in this notebook? If this notebook was from another\n", " user you must also trust this notebook (File -> Trust notebook). If you are viewing\n", " this notebook on github the Javascript has been stripped for security. If you are using\n", " JupyterLab this error is because a JupyterLab extension has not yet been written.\n", "
\n", " " ], "text/plain": [ "" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "c = 2\n", "shap.force_plot(explainer.expected_value[c], shap_values[c], X_test.iloc[i])" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "
\n", "
\n", " Visualization omitted, Javascript library not loaded!
\n", " Have you run `initjs()` in this notebook? If this notebook was from another\n", " user you must also trust this notebook (File -> Trust notebook). If you are viewing\n", " this notebook on github the Javascript has been stripped for security. If you are using\n", " JupyterLab this error is because a JupyterLab extension has not yet been written.\n", "
\n", " " ], "text/plain": [ "" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "shap_values = explainer.shap_values(X_test)\n", "# plot the SHAP values for the ['setosa', 'versicolor', 'virginica'] output of all instances\n", "shap.force_plot(explainer.expected_value[c], shap_values[c], X_test)" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "image/png": "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SXjsgMcZNGhQ0xR+Wf7fUmprFLo6TURka3Ts2JGlS5eyfv36vIKlDRs2cPXVV/Pggw+yZMkSdtop9McsXbqU4uJiHn74YcaMGcNVV13FoYceytixY+nTpw+XX345paWl9O/fH4ALL7yQq666aov8CwsLWbly5WbLVq5cuVkPU31Tj5KIiIhUqU+fPuy8885MmzYtr/WnTp3K9OnTmTVrFhUVFZSXlwNQeSui3r17M336dBYvXszgwYM544wzAGjXrh3jx49nwYIFlJWVMWHCBGbP3vI2gAcddBALFizYrAfp5Zdf5qCDavqRkLpToCQiIiJVKi4uZvTo0VxyySVMmzaNNWvW8Nlnn/H4449zxRVXbLH+qlWraN26NR07dmTNmjWMHDlyU9q6deu47777qKiooKCggKKiIlq0CD/HOmPGDObPn0+SJJuWV6al7b///hx++OH87Gc/Y+3atTz66KO88sornHrqqQ3WBgqUREREJNOIESOYMGECY8aMoXPnzuy1117ccsstDB48eIt1hw4dSrdu3ejSpQs9e/bkyCOP3Cx9ypQplJSUUFRUxMSJEzfdpHLevHmccMIJFBYW0qdPHy6++GL69etXZX0eeOABvPd06NCBq666ioceeqjBbg0ADXxnbtk+lJWVJU02R0lERKRp6M7cIiIiIltDgZKIiIhIBgVKIiIiIhkUKImIiIhkUKAkIiIikkFXvQlu3PpNB8GiyWWZ600cNiQzbdSVOo5ERGS7oqveRERERLaGAiURERGRDAqUREREpM5KS0s599xzm7oaDUaBkoiIiFRr6tSpmBmFhYXsscceDBgwgOeff77R67F48WLOPvts9txzT4qLiznqqKN48cUXG7TMlg2au4iIiNTJ4i882qD57/avU/Jab8KECYwdO5aJEydy0kkn0apVK5544gmmT5/O0Ucf3aB1zLV69Wp69+7NhAkT2G233Zg8eTInn3wy5eXlFBYWNkiZ6lESERGRKlVUVDBq1ChuvfVWhgwZQtu2bSkoKGDQoEHcdNNNVW5z+umns/vuu1NcXMwxxxzD3LlzN6XNnDmTnj170q5dO7p06cK4ceMAWLp0KQMHDqR9+/bsuuuu9O3bl40bN26Rd/fu3RkxYgR77LEHLVq04MILL2TdunW8+eabDdMAKFASERGRDHPmzGHt2rWcckp+vU8AAwYM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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "shap.summary_plot(shap_values, X_test)" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "shap.dependence_plot('petal length (cm)', shap_values[c], X_test, interaction_index='petal width (cm)')" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", " \n", "
\n", " \n", " \n", " " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from lime.lime_tabular import LimeTabularExplainer\n", "lime_explainer = LimeTabularExplainer(X_train.values, feature_names=X_train.columns)\n", "exp = lime_explainer.explain_instance(X_test.iloc[i], clf.predict_proba, num_features=len(X_test.columns))\n", "exp.show_in_notebook()" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.5.6" } }, "nbformat": 4, "nbformat_minor": 2 }