shap_plots.ipynb 78.7 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11
{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Libraries"
   ]
  },
  {
   "cell_type": "code",
12
   "execution_count": 1,
13 14 15 16 17 18
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import numpy as np\n",
    "import shap\n",
19 20
    "import matplotlib.pyplot as plt\n",
    "import matplotlib.patches as mpatches"
21 22 23 24 25 26 27 28 29 30 31
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Data"
   ]
  },
  {
   "cell_type": "code",
32
   "execution_count": 2,
33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
   "metadata": {},
   "outputs": [],
   "source": [
    "# Retrieve attribute names in order\n",
    "attribute_names = list(np.load('../gen_train_data/data/output/attributes.npy', allow_pickle=True))\n",
    "\n",
    "# Load test data\n",
    "X_test_pre = np.load('../gen_train_data/data/output/pre/X_test_pre.npy', allow_pickle=True)\n",
    "y_test_pre = np.load('../gen_train_data/data/output/pre/y_test_pre.npy', allow_pickle=True)\n",
    "X_test_post = np.load('../gen_train_data/data/output/post/X_test_post.npy', allow_pickle=True)\n",
    "y_test_post = np.load('../gen_train_data/data/output/post/y_test_post.npy', allow_pickle=True)\n",
    "\n",
    "# Type conversion needed    \n",
    "data_dic = {\n",
    "    \"X_test_pre\": pd.DataFrame(X_test_pre, columns=attribute_names).convert_dtypes(),\n",
    "    \"y_test_pre\": y_test_pre,\n",
    "    \"X_test_post\": pd.DataFrame(X_test_post, columns=attribute_names).convert_dtypes(),\n",
    "    \"y_test_post\": y_test_post,\n",
    "}"
   ]
  },
  {
   "cell_type": "code",
56
   "execution_count": 3,
57 58 59 60 61 62 63 64 65 66 67 68 69 70
   "metadata": {},
   "outputs": [],
   "source": [
    "method_names = {\n",
    "    0: \"ORIG\",\n",
    "    1: \"ORIG_CW\",\n",
    "    2: \"OVER\",\n",
    "    3: \"UNDER\"\n",
    "}\n",
    "model_choices = {\n",
    "    \"ORIG\": \"XGB\",\n",
    "    \"ORIG_CW\": \"RF\",\n",
    "    \"OVER\": \"XGB\",\n",
    "    \"UNDER\": \"XGB\"\n",
71 72 73 74
    "}\n",
    "\n",
    "soc_var_names = np.load('../EDA/soc_vars_names.npy', allow_pickle=True)\n",
    "ind_var_names = np.load('../EDA/ind_vars_names.npy', allow_pickle=True)"
75 76 77 78 79 80
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
Joaquin Torres's avatar
Joaquin Torres committed
81
    "##### SHAP Plots"
82 83 84 85
   ]
  },
  {
   "cell_type": "code",
86
   "execution_count": null,
87
   "metadata": {},
88
   "outputs": [],
89
   "source": [
90
    "method_name = 'OVER'\n",
91
    "plt.figure(figsize=(35, 75))\n",
92 93 94 95 96 97 98
    "for i, group in enumerate(['pre', 'post']):\n",
    "            X_test = data_dic['X_test_' + group]\n",
    "            y_test = data_dic['y_test_' + group]\n",
    "            model_name = model_choices[method_name]\n",
    "            shap_vals = np.load(f'./output/shap_values/{group}_{method_name}.npy')\n",
    "            ax = plt.subplot(2,1,i+1)\n",
    "            shap.summary_plot(shap_vals, X_test, max_display=len(attribute_names), show=False)\n",
99 100
    "            plt.title(group.upper(), fontsize = 12, fontweight='bold')\n",
    "            plt.xlabel('SHAP Value')\n",
101
    "            plt.xlim(-3,5)\n",
102 103 104 105 106 107 108 109 110 111 112
    "            used_colors = {'purple': 'Social factor', 'green': 'Individual factor'}\n",
    "            for label in ax.get_yticklabels():\n",
    "                label_text = label.get_text()  # Get the text of the label\n",
    "                label.set_fontsize(8)\n",
    "                if label_text in soc_var_names:\n",
    "                        label.set_color('purple')\n",
    "                else:\n",
    "                        label.set_color('green')\n",
    "                # Create custom legend for each subplot\n",
    "                handles = [mpatches.Patch(color=color, label=label) for color, label in used_colors.items()]\n",
    "                ax.legend(handles=handles, loc='lower right', fontsize=8)\n",
113
    "            \n",
114 115
    "plt.suptitle(f'SHAP Summary Plots PRE vs POST - Pipeline: Oversampling - Model: {model_name}\\n\\n')\n",
    "plt.subplots_adjust(wspace=1)\n",
116
    "plt.tight_layout()\n",
Joaquin Torres's avatar
Joaquin Torres committed
117 118
    "plt.savefig(f'./output/plots/shap_summary/{method_name}_{model_name}.svg', format='svg', dpi=1250)\n",
    "plt.show()"
119
   ]
120 121 122
  },
  {
   "cell_type": "code",
123
   "execution_count": null,
124
   "metadata": {},
125
   "outputs": [],
126
   "source": [
Joaquin Torres's avatar
Joaquin Torres committed
127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150
    "method_name = 'ORIG_CW'\n",
    "plt.figure(figsize=(35, 75))\n",
    "for i, group in enumerate(['pre', 'post']):\n",
    "            X_test = data_dic['X_test_' + group]\n",
    "            y_test = data_dic['y_test_' + group]\n",
    "            model_name = model_choices[method_name]\n",
    "            shap_vals = np.load(f'./output/shap_values/{group}_{method_name}.npy')\n",
    "            shap_vals = shap_vals[:,:,1] # Select shap values for positive class\n",
    "            ax = plt.subplot(2,1,i+1)\n",
    "            shap.summary_plot(shap_vals, X_test, max_display=len(attribute_names), show=False)\n",
    "            plt.title(group.upper(), fontsize = 12, fontweight='bold')\n",
    "            plt.xlabel('SHAP Value')\n",
    "            plt.xlim(-0.5,0.5)\n",
    "            used_colors = {'purple': 'Social factor', 'green': 'Individual factor'}\n",
    "            for label in ax.get_yticklabels():\n",
    "                label_text = label.get_text()  # Get the text of the label\n",
    "                label.set_fontsize(8)\n",
    "                if label_text in soc_var_names:\n",
    "                        label.set_color('purple')\n",
    "                else:\n",
    "                        label.set_color('green')\n",
    "                # Create custom legend for each subplot\n",
    "                handles = [mpatches.Patch(color=color, label=label) for color, label in used_colors.items()]\n",
    "                ax.legend(handles=handles, loc='lower right', fontsize=8)\n",
151
    "\n",
Joaquin Torres's avatar
Joaquin Torres committed
152 153 154
    "plt.suptitle(f'SHAP Summary Plots PRE vs POST - Pipeline: Original with Class Weight - Model: {model_name}\\n\\n')\n",
    "plt.subplots_adjust(wspace=1)\n",
    "plt.tight_layout()\n",
Joaquin Torres's avatar
Joaquin Torres committed
155 156
    "plt.savefig(f'./output/plots/shap_summary/{method_name}_{model_name}.svg', format='svg', dpi=1250)\n",
    "plt.show()"
157
   ]
158 159 160 161 162
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
Joaquin Torres's avatar
Joaquin Torres committed
163
    "##### SHAP Interaction Plots"
164 165 166 167 168 169
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
Joaquin Torres's avatar
Joaquin Torres committed
170
    "Had to modify beeswarm.py (line 591)"
171 172 173 174
   ]
  },
  {
   "cell_type": "code",
Joaquin Torres's avatar
Joaquin Torres committed
175
   "execution_count": 7,
176 177 178
   "metadata": {},
   "outputs": [],
   "source": [
Joaquin Torres's avatar
Joaquin Torres committed
179
    "method_name = 'ORIG_CW'\n",
180
    "group = 'pre'"
181 182 183 184
   ]
  },
  {
   "cell_type": "code",
Joaquin Torres's avatar
Joaquin Torres committed
185
   "execution_count": 17,
186 187 188 189 190
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
191 192 193 194 195 196 197 198
       "<Figure size 1000x1000 with 0 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
Joaquin Torres's avatar
Joaquin Torres committed
199
      "image/png": "iVBORw0KGgoAAAANSUhEUgAABHoAAAJ+CAYAAADMjmdZAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8fJSN1AAAACXBIWXMAAA9hAAAPYQGoP6dpAADM+0lEQVR4nOzdd3wUdf7H8ffsZlNJTwhJKKEX6R1FqiiIoiCWw4KA5Wx4ep7n/fQEPM+78+70sJ2KCp6ABQWxgtIF6UgPPfQUQhJIz2Z3fn8gazaFmuyS9fV8PHjozHdm9jNlN8l7v/MdwzRNUwAAAAAAAKj1LN4uAAAAAAAAANWDoAcAAAAAAMBHEPQAAAAAAAD4CIIeAAAAAAAAH0HQAwAAAAAA4CMIegAAAAAAAHwEQQ8AAAAAAICPIOgBAAAAAADwEQQ9AAAAAAAAPoKgB8B5S0lJ0fjx43XZZZepTp06CggIUFxcnNq0aaMRI0boL3/5i7Zu3eq2zpIlS2QYhuvftGnTvFP8OZo2bZpbvUuWLHG1ncu+LF++XNdee61iYmJktVorLFt2/bvvvtsj+5SUlOR6zX79+p3zeuWPxZn+bdy4scbqr428cZ4lafPmzRo3bpyaN2+u4OBgBQUFKSEhQe3atdNtt92mf/zjHzpw4IDbOuWv66rqnThx4jm/l3/66acK10irVq3OWHu/fv2qvL7CwsLUvn17Pf7449q/f/95HpVTLuTY4NJ29913V/l5jZpR236ml//cKvsvKChITZo00R133KEff/yxwrpn+n0AAC5Vft4uAEDt8v3332v48OHKz893m5+RkaGMjAwlJydrzpw5cjgcatu2rZeq9K5NmzZp4MCBKikp8XYp+BV6//33dc8996i0tNRtfmpqqlJTU7V161Z9/PHHiouLq/HwaebMmRXm7dy5U+vXr1eXLl3Oe3u5ubnasmWLtmzZoilTpuijjz7S0KFDz3n9S+nYoHZISkpyBX99+/b9VfyR/2vb56KiIqWkpCglJUUzZ87UhAkTNGHChBp/3YkTJ2rSpEmu6ZSUFCUlJdX46wL4dSDoAXDO8vLydPvtt7uFPO3bt1fDhg1VXFysnTt36uDBg5WuGxsbq5tuusk1XZt/mTnbvsycOdMt5Gnfvr2aNWsmwzBcy5Zdv1u3bjVab3Vr3bq12rRpU2lbRESEZ4uBmwMHDuj+++93BRkWi0VdunRRfHy88vLytH37dqWlpXmkFtM09dFHH1XaNnPmzHMOeoYMGaLg4GAVFBRo7dq1yszMlHTq8+jWW2/V7t27FR8ff9btXErHBqjtavvP9K5du6pRo0YqLS3V1q1btXfvXkmnPrcmTpyozp076/rrr/dylQBw4Qh6AJyzefPm6dixY67pzz77TCNGjHBbZv/+/fr0008VHR3tNv+yyy7Tp59+6pE6a9rZ9iUjI8Nteu3atfL393ebV5uPxS233KKJEyd6uwxUYtasWSouLpZ06rax1atXq2vXrm7LbN++XR9//LFiY2NrtJZly5bp8OHDrmmbzSa73S5J+uijj/TPf/5TFsvZ7yB/4403XH9E5uTkqG/fvtq8ebMkKT8/X1OnTtX//d//nXU7l9KxAWq72v4z/aGHHnL12nM6nbrnnns0depUV/urr75K0AOgVmOMHgDnbM+ePW7TAwcOrLBMUlKSnnjiCY0ZM8Zt/pnu59+/f79b28SJE/XTTz/p2muvVXh4uKKionTLLbe4xuTIysrSgw8+qPj4eAUGBqpjx46V3iJS2X31ixcv1lVXXaXw8HCFhoZq4MCB+uGHH87rOFS1L6fHACg/VkFAQIBr2dP7cLaxUOx2u9577z1dffXVqlu3rvz9/RUdHa2rrrpK06dPl9PprLS248eP66GHHlJiYqICAwPVpk0bvfTSS3I4HOe1jxdr+/btCgoKcu3jtdde69a+ePFiWSwWV/v999/vavv+++/14IMPqmfPnmrYsKFCQkIUEBCg+Ph4DR48WB988IFM06zwmmXHdklKSlJeXp6eeOIJNWjQQMHBwerSpYtmz57tWv7dd99V+/btFRgYqISEBD3yyCPKzc2tsN3y5yojI0MPPvig6tevr8DAQLVq1Ur//Oc/K9wOdC4u9DxXpex7NCIiotJeM23atNGkSZPO65anC1H2PWmxWPSHP/zBNX306NELuh0kIiJCv/vd79zmrVu37pzWvZhjU358j/LjA5UfI+ZM66akpOi///2v2rZt6xob5IUXXnC9R3/44QcNHDhQoaGhioiI0PDhw7V79+4KtdbU9T5lyhTddddd6tChg+Lj4xUQEKDg4GA1bdpUo0aNqvLzsvz75OjRoxo3bpwSExNltVo1YcIENW/e3LVMnz59KmzD4XCoXr16rmWq4w/tyn6+HDhwQOPGjXPtX6tWrTR58mS39U4f37LjNS1durTCtso6fPiwnnzySXXs2FFhYWEKCAhQUlKSxowZU2HcunM9bqdfY82aNXrsscfUp08fJSUlKSwsTP7+/qpbt6769++v11577Yy3Cy9fvlyjR49Ws2bNFBISopCQEDVp0kS/+c1vtHTp0vPe53MZoycjI0N//vOf1bVrV0VERMjf318JCQm6/vrr9dlnn53T57jdbtfLL7+sdu3aKTAwULGxsRo9erTS09Or3NfzZbFY9Oc//9lt3rl+rpyWkpKixx57TO3atVNoaKgCAgLUsGFD3XLLLVq4cKHbsqd/Nyl725YkNW7c2G3fAeCimABwjv71r3+Zklz/Bg8ebC5cuNAsLCw867qLFy92W3fq1KmutpSUFLe2gQMHmgEBAW7zJJnx8fFmcnKy2bRp0wptksz333/f7TWnTp3q1n7HHXeYhmFUWM9qtZqffvrpGdddvHjxWfdlwoQJldZV9l9KSoppmqbbvNGjR7u9dlpamtmtW7czbmfo0KFmUVGR23rp6elm8+bNK11++PDhZv369V3Tffv2Pes5q+pYTJgw4ZzWmzx5cqXnJzc312zcuLFrfosWLcy8vDzXerfffvtZj+OIESNMh8Ph9np9+/Z1tcfFxZldu3atdN3p06eb48ePr7Rt4MCBptPpdNtu2fb+/fu7Hcfyx/hM61bXeT6Thx9+uMI1v3LlSrOkpOSs65a/rsvXe1r567zse/m0kpISMyoqyrVMnz59zMOHD7u9/8aNG1fp9suex7LvmdO+/vprt/ZBgwaddd9M8+KOTfl9Ll/T6NGj3drPtO7QoUMrPdf33nuv+cknn5hWq7VCW1xcnJmRkVHlcarO6z0xMfGM16RhGOZLL71U4RiVXaZfv35mvXr1KnxuvPzyy27zkpOT3baxcOFCt/bZs2ef9dxUdvzLfl6X//kyePBgMzw8vNJ9e+655yo9vlX9K/tZOHfuXDM0NLTKZW02m/nee+9d0HEzTdN8+umnz1pPr169zIKCArftOxwO84EHHjjjeo8++uh57/OZfqabpmkuXbrUjI6OPuO2rr/++gqfb+Wv6379+lW6bps2bc7pd4/Tzva5lZ+fX+F8nXam3wdM0zRnzZplBgcHn3Ff77//ftd7rfz2KvvXqFGjc943AKgMPXoAnLPLL7/cbXrevHmub547deqkRx55RAsXLqz0W7rzsXDhQhmGof79+6tRo0au+ampqercubP27t2r9u3bV6jnbIMnTp8+XWFhYbrqqqvUtGlT13yHw6Fx48Zd9DeEbdq00U033eRWs3RqPJ7T/0JCQs64DdM0ddNNN2nt2rWuea1atdJ1112nli1buuZ9/fXXeuyxx9zWfeSRR9y++Q8NDdVVV12lFi1aaM6cOW630VyMTz75RCNHjqzwr2yPjdP1XH311a7pxx57TOnp6XrqqaeUkpIi6dTtPDNmzKhwXPz9/dWhQwcNGDBAN9xwg/r37+82/s/s2bP1ySefVFljenq61q1bp7Zt26p3795ubffee69eeeUVxcTEaNCgQQoNDXW1LVy40PXtdmUWL16sI0eOqHv37rriiivk5/fLHdBz5szR22+/XeW6ZV3MeT6T8u+J6dOnq1evXgoLC1OvXr305JNPatWqVee0rSVLllR6ns903E+bN2+esrKyXNMjR45UYmKievbs6Zr32WefXdCA5Zs2bXKbrlev3jmtV53H5mJ8/fXXSkxM1KBBgxQYGOiaf7onjc1m04ABA1S/fn1XW3p6ul5//fUqt1nd13t4eLi6du2qq6++WsOGDVOvXr0UEBAg6dS1+8c//lGHDh2qsp4lS5YoLS1NiYmJGjx4sNq3by/DMDRmzBjVqVPHbZ/LKntt1a1bV9ddd12Vr3Gh5s2bp9zcXPXo0aNCr65//OMfysvLk3RqEOKbbrpJwcHBrvaYmBi3z/PTY5Vt2bJFt956q6uHlM1mU58+fTR48GCFh4dLOtV779577630qU6nVXXcTrNarbrsssvUr18/3XDDDRo0aJDi4uJc7StXrqzQM2nixIn673//6zavZcuWGjp0qLp16yar1eqafz77fCZHjhzRDTfcoOPHj7u95lVXXaWwsDDXvC+//LJCD72y0tPTtWTJEjVs2FADBw50+zmxffv2KscAuxAX+rny008/6fbbb1dBQYFrXseOHdW/f38FBQW55r311lt68cUXJZ3q+XzTTTepdevWbtsaMmSI6ziX7wULAOfNuzkTgNpm2LBhZ/0mqnPnzuauXbvc1jufHj0Wi8X88ccfTdM0zZycnArflD300EOudW+++Wa3trLftJf/1qxBgwbm4cOHTdM0zdLSUvM3v/mNW/sLL7xQ5brn0qPn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Pch1OonIymbqnI+pmpkNwF8RYTxy3ZXUzE0mcvzQco5WzjaTw4ozxEtifg1yww5QK32/3zxNVjzYSMFFKG6TjciOSvSIiIiIiJwuJXpEpOw92ptaC8Zxx6p5HAyJhmwrHu+RoTi1UtPp9/sm0q12TCZNuvtPEFnfRd66VByGm+LvuBcTXtxYcBgu7De2LIcIRUREREQqB83RIyJlztSuHvkt62DGQkhmOvne0GJl4tLSmN/yonKITsqDLSWVOmzAMArINx+9dLqBhVzMeAjiIHayMTn0DEJERERE5HTp07SInBW2xEMY5LOfCwErVvyXUF9VK46IZhqi809hZHoxYyLOnQCAFztgwkwBpsPLrJsAuyWr3GIUEREREakM1KNHRM6KvMBoMOWQZwogFwcHA4N8+5ZcUIePWjXmvpF1yzFCOZfcsVUxYcOEHRM2PNgpwOpL8vjKGXr+ICIiIiJyJpToEZGzwvTva4l3NCI9IAgDE5YcC79WrclzXTqysmZ1VnTaR6No/Rf0T2EZ24dcwvBgw4uNQ8SSRqxfGQMTmZYq5RShiIiIiEjloEenInJWBA1pScHL60hJceIlj+C8AuokZ3B99nZaRR8gtv+/yztEOYdsN7YC50hy31tJwr6/2NU8gvozPJgwE0ISXsxkUA1brZDyDlVERERE5Lymx+kiclaYrGYar70Vp9lDWkgAe6LD2BcVRqg5nSrTbizv8KQc2Po0xfHxrfwyrDqJlwTgjDORSRUSacRBLiAfJ1UebVveYYqIiIiInNeU6BGRs8YaYKX7p5dRMzCXqLw06mXvo8nDLbF309w8ArWWDaBa/UM4SSaSeOreHo7lzu7lHZaIiIiIyHlNQ7dE5KwKbl+dtlsH8b+X38MVFEiL4R3LOySpKGpHE7LjeUK27IHwQIiNLO+IRERERETOe0r0iMg5kRdpKe8QpKJqXKO8IxARERERqTQ0dEtEREREREREpJJQokdEREREREREpJJQokdEREREREREpJJQokdEREREREREpJJQokdEREREREREpJJQokdEREREREREpJJQokdEREREREREpJJQokdEREREREREpJJQokdEREREREREpJJQokdEREREREREpJJQokdEREREREREpJJQokdEREREREREpJJQokdEREREREREpJJQokdEREREREREpJJQokdEREREREREpJJQokdEREREREREpJJQokdEREREREREpJJQokdEREREREREpJJQokdEREREREREpJJQokdEREREREREpJJQokdEREREREREpJJQokdEREREREREpJJQokdEREREREREpJJQokdEREREREREpJJQokdEREREREREpJJQokdEREREREREpJJQokdEREREREREpJJQokdEREREREREpJJQokdEREREREREpJJQokdEREREREREpJJQokdEREREREREpJJQokdEREREREREpJJQokdEREREREREpJJQokdEREREREREpJJQokdEREREREREpJJQokdEREREREREpJJQokdEREREREREpJJQokdEREREREREpJJQokdEREREREREpJJQokdEREREREREpJJQokdEREREREREpJJQokdEREREREREpJJQokdEREREREREpJJQokdEREREREREpJJQokdEREREREREpJJQokdEREREREREpJJQokdEREREREREpJJQokdEREREREREpJKwlncAIiIiIiIiIqfC4/HgcrnKOwyRc8pms2GxWE5YTokekXJmGAaZmZnlHcZZ5XK5yM3NBSAjIwObzVbOEZ19ISEhmEymUzpGbaFyUlsondqDiIicKsMwSExMJC0trbxDESkX4eHhVKtW7bifJ0yGYRjnMCYROUZGRgZhYWHlHYaUsfT0dEJDQ0/pGLWFykltQY52Ou1BRESO2L9/P2lpacTExBAYGKjkufxjGIZBTk4OBw8eJDw8nNjY2FLLqkePSDkLCQkhPT29TM6VlZVF7969+eqrrwgODi6Tc5aVf1psISEhp3WM2kL5qoxtAf5597wsnK24Tqc9iIhIIY/H40vyVKlSpbzDETnnAgICADh48CAxMTGlDuNSokeknJlMpjJ7ums2m7FYLISGhlaoL0yg2E6G2kL5qyixlWVbgIpzXSWpqLFV1LhERP7JiubkCQwMLOdIRMpPUft3uVylJnq06paIiIiIiIicNzRcS/7JTqb9K9EjIiIiIiIiIlJJKNEjUonY7Xbuuusu7HZ7eYdSjGI7tyryNSm2c68iX1dFja2ixiUiIiJyIlp1S0RERERERCq8vLw84uPjqVu3Lk6ns7zDqRSGDBnCsmXLSEhIOOVj69SpQ7du3ZgxY8Zxy2VlZXH//ffz5ZdfcuDAAe677z5effXV04pXTu73QJMxi4iIiIiIyHkt/a90cpJzyjsMAqMCCasVdlrHbty4kfHjx7N69WoOHDhAlSpVaNKkCX369GHUqFFlHOm5M2HCBGbMmMGTTz5J/fr1ady48Vmpo0mTJvTt27fMz30+Uo8eERERERERqfBK68mQ/lc6/230X9x57nKMrpDVaWXk1pGnnOz55Zdf6N69O7Vq1WLw4MFUq1aNv//+m19//ZWdO3eyY8eOsxKvy+XC6/XicDhO+diT7dHToUMHrFYrP/3002lGeWLBwcH079//hLFUBurRIyIiIiIiIpVaTnJOhUjyALjz3OQk55xyoufZZ58lLCyM1atXEx4e7rfv4MGDZRihP5vNdtbOXeTgwYM0adLkrNdT1rKzswkKCirvME6LJmMWOc/9+OOP3HzzzVx66aX069ePzz///ITHuFwuXnvtNe666y46depEu3btSEtLO+0YEhISGDFiBJ06daJXr1689tpruFyuEx5nGAYzZsygd+/edOzYkaFDh7Jx48bTjqMsY5s3bx73338/PXr0oF27dixZsqRM4zpbyrs9qC1UHOXdFqDitod/WlsQEZGKb+fOnTRt2rRYkgcgJibG77Xb7ebpp5+mfv36OBwO6tSpw+OPP05+fn6xY7/55hu6du1KSEgIoaGhXHTRRbz//vu+/UOGDKFOnTp+x7z00ktceumlVKlShYCAANq2bcv8+fNP+ZqWLVuGyWQiPj6er776CpPJhMlkIiEhgYKCAsaMGUPbtm0JCwsjKCiIzp07s3Tp0mLn8Xq9vPbaazRv3hyn00l0dDRXXHEFv/32G1C43Hh2djYzZ8701TFkyBDf8b///jtXXnkloaGhBAcH869//Ytff/3Vr44ZM2ZgMpn44YcfGDFiBDExMdSoUeOUr7miUKJH5Dy2bt06HnnkEZo3b87rr7/O5ZdfztNPP33CLx95eXl8+umn2O12WrdufUYxZGRkMHz4cNxuNy+++CIjRozgk08+YdKkSSc8dubMmUyePJmBAwfyyiuvEBUVxciRI9mzZ88ZxVQWsX311VekpaXRsWPHMonlXCjv9qC2UHGUd1uAitse/mltQUREzg+1a9dmzZo1bNq06YRl77zzTsaMGUObNm145ZVX6Nq1K8899xw33XSTX7mihyYpKSmMHj2a559/nlatWvHtt98e9/yvvfYarVu35qmnnmLChAlYrVZuuOEGvvrqq1O6psaNGzN79myioqJo1aoVs2fPZvbs2URHR5ORkcF7771Ht27dmDhxIuPGjSMpKYlevXqxbt06v/Pccccd3H///dSsWZOJEyfy2GOP4XQ6fcma2bNn43A46Ny5s6+Ou+++G4A//viDzp07s379eh599FGefPJJ4uPj6datGytXriwW84gRI9i8eTNjxozhscceO6XrrUg0dEvkPPbee+/RtGlTHn/8cQDatWvHnj17mDx5Mj169Cj1uJCQEL7//ntMJhNffPEFK1asOO0YPv74Y7Kzs3nxxRcJCyvsourxeJg4cSK333470dHRJR6Xn5/P9OnTGTRoELfccgsArVu3pl+/fsyZM6dM/mM93dgApk2bhtlsZt++faf8R628lHd7UFuoOMq7LUDFbQ//tLYgIiLnh4cffpgrr7ySVq1acfHFF9O5c2f+9a9/0b17d7/hVevXr2fmzJnceeedvPvuuwC+HigvvfQSS5cupXv37qSnp3Pvvfdy8cUXs2zZMr+5XE40Te+2bdsICAjwvR45ciRt2rRh0qRJ9O7d+6SvqWrVqgwaNIgnnniCuLg4Bg0a5NvndDpJSEjAbrf7tt11111ceOGFvPHGG0ydOhWApUuXMmPGDO69915ee+01X9mHHnrIdx2DBg1i+PDh1KtXz68OgCeeeAKXy8VPP/1EvXr1ALjtttto1KgRjz76KD/88INf+cjISL777jssFstJX2dFpB49IuepgoICfvvtt2Jf2nr27El8fDz79u077vEmk6lM4vjll1+4+OKLfV+YAC6//HK8Xm+xLpFH27BhA9nZ2X7x22w2unfvzs8//1yusQGYzefXf48VoT2oLVQMFaEtQMVtD/+ktiAiIuePyy+/nBUrVtCnTx/Wr1/PCy+8QK9evYiLi/Mbfv31118D8OCDD/od/9BDDwH4HkQsXryYzMxMX++Xo53ob/3RSZ7U1FTS09Pp3Lkza9euPf0LPIbFYvElebxeLykpKbjdbtq1a+dXz8cff4zJZGLs2LHFznGi6/B4PCxatIi+ffv6kjwAsbGxDBw4kJ9++omMjAy/Y+66667zPskDSvSInLf27NmD2+0uNqa2bt26QOEcFOdCQkJCsRhCQkKIioo6bgxF+0qKPzExkby8vHKL7XxUEdqD2kLFUBHaQlE9FbE9/JPagoiInF8uuugiFixYQGpqKqtWrWL06NFkZmbSv39/Nm/eDMDu3bsxm800aNDA79hq1aoRHh7O7t27gcI5fwCaNWt2ynF8+eWXdOjQAafTSWRkJNHR0bz99tukp6ef4RX6mzlzJi1atMDpdFKlShWio6P56quv/OrZuXMn1atXJzIy8pTPn5SURE5ODo0aNSq2r3Hjxni9Xv7++2+/7UWfl853SvSInKeKss8hISF+20NDQ/32n4s4jo2hKK7jxZCRkYHdbi+2lGNISAiGYZCZmVlusZ2PKkJ7UFuoGCpCWyiqpyK2h39SWxARkfOT3W7noosuYsKECbz99tu4XC7mzZvnV6aseuAea/ny5fTp0wen08lbb73F119/zeLFixk4cOAJh3ydijlz5jBkyBDq16/P1KlT+fbbb1m8eDGXXXYZXq+3zOo5VUf3ZjqfaY4ekQokKyuL5OTkE5aLi4s7B9FIeVN7kCJqCyIiIv9M7dq1A2D//v1A4aTNXq+X7du307hxY1+5AwcOkJaWRu3atQGoX78+AJs2bSrW++d4Pv74Y5xOJwsXLvR76DJ9+vQzvpajzZ8/n3r16rFgwQK/pNWxQ7Tq16/PwoULSUlJOW6vnpISX9HR0QQGBrJ169Zi+/7880/MZjM1a9Y8g6uouJToEalAlixZwjPPPHPCcvPnz/c9nc/KyvLbV/REumj/2RYaGlosBoDMzMzjxhAaGkpBQQH5+fl+f0QyMzMxmUwlPnE/V7FVFOdbe1BbOHvOt7ZQVE9FbA/ne1sQEZHKaenSpXTr1q1YwqJoTp6i4UdXXXUVjz/+OK+++iqTJ0/2lStaPbJosuSePXsSEhLCc889xxVXXFFsMubSegRZLBZMJhMej8e3LSEhgU8//fTML/KYeo6NZeXKlaxYsYJatWr5yl1//fW8+eabjB8/3m8y5mOPDQoKIi0trVgdPXv25LPPPvMbun3gwAHef/99OnXqVGn/9ivRI1KB9O3bl759+55U2YKCAqxWKwkJCVxyySW+7aXNb3G21KlTp9i8FkW9D44XQ9G+3bt307BhQ9/2hIQEqlWrVmzSuHMZW0VxvrUHtYWz53xrC0X1VMT2cL63BRERqZxGjRpFTk4O1113HRdeeCEFBQX88ssvfPjhh9SpU4ehQ4cC0LJlSwYPHsyUKVNIS0uja9eurFq1ipkzZ9K3b1+6d+8OFD7YeOWVV7jzzju56KKLGDhwIBEREaxfv56cnBxmzpxZYhy9e/dm0qRJXHHFFQwcOJCDBw/y5ptv0qBBAzZs2FBm13v11VezYMECrrvuOnr37k18fDzvvPMOTZo08Xsg0717d2699VZef/11tm/fzhVXXIHX62X58uV0796dkSNHAtC2bVuWLFnCpEmTqF69OnXr1qV9+/Y888wzLF68mE6dOjFixAisViuTJ08mPz+fF154ocyup6LRHD0i5ym73U67du347rvv/LYvXryYunXrUr169XMSx6WXXsqqVav85s1YsmQJZrOZDh06lHpcixYtCAoKYsmSJb5tbrebpUuX0rFjx3KN7XxUEdqD2kLFUBHaAlTc9vBPagsiInL+eOmll+jevTtff/01Dz74IA8++CCrVq1ixIgRrFy5kvDwcF/Z9957j/Hjx7N69Wruv/9+vv/+e0aPHs0HH3zgd8477riDzz//nNDQUJ5++mn+/e9/s3btWq688spS47jsssuYOnUqiYmJ3H///fzvf/9j4sSJXHfddWV6vUOGDGHChAmsX7+ee++9l4ULFzJnzhzfULWjTZ8+nRdffJH4+HgeeeQRJkyYQG5uLpdeeqmvzKRJk2jbti1PPPEEN998M2+//TYATZs2Zfny5TRr1oznnnuO8ePHU7t2bZYuXUr79u3L9JoqEpNRljMqicg5tW7dOu6++26uu+46evTowZo1a3jvvfd47rnn/JYmbt++Pb1792bMmDG+bT///DO5ubmsWbOGefPmMWbMGAIDA6lXr57f8oMnkpGRwY033kitWrW4/fbbOXjwIK+88gpXXHEF//73v33l7rnnHvbv3+/X7XPGjBlMmTKFUaNG0aBBA+bNm8fKlSuZO3cuNWrUOLObc4axbd68mX379pGWlsbzzz/PoEGDaNasGREREbRt2/aMYzsbyrs9qC1UHOXdFqDitod/WlsQEalM8vLyiI+Pp27dun49PNP/Sue/jf6LO89djtEVsjqtjNw6krBaYeUdilRSpf0eHE2JHpHz3A8//MDbb7/N7t27qVatGkOGDOHaa6/1K9OuXTuuvvpqxo0b59t2zTXX+CZ1O9pdd93F3XfffUoxxMfH8+KLL7J+/XqCgoLo3bs3I0aMwGaz+coMGzaM/fv388UXX/i2GYbBjBkzmD9/PqmpqTRs2JAHH3yQFi1anFL9ZyO2cePG8eWXXxY7X5s2bZgyZUqZxVfWyrs9qC1UHOXdFqDitod/WlsQEaksjvcFN/2vdHKSc8opsiMCowKV5JGzSokeERERERERqRRO5guuSGV3Mr8HmqNHRERERERERKSSUKJHRERERERERKSSUKJHRERERERERKSSUKJHRERERERERKSSUKJHRERERERERKSSUKJHRERERERERKSSUKJHRERERERERKSSUKJHRERERERERKSSUKJHROQ8NGPGDEwmE8uWLSvvUCqUZcuWYTKZmDFjRnmHUuYq87WJiIiISNlRokdEKr1du3YxbNgwLrzwQgIDA4mIiKBx48YMHjyYpUuX+pWtU6cOzZo1K/VcQ4YMwWQykZycXOL+LVu2YDKZMJlMLF++vNTzFJUp+nE6nVxwwQU8+OCDpKSknN6FnqJx48bx6aefnpO6ytK6desYN24cCQkJ5R2KiIiIiEiFYy3vAEREzqbffvuNrl27YrPZuO2222jatCm5ubls376dRYsWERISQvfu3cusvqlTpxISEkJAQADTpk2jc+fOpZZt1aoVDz30EAApKSl8/fXXvPLKKyxevJg1a9Zgt9tLPfbWW2/lpptuOm6ZExk/fjyDBw+mb9++p32O8rBu3TrGjx9Pt27dqFOnjt++Ll26kJubi81mK5/gREREpFz8lf4XyTklP4g7l6ICo6gVVqu8wwAgISGBunXrMn36dIYMGQIUPugbP348hmGc8vlMJhNjx45l3Lhxxy13JnWcrGXLltG9e3eWLl1Kt27djlt29erV3Hfffaxfv56cnBx+//13WrVqddZiqwiU6BGRSm38+PHk5OSwbt06WrZsWWx/YmJimdXlcrmYPXs2N9xwA2FhYUyZMoXXX3+dkJCQEsvHxcUxaNAg3+t7772Xa665hi+//JLPPvuMG264odS6LBYLFoulzGIva5mZmaVe99lkNptxOp3nvF4REREpP3+l/0Wj/zYiz51X3qHgtDrZOnLrKSd7ZsyYwdChQ1m9ejXt2rU7S9H987hcLm644QacTievvPIKgYGB1K5du0zr2Lx5Mx999BFDhgwp9hCyvGjolohUatu3b6dKlSolJnkAqlWrVmZ1ffHFFxw8eJDBgwczZMgQsrOz+fDDD0/pHL169QJgx44dxy1X0hw9Rdu+//57XnrpJerXr4/D4aBhw4bMnDnTVy4hIQGTyQTAzJkz/YaQHW3JkiX07NmT8PBwnE4nLVq04J133ikWS506dejWrRu///47vXr1IiwsjBYtWgCFCZ8nnniC9u3bExUVhcPhoEGDBjz22GPk5OQUO5dhGLz77ru0b9+e4OBggoODad68OWPGjAEKnxANHToUgO7du/viLnpKVdo8NtnZ2YwePdp3T6pVq8Ztt93G7t27/codffz06dNp2rQpDoeD2rVr88ILLxz3PQFIS0vD6XTSr1+/EvePHj0ak8nEunXrANi3bx8PPfQQrVq1IiIiAqfTSZMmTZg4cSIej+eE9R1vrqaSejxBYS+36667zvd+NGrUiGeffRa3233C+kRERCqi5JzkCpHkAchz51WInkWleeKJJ8jNzT2tY3Nzc3niiSfKOKKza+fOnezevZuHH36YYcOGMWjQICIiIsq0js2bNzN+/PgKNa2AevSISKVWv359tm7dyoIFC0r98n0sj8dT6hw8+fn5pR43depU6tatS+fOnTGZTLRu3Zpp06Zx5513nnS827dvByAqKuqkjznW448/Tm5uLnfffTcOh4O3336bIUOG0KBBAzp27Eh0dDSzZ8/m1ltvpXPnzgwbNqzYOaZMmcLw4cPp0KED//nPfwgKCmLx4sXcc8897Ny5kxdffNGv/F9//cVll13GDTfcwPXXX09WVhYAe/fu5b333uP6669n4MCBWK1WfvjhB1544QV+//13Fi5c6HeeW2+9lblz59K+fXv+85//EB4ezp9//sn8+fN56qmn6NevH/v372fKlCk8/vjjNG7cGCh8n0vjcrno1asXP//8M/379+ehhx5i+/btvP322yxatIjffvuNGjVq+B3zzjvvcODAAe644w7Cw8OZM2cO//73v6lRowYDBw4sta7w8HD69OnDZ599RkpKCpGRkb59Xq+XuXPn0qJFC1934Q0bNrBgwQKuu+466tevj8vl4ttvv+Wxxx5j165dTJ48udS6TsdXX31Fv379aNCgAQ899BCRkZGsWLGCMWPGsG7dOubNm1em9YmIiEjFYrVasVpPLw1wPvaaPnjwIFD4Ge18k5OTQ2Bg4OkdbIiIVGK//PKLYbPZDMC44IILjKFDhxpvvfWWsXnz5hLL165d2wBO+JOUlOR33N69ew2LxWKMHTvW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pyYmJoYrrriCjIwMLrjgAi655JJiZSZNmsTDDz/Mr7/+yqhRo5g5cybDhg0rscdTaWbPnk2/fv2YO3cuDz30EAkJCSxdupS4uLhiZXv16sXq1avp1asXc+bM4f/+7/946aWX2LJlCw8++CAtWrQ4o2sWERGRc++qq67C7Xb7fR7yeDy88cYbJ32OAQMG8OuvvzJt2jSSk5OPO2wLCnsa9erVi08//ZS//vrLt33Lli0sXLjQr2zRMPkff/zRb/tbb71V4nmP7e38xhtvlNj753QV9ZI6tp5XX33V77XZbKZv37588cUXJa6EWnR8UFAQUDyR1aNHD+x2O6+//rpfXVOnTiU9Pf24E12fKZNxsrNzioiIiIiIiJSTvLw84uPjqVu3rt9w6LX719J2SttyjMzfmmFraBPb5pSOmTFjBkOHDmX16tW+iX+HDBnC/PnzycrK8is7btw4xo8f70seeL1eunTpwooVKxg+fDhNmjRhwYIFJCcns2HDBqZPn86QIUNKPLbInj17qFWrFsHBwdhsNhITE4v1wDaZTIwdO5Zx48YBsGHDBtq3b09MTAwjRozA7XbzxhtvULVqVTZs2OBXx+jRo3n++ee54447aNeuHT/++CPbtm1jzZo1fuccPHgwc+fOZeTIkTRp0oQVK1awZMkScnNzufrqq30r6S5btozu3buzdOnS4/ZGLio3b948v1W3unbtym+//cYDDzxAXFwcixYtIj4+nvXr1/vFs3fvXtq1a0dGRgbDhg2jcePG7N+/n3nz5vHTTz8RHh5OYmIiNWrU4KKLLmL48OE4HA4uu+wyYmJifPe7Z8+e9OnTh61bt/LWW2/Rpk0bfv75Z9897tatG8nJySfsPQSl/x4cTUO3RERERERE5LwVFRiF0+okz51X3qHgtDqJCizbRR5OxGw28/nnn/t6LZtMJvr06cPLL79M69atT+ocNWrU4NJLL+Xnn3/mzjvvLHGY/bFatGjBwoULefDBBxkzZgw1atRg/Pjx7N+/nw0bNviVHTNmDElJScyfP5+PPvqIK6+8km+++YaYmBi/cq+99hoWi4W5c+eSl5dHx44dWbJkCb169Tr5G3IS3n//fUaNGsWbb76JYRi+JdCPXYE0Li6OlStX8uSTTzJ37lwyMjKIi4vjyiuv9K06W61aNd555x2ee+457rjjDjweD0uXLvUleqKjo/nvf//LAw88QGRkJMOGDWPChAkndY9Pl3r0iIiIiIiISIV3vJ4Mf6X/RXJOcjlFdkRUYBS1wmqduKDIaVKPHhEREREREan0aoXVUoJF5DBNxiwiIiIiIiIiUkko0SMiIiIiIiIiUkko0SMiIiIiIiIiUkko0SMiIiIiIiIiUkko0SMiIiIiIiLnDS0cLf9kJ9P+legRERERERGRCs9qLVw02u12l3MkIuWnqP0X/T6URIkeERERERERqfAsFgsWi4WMjIzyDkWk3GRkZPh+F0pTegpIREREREREpIIwmUzExMSwf/9+HA4HQUFBmEym8g5L5JwwDIPs7GwyMjKIjY09bts3GRrgKCIiIiIiIucBwzBITEwkPT1dc/XIP47JZCIsLIxq1aop0SMiIiIiIiKVh8fjweVylXcYIueUzWY77pCtIkr0iIiIiIiIiIhUEpqMWURERERERESkklCiR0RERERERESkklCiR0RERERERESkklCiR0RERERERESkklCiR0RERERERESkkvh/hmW0+YolOdMAAAAASUVORK5CYII=",
200
      "text/plain": [
201
       "<Figure size 1150x660 with 3 Axes>"
202 203 204 205 206 207 208 209 210 211 212 213
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "X_test = data_dic['X_test_' + group]\n",
    "y_test = data_dic['y_test_' + group]\n",
    "model_name = model_choices[method_name]\n",
    "\n",
    "shap_inter_vals = np.load(f'./output/shap_inter_values/{group}_{method_name}.npy')\n",
Joaquin Torres's avatar
Joaquin Torres committed
214 215 216 217 218 219 220 221 222 223 224 225 226
    "if method_name == 'ORIG_CW':\n",
    "      shap_inter_vals = shap_inter_vals[:,:,:,1] # Take info about positive class\n",
    "\n",
    "num_instances = shap_inter_vals.shape[0]  # Dynamically get the number of instances\n",
    "num_features = shap_inter_vals.shape[1]  # Assuming the number of features is the second dimension size\n",
    "# Loop over each instance and set the diagonal and lower triangle of each 39x39 matrix to NaN\n",
    "for i in range(num_instances):\n",
    "    # Mask the diagonal\n",
    "    np.fill_diagonal(shap_inter_vals[i], np.nan)\n",
    "    # Get indices for the lower triangle, excluding the diagonal\n",
    "    lower_triangle_indices = np.tril_indices(num_features, -1)  # -1 excludes the diagonal\n",
    "    # Set the lower triangle to NaN\n",
    "    shap_inter_vals[i][lower_triangle_indices] = np.nan\n",
227
    "\n",
228 229
    "plt.figure(figsize=(10,10))\n",
    "shap.summary_plot(shap_inter_vals, X_test, show=False, sort=False)\n",
230 231
    "fig=plt.gcf()\n",
    "attr_names = []\n",
Joaquin Torres's avatar
Joaquin Torres committed
232
    "used_colors = {'purple': 'Social factor', 'green': 'Individual factor'}\n",
233 234 235 236 237 238
    "# Iterate over all axes in the figure\n",
    "for ax in fig.get_axes():\n",
    "    # Customize the y-axis tick labels\n",
    "    for label in ax.get_yticklabels():\n",
    "        label_text = label.get_text()  # Get the text of the label\n",
    "        attr_names.append(label_text)\n",
Joaquin Torres's avatar
Joaquin Torres committed
239
    "        label.set_fontsize(12)\n",
240 241 242 243 244 245 246 247 248 249
    "        if label_text in soc_var_names:\n",
    "                label.set_color('purple')\n",
    "        else:\n",
    "                label.set_color('green')\n",
    "\n",
    "# Assuming the top labels are treated as titles, let's try to modify them\n",
    "total_axes = len(fig.axes)\n",
    "for i, ax in enumerate(fig.axes):\n",
    "        reverse_index = total_axes - 1 - i\n",
    "        title = attr_names[reverse_index]\n",
Joaquin Torres's avatar
Joaquin Torres committed
250
    "        ax.set_title(title, color='purple' if title in soc_var_names else 'green', fontsize=12, rotation=90)\n",
Joaquin Torres's avatar
Joaquin Torres committed
251
    "        if method_name == 'ORIG_CW':\n",
Joaquin Torres's avatar
Joaquin Torres committed
252
    "              ax.set_xlim(-0.15, 0.15) # Use same scale for pre and post\n",
Joaquin Torres's avatar
Joaquin Torres committed
253
    "        elif method_name == 'OVER':\n",
Joaquin Torres's avatar
Joaquin Torres committed
254
    "              ax.set_xlim(-2,2)\n",
255 256 257
    "\n",
    "# Create a single general legend for the whole figure\n",
    "handles = [mpatches.Patch(color=color, label=label) for color, label in used_colors.items()]\n",
258
    "fig.legend(handles=handles, loc='lower right', fontsize=12)\n",
259
    "\n",
260
    "plt.suptitle(f'Simplified Example SHAP Summary Interaction Plot\\n', fontsize=15, fontweight='bold', x=0.5, y=0.95, ha='center')\n",
261
    "plt.tight_layout()\n",
262
    "plt.savefig(f'./output/plots/shap_inter_summary/example.svg', format='svg', dpi=600)\n",
263 264
    "plt.show()"
   ]
265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": ".venv",
   "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.9.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}