{"nbformat":4,"nbformat_minor":0,"metadata":{"kernelspec":{"display_name":"Python 3","language":"python","name":"python3"},"language_info":{"codemirror_mode":{"name":"ipython","version":2},"file_extension":".py","mimetype":"text/x-python","name":"python","nbconvert_exporter":"python","pygments_lexer":"ipython2","version":"2.7.6"},"colab":{"name":"tutorial_sensivitivty_parameterisation.ipynb","provenance":[{"file_id":"1nMiFlKaXP_F5rbeFwc35BL4SwO2ktnEs","timestamp":1627483591348},{"file_id":"14H0YjeULfWNdvzhVJbiScA0sUcLhGmY0","timestamp":1627472772689},{"file_id":"1tlXprNNO0PAcdH4Wh5ThFWgknpSQTkmd","timestamp":1626956510892}],"collapsed_sections":[],"toc_visible":true},"accelerator":"GPU","widgets":{"application/vnd.jupyter.widget-state+json":{"80e9f6d45d5349e68f8c1dea5d30044e":{"model_module":"@jupyter-widgets/controls","model_name":"HBoxModel","model_module_version":"1.5.0","state":{"_view_name":"HBoxView","_dom_classes":[],"_model_name":"HBoxModel","_view_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_view_count":null,"_view_module_version":"1.5.0","box_style":"","layout":"IPY_MODEL_bf620515a66c45649c422cd7126b730f","_model_module":"@jupyter-widgets/controls","children":["IPY_MODEL_1db49d8b301f41eda1d14a00a6fb6f9d","IPY_MODEL_05ee309130bb4801bf8dd1168d4b58ec","IPY_MODEL_bdb6932e534c4a4d93475c2c565bd73a"]}},"bf620515a66c45649c422cd7126b730f":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_view_name":"LayoutView","grid_template_rows":null,"right":null,"justify_content":null,"_view_module":"@jupyter-widgets/base","overflow":null,"_model_module_version":"1.2.0","_view_count":null,"flex_flow":null,"width":null,"min_width":null,"border":null,"align_items":null,"bottom":null,"_model_module":"@jupyter-widgets/base","top":null,"grid_column":null,"overflow_y":null,"overflow_x":null,"grid_auto_flow":null,"grid_area":null,"grid_template_columns":null,"flex":null,"_model_name":"LayoutModel","justify_items":null,"grid_row":null,"max_height":null,"align_content":null,"visibility":null,"align_self":null,"height":null,"min_height":null,"padding":null,"grid_auto_rows":null,"grid_gap":null,"max_width":null,"order":null,"_view_module_version":"1.2.0","grid_template_areas":null,"object_position":null,"object_fit":null,"grid_auto_columns":null,"margin":null,"display":null,"left":null}},"1db49d8b301f41eda1d14a00a6fb6f9d":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_view_name":"HTMLView","style":"IPY_MODEL_d814e2faef0641e09ab90548a81eaeef","_dom_classes":[],"description":"","_model_name":"HTMLModel","placeholder":"​","_view_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","value":"","_view_count":null,"_view_module_version":"1.5.0","description_tooltip":null,"_model_module":"@jupyter-widgets/controls","layout":"IPY_MODEL_b22474e0097840b7803ae87ae05c4a00"}},"05ee309130bb4801bf8dd1168d4b58ec":{"model_module":"@jupyter-widgets/controls","model_name":"FloatProgressModel","model_module_version":"1.5.0","state":{"_view_name":"ProgressView","style":"IPY_MODEL_c0f8e7898bac4d42b621fc090999d6c7","_dom_classes":[],"description":"","_model_name":"FloatProgressModel","bar_style":"success","max":170498071,"_view_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","value":170498071,"_view_count":null,"_view_module_version":"1.5.0","orientation":"horizontal","min":0,"description_tooltip":null,"_model_module":"@jupyter-widgets/controls","layout":"IPY_MODEL_fe15ea416eb04db2938ccbc05b595acd"}},"bdb6932e534c4a4d93475c2c565bd73a":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_view_name":"HTMLView","style":"IPY_MODEL_e9036661f86e4d4bac3635d6f5174cb4","_dom_classes":[],"description":"","_model_name":"HTMLModel","placeholder":"​","_view_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","value":" 170499072/? [00:12<00:00, 18669248.59it/s]","_view_count":null,"_view_module_version":"1.5.0","description_tooltip":null,"_model_module":"@jupyter-widgets/controls","layout":"IPY_MODEL_939c5fa81c134e309178d90f15c37564"}},"d814e2faef0641e09ab90548a81eaeef":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_view_name":"StyleView","_model_name":"DescriptionStyleModel","description_width":"","_view_module":"@jupyter-widgets/base","_model_module_version":"1.5.0","_view_count":null,"_view_module_version":"1.2.0","_model_module":"@jupyter-widgets/controls"}},"b22474e0097840b7803ae87ae05c4a00":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_view_name":"LayoutView","grid_template_rows":null,"right":null,"justify_content":null,"_view_module":"@jupyter-widgets/base","overflow":null,"_model_module_version":"1.2.0","_view_count":null,"flex_flow":null,"width":null,"min_width":null,"border":null,"align_items":null,"bottom":null,"_model_module":"@jupyter-widgets/base","top":null,"grid_column":null,"overflow_y":null,"overflow_x":null,"grid_auto_flow":null,"grid_area":null,"grid_template_columns":null,"flex":null,"_model_name":"LayoutModel","justify_items":null,"grid_row":null,"max_height":null,"align_content":null,"visibility":null,"align_self":null,"height":null,"min_height":null,"padding":null,"grid_auto_rows":null,"grid_gap":null,"max_width":null,"order":null,"_view_module_version":"1.2.0","grid_template_areas":null,"object_position":null,"object_fit":null,"grid_auto_columns":null,"margin":null,"display":null,"left":null}},"c0f8e7898bac4d42b621fc090999d6c7":{"model_module":"@jupyter-widgets/controls","model_name":"ProgressStyleModel","model_module_version":"1.5.0","state":{"_view_name":"StyleView","_model_name":"ProgressStyleModel","description_width":"","_view_module":"@jupyter-widgets/base","_model_module_version":"1.5.0","_view_count":null,"_view_module_version":"1.2.0","bar_color":null,"_model_module":"@jupyter-widgets/controls"}},"fe15ea416eb04db2938ccbc05b595acd":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_view_name":"LayoutView","grid_template_rows":null,"right":null,"justify_content":null,"_view_module":"@jupyter-widgets/base","overflow":null,"_model_module_version":"1.2.0","_view_count":null,"flex_flow":null,"width":null,"min_width":null,"border":null,"align_items":null,"bottom":null,"_model_module":"@jupyter-widgets/base","top":null,"grid_column":null,"overflow_y":null,"overflow_x":null,"grid_auto_flow":null,"grid_area":null,"grid_template_columns":null,"flex":null,"_model_name":"LayoutModel","justify_items":null,"grid_row":null,"max_height":null,"align_content":null,"visibility":null,"align_self":null,"height":null,"min_height":null,"padding":null,"grid_auto_rows":null,"grid_gap":null,"max_width":null,"order":null,"_view_module_version":"1.2.0","grid_template_areas":null,"object_position":null,"object_fit":null,"grid_auto_columns":null,"margin":null,"display":null,"left":null}},"e9036661f86e4d4bac3635d6f5174cb4":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_view_name":"StyleView","_model_name":"DescriptionStyleModel","description_width":"","_view_module":"@jupyter-widgets/base","_model_module_version":"1.5.0","_view_count":null,"_view_module_version":"1.2.0","_model_module":"@jupyter-widgets/controls"}},"939c5fa81c134e309178d90f15c37564":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_view_name":"LayoutView","grid_template_rows":null,"right":null,"justify_content":null,"_view_module":"@jupyter-widgets/base","overflow":null,"_model_module_version":"1.2.0","_view_count":null,"flex_flow":null,"width":null,"min_width":null,"border":null,"align_items":null,"bottom":null,"_model_module":"@jupyter-widgets/base","top":null,"grid_column":null,"overflow_y":null,"overflow_x":null,"grid_auto_flow":null,"grid_area":null,"grid_template_columns":null,"flex":null,"_model_name":"LayoutModel","justify_items":null,"grid_row":null,"max_height":null,"align_content":null,"visibility":null,"align_self":null,"height":null,"min_height":null,"padding":null,"grid_auto_rows":null,"grid_gap":null,"max_width":null,"order":null,"_view_module_version":"1.2.0","grid_template_areas":null,"object_position":null,"object_fit":null,"grid_auto_columns":null,"margin":null,"display":null,"left":null}}}}},"cells":[{"cell_type":"markdown","metadata":{"id":"bukochgPFg7s"},"source":["## Tutorial - Measuring sensitivity of hyperparameter choice\n","\n","This tutorial demonstrates how one can use the library to measure to what extent the outcome of evaluation is sensitive to the choice of hyperparameters e.g., choice of baseline value to mask an image with, patch sizes or number of runs. We use a LeNet model and CIFAR-10 dataset to showcase the library's functionality and test the Faithfulness Correlation by Bhatt et al., 2020..\n","\n","- Make sure to have GPUs enabled to speed up computation.\n","- Skip running the first cell if you do not use Google Colab.\n","\n"]},{"cell_type":"code","metadata":{"id":"52Q6cyeSS1ZG"},"source":["# Mount Google Drive.\n","from google.colab import drive\n","drive.mount('/content/drive', force_remount=True)\n","\n","# Install packages.\n","from IPython.display import clear_output\n","!pip install captum opencv-python xmltodict\n","!pip install torch==1.8.0+cu111 torchvision==0.9.0+cu111 -f https://download.pytorch.org/whl/torch_stable.html\n","clear_output()"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"id":"MuA8v9jLp-pf"},"source":["# Imports general.\n","import sys\n","import gc\n","import warnings\n","import pathlib\n","import numpy as np\n","import pandas as pd\n","import matplotlib.pyplot as plt\n","import torch\n","import torchvision\n","from torchvision import transforms\n","import captum\n","from captum.attr import *\n","import random\n","import os\n","import cv2\n","\n","# Import package.\n","path = \"/content/drive/MyDrive/Projects\"\n","sys.path.append(f'{path}/quantus')\n","import quantus\n","\n","# Collect garbage.\n","gc.collect()\n","torch.cuda.empty_cache()\n","\n","# Notebook settings.\n","device = torch.device(\"cuda:0\" if torch.cuda.is_available() else \"cpu\") \n","warnings.filterwarnings(\"ignore\", category=UserWarning)\n","%load_ext autoreload\n","%autoreload 2\n","clear_output()"],"execution_count":null,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"rvHznz40r2lw"},"source":["## 1. Preliminaries"]},{"cell_type":"markdown","metadata":{"id":"mB2QuiaDlu7w"},"source":["### 1.1 Load CIFAR10 dataset"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":115,"referenced_widgets":["80e9f6d45d5349e68f8c1dea5d30044e","bf620515a66c45649c422cd7126b730f","1db49d8b301f41eda1d14a00a6fb6f9d","05ee309130bb4801bf8dd1168d4b58ec","bdb6932e534c4a4d93475c2c565bd73a","d814e2faef0641e09ab90548a81eaeef","b22474e0097840b7803ae87ae05c4a00","c0f8e7898bac4d42b621fc090999d6c7","fe15ea416eb04db2938ccbc05b595acd","e9036661f86e4d4bac3635d6f5174cb4","939c5fa81c134e309178d90f15c37564"]},"id":"PZ6VyL7x26Ue","executionInfo":{"status":"ok","timestamp":1637240855177,"user_tz":-60,"elapsed":21153,"user":{"displayName":"Anna Hedström","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GhbfsluHeZ1mzN6Bsf-1zU62lYHcz183jYjeS63=s64","userId":"05540180366077551505"}},"outputId":"2277b955-ab95-49d0-f58a-4a31ffc7bdfb"},"source":["# Load datasets and make loaders.\n","test_samples = 200\n","transformer = transforms.Compose([transforms.ToTensor(), transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))])\n","train_set = torchvision.datasets.CIFAR10(root='./sample_data', train=True, transform=transformer, download=True)\n","test_set = torchvision.datasets.CIFAR10(root='./sample_data', train=False, transform=transformer, download=True)\n","train_loader = torch.utils.data.DataLoader(train_set, batch_size=128, shuffle=True, pin_memory=True) # num_workers=4,\n","test_loader = torch.utils.data.DataLoader(test_set, batch_size=200, pin_memory=True)\n","\n","# Specify class labels.\n","classes = {0: 'plane', 1: 'car', 2: 'bird', 3: 'cat', 4: 'deer', 5: 'dog', 6: 'frog', 7: 'horse', 8: 'ship', 9: 'truck'}\n","\n","# Load a batch of inputs and outputs to use for evaluation.\n","x_batch, y_batch = iter(test_loader).next()\n","x_batch, y_batch = x_batch.to(device), y_batch.to(device)"],"execution_count":null,"outputs":[{"output_type":"stream","name":"stdout","text":["Downloading https://www.cs.toronto.edu/~kriz/cifar-10-python.tar.gz to ./sample_data/cifar-10-python.tar.gz\n","Failed download. Trying https -> http instead. Downloading http://www.cs.toronto.edu/~kriz/cifar-10-python.tar.gz to ./sample_data/cifar-10-python.tar.gz\n"]},{"output_type":"display_data","data":{"application/vnd.jupyter.widget-view+json":{"model_id":"80e9f6d45d5349e68f8c1dea5d30044e","version_minor":0,"version_major":2},"text/plain":[" 0%| | 0/170498071 [00:00 None:\n"," \"\"\"Plot some images.\"\"\"\n"," fig = plt.figure(figsize=(10, 10))\n"," img = images / 2 + 0.5 \n"," plt.imshow(np.transpose(img.cpu().numpy(), (1, 2, 0)))\n"," plt.axis(\"off\")\n"," plt.show()\n","\n","# Plot image examples!\n","plot_images(torchvision.utils.make_grid(x_batch[:6, :, :, :]))"],"execution_count":null,"outputs":[{"output_type":"display_data","data":{"image/png":"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\n","text/plain":["
"]},"metadata":{"needs_background":"light"}}]},{"cell_type":"markdown","metadata":{"id":"YKwN9uWs29sn"},"source":["### 1.2 Train a LeNet model\n","\n","(or any other model of choice). Network architecture and training procedure is partly copied from: https://pytorch.org/tutorials/beginner/blitz/cifar10_tutorial.html#sphx-glr-beginner-blitz-cifar10-tutorial-py."]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"ypxtHPfolQPD","executionInfo":{"status":"ok","timestamp":1637240855180,"user_tz":-60,"elapsed":12,"user":{"displayName":"Anna Hedström","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GhbfsluHeZ1mzN6Bsf-1zU62lYHcz183jYjeS63=s64","userId":"05540180366077551505"}},"outputId":"d350e6a7-186c-4ad3-bcb9-37adf3c790b0"},"source":["class Net(torch.nn.Module):\n"," def __init__(self):\n"," super(Net, self).__init__()\n"," self.conv_1 = torch.nn.Conv2d(3, 6, 5)\n"," self.pool_1 = torch.nn.MaxPool2d(2, 2)\n"," self.pool_2 = torch.nn.MaxPool2d(2, 2)\n"," self.conv_2 = torch.nn.Conv2d(6, 16, 5)\n"," self.fc_1 = torch.nn.Linear(16 * 5 * 5, 120)\n"," self.fc_2 = torch.nn.Linear(120, 84)\n"," self.fc_3 = torch.nn.Linear(84, 10)\n"," self.relu_1 = torch.nn.ReLU()\n"," self.relu_2 = torch.nn.ReLU()\n"," self.relu_3 = torch.nn.ReLU()\n"," self.relu_4 = torch.nn.ReLU()\n","\n"," def forward(self, x):\n"," x = self.pool_1(self.relu_1(self.conv_1(x)))\n"," x = self.pool_2(self.relu_2(self.conv_2(x)))\n"," x = x.view(-1, 16 * 5 * 5)\n"," x = self.relu_3(self.fc_1(x))\n"," x = self.relu_4(self.fc_2(x))\n"," x = self.fc_3(x)\n"," return x\n","\n","\n","# Load model architecture.\n","model = Net()\n","print(f\"\\n Model architecture: {model.eval()}\\n\")"],"execution_count":null,"outputs":[{"output_type":"stream","name":"stdout","text":["\n"," Model architecture: Net(\n"," (conv_1): Conv2d(3, 6, kernel_size=(5, 5), stride=(1, 1))\n"," (pool_1): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n"," (pool_2): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n"," (conv_2): Conv2d(6, 16, kernel_size=(5, 5), stride=(1, 1))\n"," (fc_1): Linear(in_features=400, out_features=120, bias=True)\n"," (fc_2): Linear(in_features=120, out_features=84, bias=True)\n"," (fc_3): Linear(in_features=84, out_features=10, bias=True)\n"," (relu_1): ReLU()\n"," (relu_2): ReLU()\n"," (relu_3): ReLU()\n"," (relu_4): ReLU()\n",")\n","\n"]}]},{"cell_type":"code","metadata":{"id":"8mP55MfxuSZh"},"source":["def train_model(model, \n"," train_data: torchvision.datasets,\n"," test_data: torchvision.datasets, \n"," device: torch.device, \n"," epochs: int = 20,\n"," criterion: torch.nn = torch.nn.CrossEntropyLoss(), \n"," optimizer: torch.optim = torch.optim.SGD(model.parameters(), lr=0.001, momentum=0.9), \n"," evaluate: bool = False):\n"," \"\"\"Train torch model.\"\"\"\n"," \n"," model.train()\n"," \n"," for epoch in range(epochs):\n","\n"," for images, labels in train_data:\n"," images, labels = images.to(device), labels.to(device)\n"," \n"," optimizer.zero_grad()\n"," \n"," logits = model(images)\n"," loss = criterion(logits, labels)\n"," loss.backward()\n"," optimizer.step()\n","\n"," # Evaluate model!\n"," if evaluate:\n"," predictions, labels = evaluate_model(model, test_data, device)\n"," test_acc = np.mean(np.argmax(predictions.cpu().numpy(), axis=1) == labels.cpu().numpy())\n"," \n"," print(f\"Epoch {epoch+1}/{epochs} - test accuracy: {(100 * test_acc):.2f}% and CE loss {loss.item():.2f}\")\n","\n"," return model\n","\n","def evaluate_model(model, data, device):\n"," \"\"\"Evaluate torch model.\"\"\"\n"," model.eval()\n"," logits = torch.Tensor().to(device)\n"," targets = torch.LongTensor().to(device)\n","\n"," with torch.no_grad():\n"," for images, labels in data:\n"," images, labels = images.to(device), labels.to(device)\n"," logits = torch.cat([logits, model(images)])\n"," targets = torch.cat([targets, labels])\n"," \n"," return torch.nn.functional.softmax(logits, dim=1), targets"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"id":"lbfAkSEtmGym","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1637240857985,"user_tz":-60,"elapsed":2814,"user":{"displayName":"Anna Hedström","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GhbfsluHeZ1mzN6Bsf-1zU62lYHcz183jYjeS63=s64","userId":"05540180366077551505"}},"outputId":"5e783e7d-a132-46d0-a1fa-85149b863bc2"},"source":["path_model_weights = path + \"/quantus/tutorials/assets/cifar10\"\n","\n","if pathlib.Path(path_model_weights).is_file():\n"," model.load_state_dict(torch.load(path_model_weights))\n"," \n","else:\n","\n"," # Train and evaluate model.\n"," model = train_model(model=model.to(device),\n"," train_data=train_loader,\n"," test_data=test_loader,\n"," device=device,\n"," epochs=20,\n"," criterion=torch.nn.CrossEntropyLoss().to(device),\n"," optimizer=torch.optim.SGD(model.parameters(), lr=0.01, momentum=0.9),\n"," evaluate=True)\n","\n"," # Save model.\n"," torch.save(model.state_dict(), path_model_weights)\n","\n","# Model to GPU and eval mode.\n","model.to(device)\n","model.eval()\n","\n","# Check test set performance.\n","predictions, labels = evaluate_model(model, test_loader, device)\n","test_acc = np.mean(np.argmax(predictions.cpu().numpy(), axis=1) == labels.cpu().numpy()) \n","print(f\"Model test accuracy: {(100 * test_acc):.2f}%\")"],"execution_count":null,"outputs":[{"output_type":"stream","name":"stdout","text":["Model test accuracy: 59.51%\n"]}]},{"cell_type":"markdown","metadata":{"id":"XqKzag4VFjHT"},"source":["### 1.3 Load gradient-based attributions"]},{"cell_type":"code","metadata":{"id":"uSUkm-d6-p20","colab":{"base_uri":"https://localhost:8080/","height":505},"executionInfo":{"status":"ok","timestamp":1637240858622,"user_tz":-60,"elapsed":645,"user":{"displayName":"Anna Hedström","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GhbfsluHeZ1mzN6Bsf-1zU62lYHcz183jYjeS63=s64","userId":"05540180366077551505"}},"outputId":"0e31429d-8410-4f89-c57c-84fdd140d528"},"source":["# Load some attributions and plot them. \n","a_batch = quantus.explain(model, \n"," x_batch, \n"," y_batch, \n"," method=\"IntegratedGradients\",\n"," **{\"normalize\": True})\n","\n","# Plot examplary inputs!\n","nr_images = 3\n","fig, axes = plt.subplots(nrows=nr_images, ncols=2, figsize=(nr_images*1.5, int(nr_images*3)))\n","for i in range(nr_images):\n"," axes[i, 0].imshow(np.moveaxis(np.clip(x_batch[i].cpu().numpy(), 0, 1), 0, -1), \n"," vmin=0.0, vmax=1.0)\n"," axes[i, 0].title.set_text(f\"CIFAR-10 - {classes[y_batch[i].item()]}\")\n"," axes[i, 0].axis(\"off\")\n"," axes[i, 1].imshow(a_batch[i], cmap=\"seismic\")\n"," axes[i, 1].title.set_text(f\"IG_norm=[0, 1]\")\n"," axes[i, 1].axis(\"off\")\n","plt.show()"],"execution_count":null,"outputs":[{"output_type":"display_data","data":{"image/png":"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\n","text/plain":["
"]},"metadata":{"needs_background":"light"}}]},{"cell_type":"markdown","metadata":{"id":"3zPsqB-OsAjf"},"source":["## 2. Quantiatative evaluation using Quantus"]},{"cell_type":"markdown","metadata":{"id":"Vrl4GiojK6r-"},"source":["### 2.1 Measure sensitivity of hyperparameter choice\n","\n","We want to understand how sensitive the evaluation outome of Faithfulness Correlation (Bhatt et al., 2020) is from its hyperparameters."]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"sD5STAScsp_3","executionInfo":{"status":"ok","timestamp":1637240860152,"user_tz":-60,"elapsed":1536,"user":{"displayName":"Anna Hedström","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GhbfsluHeZ1mzN6Bsf-1zU62lYHcz183jYjeS63=s64","userId":"05540180366077551505"}},"outputId":"7a44e681-4289-4063-ecfd-00c3209ae4a6"},"source":["# Let's list the default parameters of the metric.\n","metric = quantus.FaithfulnessCorrelation()"],"execution_count":null,"outputs":[{"output_type":"stream","name":"stdout","text":["WARNINGS.\n","\n","The Faithfulness correlation metric is likely to be sensitive to the choice of baseline value 'perturb_baseline', size of subset |S| 'subset_size' and the number of runs (for each input and explanation pair) 'nr_runs'. \n","Go over and select each hyperparameter of the metric carefully to avoid misinterpretation of scores. \n","To view all relevant hyperparameters call .get_params of the metric instance. \n","For further reading: Bhatt, Umang, Adrian Weller, and José MF Moura. 'Evaluating and aggregating feature-based model explanations.' arXiv preprint arXiv:2005.00631 (2020).\u001b[0m\n","Normalising attributions may destroy or skew information in the explanation and as a result, affect the overall evaluation outcome.\n","\n"]}]},{"cell_type":"code","metadata":{"id":"YCiGXKSVuP3L"},"source":["# Recompute some Saliency explanations.\n","a_batch = Saliency(model).attribute(inputs=x_batch, target=y_batch, abs=True).sum(axis=1).cpu().numpy()\n","a_batch_occ = Occlusion(model).attribute(inputs=x_batch, target=y_batch, sliding_window_shapes=(1, 4, 4)).sum(axis=1).cpu().numpy()\n","a_batch_ig = IntegratedGradients(model.to(device)).attribute(inputs=x_batch,\n"," target=y_batch,\n"," baselines=torch.zeros_like(x_batch), \n"," n_steps=10, \n"," method=\"riemann_trapezoid\").sum(axis=1).cpu().numpy()\n","a_batch_gh = GradientShap(model).attribute(inputs=x_batch,\n"," target=y_batch,\n"," baselines=torch.zeros_like(x_batch),).sum(axis=1).cpu().data.numpy()\n","\n","# Metric class expects numpy arrays.\n","x_batch, y_batch = x_batch.cpu().numpy(), y_batch.cpu().numpy()"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"id":"JSJ-n7xcVDcd"},"source":["# Define some parameter settings to evaluate.\n","baseline_strategies = [\"mean\", \"random\", \"uniform\", \"black\", \"white\"]\n","subset_sizes = np.array([ 2, 52, 102])\n","iterations = [100, 200]\n","absolutes = [True, False]\n","normalisations = [True, False]\n","sim_funcs = {\"pearson\": quantus.correlation_pearson, \"spearman\": quantus.correlation_spearman}"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"id":"pFEineha6yIU"},"source":["result = {\n"," \"Normalise\": [],\n"," \"Absolute\": [],\n"," \"Similarity function\": [],\n"," \"Faithfulness score\": [],\n"," \"Baseline strategy\": [],\n"," \"Subset size\": [],\n"," \"Method\": [],\n"," \"Iterations\": [],\n","}\n","methods = {\"Saliency\": a_batch, \"Occlusion\": a_batch_occ, \"Integrated Gradients\": a_batch_ig, \"GradShap\": a_batch_gh}"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"id":"gI3ahcaJNrUQ"},"source":["#!ls drive/MyDrive/Projects/quantus/tutorials/assets/data"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"VcnLEflMNH9T","executionInfo":{"status":"ok","timestamp":1637241914247,"user_tz":-60,"elapsed":430,"user":{"displayName":"Anna Hedström","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GhbfsluHeZ1mzN6Bsf-1zU62lYHcz183jYjeS63=s64","userId":"05540180366077551505"}},"outputId":"92312ceb-2bb1-40a9-bd54-ccd464e05715"},"source":["path_sensitivity_results = \"sensitivity_results_200_extra_extra.csv\" #\"drive/MyDrive/Projects/quantus/tutorials/assets/data/sensitivity_results.csv\"\n","\n","if pathlib.Path(path_sensitivity_results).is_file():\n"," df = pd.read_csv(path_sensitivity_results)\n","len(df)"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/plain":["2160"]},"metadata":{},"execution_count":39}]},{"cell_type":"code","metadata":{"id":"UhQWT0TuJKSo"},"source":["path_sensitivity_results = path + \"/quantus/tutorials/assets/data/sensitivity_results.csv\"\n","\n","if pathlib.Path(path_sensitivity_results).is_file():\n"," df = pd.read_csv(path_sensitivity_results)\n","\n","else:\n","\n"," # Score explanations!\n"," for b in baseline_strategies:\n"," for s in subset_sizes:\n"," for nr in iterations: \n"," for method, attr in methods.items():\n"," for sim, sim_func in sim_funcs.items():\n"," score = np.mean(FaithfulnessCorrelation({'abs': True,\n"," 'normalize': True,\n"," 'normalize_func': quantus.normalize_by_max,\n"," 'nr_runs': nr,\n"," 'perturb_baseline': b,\n"," 'perturb_func': quantus.baseline_replacement_by_indices,\n"," 'similarity_func': sim_func,\n"," 'subset_size': s})(model=model.cuda(), \n"," x_batch=x_batch, \n"," y_batch=y_batch,\n"," a_batch=attr,\n"," **{\"device\": device}))\n"," \n"," result[\"Method\"].append(method)\n"," result[\"Baseline strategy\"].append(b.capitalize())\n"," result[\"Subset size\"].append(s)\n"," result[\"Iterations\"].append(nr)\n"," result[\"Faithfulness score\"].append(score)\n"," result[\"Similarity function\"].append(\"spearman\")\n","\n"," \n"," df = pd.DataFrame(result)\n"," df[\"Rank\"] = df.groupby(['Baseline strategy', 'Subset size', 'Iterations', 'Similarity function'])[\"Faithfulness score\"].rank()\n"," df.to_csv(path + \"/quantus/tutorials/assets/data/sensitivity_results.csv\")\n","\n","# Smaller adjustments.\n","df = df.loc[:, ~df.columns.str.contains('^Unnamed')]\n","df.replace(to_replace=\"Integrated Gradients\", value=\"Integrated\\nGradients\", inplace=True)\n","df.replace(value=\"GradShap\", to_replace=\"GS\", inplace=True)\n","df.columns = map(lambda x: str(x).capitalize(), df.columns)"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":412},"id":"CKUC7vWENMgW","executionInfo":{"status":"ok","timestamp":1637241979258,"user_tz":-60,"elapsed":323,"user":{"displayName":"Anna Hedström","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GhbfsluHeZ1mzN6Bsf-1zU62lYHcz183jYjeS63=s64","userId":"05540180366077551505"}},"outputId":"f4b40284-ed03-490a-b877-d9979a1d5cde"},"source":["path_sensitivity_results = \"sensitivity_results_200_extra_extra.csv\" #\"drive/MyDrive/Projects/quantus/tutorials/assets/data/sensitivity_results.csv\"\n","\n","if pathlib.Path(path_sensitivity_results).is_file():\n"," df = pd.read_csv(path_sensitivity_results)\n","\n","\n","# Smaller adjustments.\n","df = df.loc[:, ~df.columns.str.contains('^Unnamed')]\n","df.replace(to_replace=\"Integrated Gradients\", value=\"Integrated\\nGradients\", inplace=True)\n","df.replace(value=\"GradShap\", to_replace=\"GS\", inplace=True)\n","df.columns = map(lambda x: str(x).capitalize(), df.columns)\n","\n","df[\"Rank_2\"] = df.groupby(['Baseline strategy', 'Subset size', 'Iterations', 'Similarity function'])[\"Faithfulness score\"].rank()\n","df"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
NormaliseAbsoluteFaithfulness scoreBaseline strategySubset sizeMethodIterationsSimilarity functionRankRank_2
0TrueTrue0.029557Mean2Saliency100pearson3.07.0
1TrueTrue0.018670Mean2Integrated\\nGradients100pearson2.03.0
2TrueTrue0.024692Mean2Saliency100spearman3.08.0
3TrueFalse0.021572Mean2Integrated\\nGradients100pearson3.05.0
4TrueFalse-0.063219Mean2Saliency100spearman1.01.0
.................................
2155FalseFalse0.048248White142Occlusion500pearson3.09.0
2156FalseFalse0.023836White142Integrated\\nGradients500pearson2.04.0
2157FalseFalse-0.019863White142Saliency500spearman1.01.0
2158FalseFalse-0.016180White142Occlusion500spearman2.02.0
2159FalseFalse0.041108White142Integrated\\nGradients500spearman3.09.0
\n","

2160 rows × 10 columns

\n","
"],"text/plain":[" Normalise Absolute Faithfulness score ... Similarity function Rank Rank_2\n","0 True True 0.029557 ... pearson 3.0 7.0\n","1 True True 0.018670 ... pearson 2.0 3.0\n","2 True True 0.024692 ... spearman 3.0 8.0\n","3 True False 0.021572 ... pearson 3.0 5.0\n","4 True False -0.063219 ... spearman 1.0 1.0\n","... ... ... ... ... ... ... ...\n","2155 False False 0.048248 ... pearson 3.0 9.0\n","2156 False False 0.023836 ... pearson 2.0 4.0\n","2157 False False -0.019863 ... spearman 1.0 1.0\n","2158 False False -0.016180 ... spearman 2.0 2.0\n","2159 False False 0.041108 ... spearman 3.0 9.0\n","\n","[2160 rows x 10 columns]"]},"metadata":{},"execution_count":44}]},{"cell_type":"code","metadata":{"id":"QXdhXGTzUfZf","colab":{"base_uri":"https://localhost:8080/","height":442},"executionInfo":{"status":"ok","timestamp":1637241996406,"user_tz":-60,"elapsed":597,"user":{"displayName":"Anna Hedström","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GhbfsluHeZ1mzN6Bsf-1zU62lYHcz183jYjeS63=s64","userId":"05540180366077551505"}},"outputId":"a88843ba-f9db-4156-b771-646661346b3c"},"source":["df.groupby(['Baseline strategy', 'Subset size', 'Iterations', 'Similarity function']).mean()"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
NormaliseAbsoluteFaithfulness scoreRankRank_2
Baseline strategySubset sizeIterationsSimilarity function
Black2100pearson0.50.50.0248052.06.5
spearman0.50.50.0349202.06.5
250pearson0.50.50.0318582.06.5
spearman0.50.50.0239862.06.5
500pearson0.50.50.0440352.06.5
...........................
White142100spearman0.50.50.0189242.06.5
250pearson0.50.50.0353142.06.5
spearman0.50.50.0224082.06.5
500pearson0.50.50.0365992.06.5
spearman0.50.50.0305582.06.5
\n","

180 rows × 5 columns

\n","
"],"text/plain":[" Normalise ... Rank_2\n","Baseline strategy Subset size Iterations Similarity function ... \n","Black 2 100 pearson 0.5 ... 6.5\n"," spearman 0.5 ... 6.5\n"," 250 pearson 0.5 ... 6.5\n"," spearman 0.5 ... 6.5\n"," 500 pearson 0.5 ... 6.5\n","... ... ... ...\n","White 142 100 spearman 0.5 ... 6.5\n"," 250 pearson 0.5 ... 6.5\n"," spearman 0.5 ... 6.5\n"," 500 pearson 0.5 ... 6.5\n"," spearman 0.5 ... 6.5\n","\n","[180 rows x 5 columns]"]},"metadata":{},"execution_count":45}]},{"cell_type":"code","metadata":{"id":"wbaRUinzfLcj"},"source":["#df[\"Rank\"] = df.groupby(['Baseline strategy', 'Subset size', 'Iterations', 'Similarity function'])[\"Faithfulness score\"].rank()"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"id":"Etuxl5ytg1b3"},"source":["# Convert to datafame and rank. \n","df = pd.DataFrame(result)\n","df.to_csv(path + \"/quantus/tutorials/assets/data/sensitivity_results.csv\")\n","df[\"Rank\"] = df.groupby(['Baseline strategy', 'Subset size', 'Iterations', 'Similarity function']).rank()\n","\n","# Write to disk and re-open.\n","df.to_csv(path + \"/quantus/tutorials/assets/data/sensitivity_results.csv\")\n","df = pd.read_csv(path + \"/quantus/tutorials/assets/data/sensitivity_results.csv\")\n","\n","# Smaller adjustments.\n","df = df.loc[:, ~df.columns.str.contains('^Unnamed')]\n","df.replace(to_replace=\"Integrated Gradients\", value=\"Integrated\\nGradients\", inplace=True)\n","df.replace(value=\"GradShap\", to_replace=\"GS\", inplace=True)\n","df.columns = map(lambda x: str(x).capitalize(), df.columns)\n","df"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":495},"id":"CtDwzwzpfPCh","executionInfo":{"status":"ok","timestamp":1637229590011,"user_tz":-60,"elapsed":366,"user":{"displayName":"Anna Hedström","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GhbfsluHeZ1mzN6Bsf-1zU62lYHcz183jYjeS63=s64","userId":"05540180366077551505"}},"outputId":"c568be87-01c9-43a2-a559-378b3420aec1"},"source":[""],"execution_count":null,"outputs":[{"output_type":"stream","name":"stderr","text":["/usr/local/lib/python3.7/dist-packages/pandas/core/frame.py:4389: SettingWithCopyWarning: \n","A value is trying to be set on a copy of a slice from a DataFrame\n","\n","See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n"," method=method,\n"]},{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
NormaliseAbsoluteFaithfulness scoreBaseline strategySubset sizeMethodIterationsSimilarity functionRank
0TrueTrue0.029557Mean2Saliency100pearson7.0
1TrueTrue0.018670Mean2Integrated\\nGradients100pearson3.0
2TrueTrue0.024692Mean2Saliency100spearman8.0
3TrueFalse0.021572Mean2Integrated\\nGradients100pearson5.0
4TrueFalse-0.063219Mean2Saliency100spearman1.0
..............................
2155FalseFalse0.048248White142Occlusion500pearson9.0
2156FalseFalse0.023836White142Integrated\\nGradients500pearson4.0
2157FalseFalse-0.019863White142Saliency500spearman1.0
2158FalseFalse-0.016180White142Occlusion500spearman2.0
2159FalseFalse0.041108White142Integrated\\nGradients500spearman9.0
\n","

2160 rows × 9 columns

\n","
"],"text/plain":[" Normalise Absolute ... Similarity function Rank\n","0 True True ... pearson 7.0\n","1 True True ... pearson 3.0\n","2 True True ... spearman 8.0\n","3 True False ... pearson 5.0\n","4 True False ... spearman 1.0\n","... ... ... ... ... ...\n","2155 False False ... pearson 9.0\n","2156 False False ... pearson 4.0\n","2157 False False ... spearman 1.0\n","2158 False False ... spearman 2.0\n","2159 False False ... spearman 9.0\n","\n","[2160 rows x 9 columns]"]},"metadata":{},"execution_count":16}]},{"cell_type":"code","metadata":{"id":"Z_nKiL1Ra8W-"},"source":["# Group by rank\n","df_view = df.groupby([\"Method\"])[\"Rank\"].value_counts(normalize=True).mul(100).reset_index(name='Percentage').round(2)\n","df_view = df_view.append({'Method': 'Method A', 'Rank': 1.0, 'Percentage': 100}, ignore_index=True)\n","df_view = df_view.append({'Method': 'Method B', 'Rank': 2.0, 'Percentage': 100}, ignore_index=True)\n","df_view = df_view.append({'Method': 'Method C', 'Rank': 3.0, 'Percentage': 100}, ignore_index=True)\n","#df_view = df_view.append({'Method': 'Method D', 'Rank': 4.0, 'Percentage': 100}, ignore_index=True)\n","\n","# Reorder the methods for plotting purporses.\n","df_view_ordered = pd.DataFrame(columns=[\"Method\", \"Rank\", \"Percentage\"])\n","df_view_ordered = df_view_ordered.append({'Method': 'Method A', 'Rank': 1.0, 'Percentage': 100}, ignore_index=True)\n","df_view_ordered = df_view_ordered.append({'Method': 'Method B', 'Rank': 2.0, 'Percentage': 100}, ignore_index=True)\n","df_view_ordered = df_view_ordered.append({'Method': 'Method C', 'Rank': 3.0, 'Percentage': 100}, ignore_index=True)\n","df_view_ordered = df_view_ordered.append({'Method': 'Method D', 'Rank': 4.0, 'Percentage': 100}, ignore_index=True)\n","df_view_ordered = df_view_ordered.append([df_view.loc[df_view[\"Method\"] == 'Saliency']], ignore_index=True)\n","df_view_ordered = df_view_ordered.append([df_view.loc[df_view[\"Method\"] == 'Occlusion']], ignore_index=True)\n","df_view_ordered = df_view_ordered.append([df_view.loc[df_view[\"Method\"] == 'Integrated\\nGradients']], ignore_index=True)\n","df_view_ordered = df_view_ordered.append([df_view.loc[df_view[\"Method\"] == 'GradShap']], ignore_index=True)\n","df_view_ordered"],"execution_count":null,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"sl-xLLHInca-"},"source":["### 2.2 Plot results!"]},{"cell_type":"code","metadata":{"id":"f0-S_5iRnevU"},"source":["plt.style.use('seaborn-white')\n","sns.set(font_scale=1.5)\n","\n","path = \"drive/MyDrive/Projects/\""],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"id":"F3kR9dNzhNi7"},"source":["# Plot 1!\n","\n","fig, ax = plt.subplots(figsize=(6.5,5))\n","ax = sns.histplot(x='Method', hue='Rank', weights='Percentage', multiple='stack', data=df_view_ordered, shrink=0.6, palette=\"colorblind\", legend=False)\n","ax.spines[\"right\"].set_visible(False)\n","ax.spines['top'].set_visible(False)\n","ax.tick_params(axis='both', which='major', labelsize=16)\n","ax.set_ylabel('Frequency of rank')\n","ax.set_xlabel('')\n","ax.set_xticklabels([\"A\", \"B\", \"C\", \"D\", \"SAL\", \"OCC\", \"IG\", \"GD\"])\n","ax.yaxis.set_major_formatter(mtick.PercentFormatter())\n","plt.legend(loc='upper center', bbox_to_anchor=(0.5, 1.1), ncol=4, fancybox=True, shadow=False, labels=['1st', \"2nd\", \"3rd\", \"4th\"])\n","plt.axvline(x=2.5, ymax=0.95, color='black', linestyle='-')\n","plt.tight_layout()\n","plt.savefig(f'{path}sensitivity_analysis_1.png', dpi = 400)"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"id":"qDYcEaQstVax"},"source":["# Plot 2!\n","\n","ax = sns.catplot(x=\"Baseline strategy\", y=\"Rank\", hue=\"Method\", kind=\"bar\", estimator=np.mean, hue_order=['SAL', 'OCC', 'IG', \"GD\"],\n"," data=df, palette=sns.color_palette(\"husl\", 3), legend=False, height=5, aspect=7.5/5.8)\n","plt.legend(loc='upper center', bbox_to_anchor=(0.5, 1.1), ncol=4, fancybox=True, shadow=False)\n","ax.set_ylabels('Mean Rank')\n","ax.set_xlabels('')\n","plt.tight_layout()\n","plt.savefig(f'{path}sensitivity_analysis_2.png', dpi = 400)"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"id":"mc8Rc6fyelnL"},"source":["# Plot 3!\n","df_subset = df.loc[(df[\"Iterations\"] == 100) & (df[\"Subset size\"] == 102) & (df[\"Similarity function\"] == \"spearman\")]\n","ax = sns.catplot(x=\"Baseline strategy\", y=\"Rank\", hue=\"Method\", kind=\"bar\", estimator=np.mean, hue_order=['Saliency', 'Occlusion', 'Integrated\\nGradients'],\n"," data=df_subset, palette=sns.color_palette(\"husl\", 3), legend=False) \n","ax.set_xlabels('')\n","ax.set_ylabels('')\n","plt.legend(handles=[\"\", \"\", \"\"], labels=[\"\", \"\", \"\"], loc='upper center', bbox_to_anchor=(0.5, 1.1), ncol=3, fancybox=False, shadow=False)\n","plt.tight_layout()\n","plt.show()"],"execution_count":null,"outputs":[]}]}