{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# ROC curves\n", "The purpose of this notebook to generate and plot different ROC curves for illustration purposes." ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt\n", "from sklearn.metrics import roc_curve, auc" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 1. Random guesser" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "labels = np.random.randint(2, size=500)\n", "df = np.random.standard_normal(size=500)\n", "fpr, tpr, thresholds = roc_curve(labels, df)\n", "auc_score = auc(fpr, tpr)\n", "\n", "plt.figure(figsize=(4, 4))\n", "plt.plot(fpr, tpr, lw=1)\n", "plt.fill_between(fpr, tpr, label=f\"AUC = {auc_score:.3f}\", alpha=0.5)\n", "plt.plot([0, 1], [0, 1], color=\"gray\", linestyle=\"dotted\")\n", "plt.xlim([0.0, 1.0])\n", "plt.ylim([0.0, 1.0])\n", "plt.xlabel(\"FPR\")\n", "plt.ylabel(\"TPR\")\n", "plt.legend(loc=\"lower right\")\n", "plt.savefig(f\"roc_random.png\", bbox_inches=\"tight\")\n", "plt.savefig(f\"roc_random.pdf\", bbox_inches=\"tight\")\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 2. Good classifier\n", "Simulated by two normal distributions, one with $\\mu=1$ for positively labeled samples and one with $\\mu=-1$ for negatively labeled samples. The overlap of the two distributions ensures that the \"classifier\" still makes mistakes." ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "labels = np.random.randint(2, size=500)\n", "df = np.where(labels == 1, np.random.normal(loc=1.0, size=500), np.random.normal(loc=-1.0, size=500))\n", "fpr, tpr, thresholds = roc_curve(labels, df)\n", "auc_score = auc(fpr, tpr)\n", "\n", "plt.figure(figsize=(4, 4))\n", "plt.plot(fpr, tpr, lw=1)\n", "plt.fill_between(fpr, tpr, label=f\"AUC = {auc_score:.3f}\", alpha=0.5)\n", "plt.plot([0, 1], [0, 1], color=\"gray\", linestyle=\"dotted\")\n", "plt.xlim([0.0, 1.0])\n", "plt.ylim([0.0, 1.0])\n", "plt.xlabel(\"FPR\")\n", "plt.ylabel(\"TPR\")\n", "plt.legend(loc=\"lower right\")\n", "plt.savefig(f\"roc_goodclf.png\", bbox_inches=\"tight\")\n", "plt.savefig(f\"roc_goodclf.pdf\", bbox_inches=\"tight\")\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Inverse\n", "If we inverse the decision function, the $AUC$ changes to $1-AUC$." ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAARoAAAEKCAYAAADNZZohAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAAsTAAALEwEAmpwYAAAjJUlEQVR4nO3de3yU1b3v8c9vcg8JCZDIHcNFriqIAa1VwSIWkApadKO2YqmHsk+xurv3Prr3qe2+nPOq+7Tdbb0XL7WiglREUQQqWOXijXARE9hcRMCQGAiEJISQZGZ+548J2TEkYRLmmWcuv/frlZfMPE9mvsTJj7XW86y1RFUxxhgnedwOYIyJfVZojDGOs0JjjHGcFRpjjOOs0BhjHGeFxhjjOMcKjYg8JyJHRKSwjeMiIo+IyD4R2SEiY53KYoxxl5MtmueBKe0cnwpc1Pg1D3jSwSzGGBc5VmhUdT1wvJ1TZgAvaMBHQLaI9HYqjzHGPYkuvndf4Mtmj4sbnytteaKIzCPQ6qFLly6XDx8+PCwBjTGgqhw7doyDBw+Wq2puZ17DzUIjrTzX6nwIVV0ILATIz8/XgoICJ3MZY5rx+/288cYb3HLLLQc7+xpuXnUqBvo3e9wPKHEpizGmhVOnTnH69Gk8Hg8333zzeb2Wm4VmBXBX49WnK4FKVT2r22SMCT9V5aWXXuKVV14hFBOvHes6ichiYCKQIyLFwC+AJABVfQp4G5gG7ANOAT9wKosxpmNEhGuuuYbk5GREWhvl6BjHCo2q3n6O4wr82Kn3N8Z0XFVVFcePHycvL49QXnSxO4ONMU1WrVrFsmXLaGhoCOnrunnVyRgTYaZPn05lZSVJSUkhfV1r0RgT544dO8a6detQVbp06UKfPn1C/h5WaIyJc7t27WLr1q1UVVU59h7WdTImTqkqIsI3v/lNxowZQ0ZGhmPvZS0aY+JQaWkpzzzzDJWVlYiIo0UGrNAYE5f8fj8+nw+/3x+W97OukzFx5NSpU6Snp9O3b19+9KMfheRmvGBYi8aYOFFaWsojjzzCzp07AcJWZMAKjTFxIycnh4svvpj+/fuf++QQs0JjTIwrLi7G6/WSlJTE9OnTyczMDHsGKzTGxLCqqir+9Kc/8e6777qawwaDjYlhXbt25eabb2bgwIGu5rAWjTExqKioiNLSwPJOI0eOJC0tzdU8VmiMiTFer5e1a9eyfv16t6M0sa6TMTEmMTGROXPmkJ6e7naUJtaiMSZGbN68mffffx+A7OxskpOTXU7036xFY0wMUFVKSko4deoUfr8fjyey2hBWaIyJcl6vl8TERL7zne+gqhFXZMC6TsZEtQ0bNvDss882bYuSkJDgdqRWWYvGmCjWu3dvKioqImo8pjVWaIyJMqpKeXk5ubm5DBkyhCFDhrgd6Zys62RMlPn444/5wx/+wJEjR9yOEjRr0RgTZUaPHo3f7yc3N9ftKEGzFo0xUcDv97N9+3ZUlbS0NK666qqwridzvqzQGBMF9u7dyxtvvMHu3bvdjtIp1nUyJgoMGzaMOXPmkJeX53aUTrEWjTERyufzsXLlSioqKgCitsiAFRpjItaJEycoKiriwIEDbkc5b9Z1MibCnNnYrUePHixYsCCiZmF3lrVojIkg9fX1vPjii2zduhUgJooMWKExJqJ4PB4SExNJTIytzkZs/W2MiVKnT58mISGBpKQkZs+eHVX3yATDWjTGuMzv9/PSSy+xdOnSpvGZWGMtGmNc5vF4yM/PJzU1NSaLDDjcohGRKSKyW0T2iciDrRzPEpE3ReRTESkSkR84mceYSFJTU0NJSQkQmL80bNgwlxM5x7FCIyIJwOPAVGAkcLuIjGxx2o+Bnao6GpgI/EZEInthDWNCZMWKFSxZsgSv1+t2FMc52XUaD+xT1f0AIrIEmAHsbHaOApkSaC9mAMeB2P+pGwNMmzaNysrKmLvC1Bonu059gS+bPS5ufK65x4ARQAnwGXCfqvpbvpCIzBORAhEpOHr0qFN5jXHciRMn2LRpE6pKVlYWAwYMcDtSWDhZaFob1dIWj78NbAf6AGOAx0Sk61nfpLpQVfNVNT+a1uAwpqVt27axceNGqqur3Y4SVk622YqB/s0e9yPQcmnuB8DDqqrAPhH5AhgOfOJgLmNcM3HiRMaMGUPXrmf9exrTnGzRbAYuEpGBjQO8s4EVLc45BEwCEJGewDBgv4OZjAm7o0ePsmjRImpqahARunXr5naksHOsRaOqXhFZAKwBEoDnVLVIROY3Hn8K+HfgeRH5jEBX6wFVLXcqkzFuqKmpoaKigtraWrp06eJ2HFdIoNcSPfLz87WgoMDtGMacU319fdM2KD6fL2L3XAqWiGxR1fzOfK9NQTDGAV999RW///3v2bt3L0DUF5nzZYXGGAdkZ2czcODAqNqpwElWaIwJobKyMvx+P6mpqcyaNYvs7Gy3I0UEKzTGhEhlZSXPPPMMf/3rX92OEnFi/95nY8IkKyuLqVOnxvTkyM6yFo0x52nPnj0cO3YMgLFjx8btJez2WKEx5jw0NDTw1ltvsXbtWrejRDTrOhlzHpKSkrjrrrvIzMx0O0pEs0JjTCds376d+vp6xo8fT05OjttxIp51nYzpIFVlz5497N69G7//rFVNTCusRWNMB/j9fjweD9/97ndRVTye+Pi3etjPVp3X98fHT8mYEPjoo4944YUXaGhoICEhIS5Wxjujznt+LTcrNMYEKSMjg4yMjLhpxYRS/JRkYzqpsrKSrKwsLr74YkaNGhWzW6I4yUqzMe34+OOPeeKJJygvDyyTZEWmc6xFY0w7Ro4cyalTp+jRo4fbUVwz7GerSEk8vzaJtWiMaUFV2bVrF6pKZmYm1113XVy3ZOq8fuZPGHxer2GFxpgWdu3axdKlS9mzZ4/bUWKGFRpjWhgxYgSzZ89m6NChbkeJGVZojCFwI97atWuprq5GRBg2bFhcd5dCzQqNMcCxY8f45JNP2L17t9tRYpJddTJxTVUREXJzc1mwYEHcbewWLtaiMXHL6/XyyiuvUFRUBGBFxkFWaEzc8vv91NbWUltb63aUmGddJxN36uvrSUhIIDk5mTlz5tjcpTCwn7CJK36/n5dffpnly5fH1TIPbrMWjYkrHo+H4cOHk5mZaZevw8gKjYkLtbW11NTUkJOTw5VXXul2nLhj7UYTF5YvX86LL76I1+t1O0pcshaNiQs33HADlZWVcbUqXiSxFo2JWdXV1WzduhWAnJwcBg8+vxnIpvOs0JiY9eGHH7JmzRqqq6vdjhL3rB1pYtb111/PZZddZpu7RQBr0ZiYcvz4cf785z9TV1eHx+MhNzfX7UgGhwuNiEwRkd0isk9EHmzjnIkisl1EikTkfSfzmNhXXl7OoUOHqKqqcjuKacaxrpOIJACPA5OBYmCziKxQ1Z3NzskGngCmqOohEbnAqTwmtnm9XhITExk6dCg/+clPSEpKcjuSacbJFs14YJ+q7lfVemAJMKPFOXcAr6nqIQBVPeJgHhOjysrKeOyxxzh48CCAFZkI5GSh6Qt82exxceNzzQ0FuonIeyKyRUTuau2FRGSeiBSISMHRo0cdimuiVUZGBrm5uTboG8GcLDStTSTRFo8TgcuBG4FvAw+JyFkLtarqQlXNV9V8G9wzZxw/fhxVpUuXLtx55510797d7UimDU4WmmKgf7PH/YCSVs5Zrao1qloOrAdGO5jJxIgTJ07whz/8gfXr17sdxQTByUKzGbhIRAaKSDIwG1jR4pw3gGtEJFFE0oErgF0OZjIxIisriwkTJjB27Fi3o5ggOHbVSVW9IrIAWAMkAM+papGIzG88/pSq7hKR1cAOwA88o6qFTmUy0e+LL76ge/fuZGVlcdVVV7kdxwTJ0TuDVfVt4O0Wzz3V4vGvgF85mcPEhoaGBpYtW8aAAQO47bbb3I5jOsCmIJiokZSUxB133EG3bt3cjmI6yAqNiXhFRUX4fD4uvfRS+vTp43Yc0wlWaExEU1W2bduG1+vlkksuseU3o5QVGhOxzmzudmY8xopM+A372SpSEs//4rTN3jYRacuWLSxZsgSfz0dycjLJycluR4pLdV4/8yec/4JhVmhMRFLVpi8T/azrZCJKTU0NXbp0IT8/n8svv9y6SzHCWjQmYmzevJnHH3+ciooKwMZkYkmHC42IJIjInU6EMfFt8ODBXHrppWRlZbkdxYRYm4VGRLqKyD+JyGMicoME3AvsB+y2TBMSqsoXX3wBQPfu3ZkyZYptUxuD2vs/uggYBnwG3AP8BZgFzFDVlgtYGdMpO3fu5IUXXmDv3r1uRzEOam8weJCqXgIgIs8A5cAAVbW9K0zIjBgxgpkzZzJkyBC3oxgHtdeiaTjzB1X1AV9YkTGhoKps2LCB2tpaPB4Po0ePtoHfGNdei2a0iFTx3yvlpTV7rKra1fF0JiaVlZXx/vvvk5qayrhx49yOY8KgzUKjqgnhDGLiR69evZg/fz49evRwO4oJk/auOqWKyP2NV53miYjd3Gc6zefzsXz5cj7//HMgsBe2dZfiR3tjNH8C8glcdZoG/CYsiUxMamho4MiRI9guFvGpvVbKyGZXnZ4FPglPJBNLvF4vHo+H1NRUfvjDH5KYaA3jaBGqmdsQ/FUnb0jezcQVn8/H4sWLWblyJYAVmSgTqpnb0H6LZkzjVSYIXGmyq06mQxISEujfvz/Z2dluRzEua6/QfKqql4UtiYkZdXV11NbWkp2dzcSJE92OYyJAe10nWwjEdMqyZctYtGgRPp/P7Simk0I5PgPtt2guEJGftnVQVf8zZClMTJk4cSLV1dUkJNitWNGqzuvnvkkXhez12is0CUAGre+hbczX1NTUcODAAUaNGmU7FZiztFdoSlX138KWxES19evXs23bNi688EIyMjLcjmMiTHuFxloyJmiTJ09m9OjRVmRiQKjHZ6D9weBJIX0nE3MqKytZsWIFDQ0NJCYmWpcpRoTy/pkz2iw0qno8pO9kYk5xcTG7du3i+HH7qJj22a2apsP8fj8ej4dRo0YxaNAg0tLS3I5kIpwtzmo6pLy8nCeffJKSkhIAKzIxxonxGbBCYzooKSmJ1NRUm7cUo5wYnwHrOpkgVVdXk5GRQVZWFnPnzrW1ZEyHWIvGnFNFRQVPPPEEH374IWAbu5mOs0Jjzik7O5tx48YxcuRIt6OYKGWFxrSpuLiYmpoaRIRvfetbttyD6TRHC42ITBGR3SKyT0QebOe8cSLiE5FZTuYxwauvr2fx4sWsWrXK7SgmBjg2GCwiCcDjwGSgGNgsIitUdWcr5/0HsMapLKbjkpOTufXWW8nJyXE7iokBTrZoxgP7VHW/qtYDS4DWttK9F1gGHHEwiwnSnj172L17NwB5eXk2d8mEhJOFpi/wZbPHxY3PNRGRvsDNwFPtvVDjdi8FIlJgq+g7R1XZtGkTmzZtQtXWPTOh4+R9NK1dA2356f0d8ICq+tq7ZKqqC4GFAPn5+fYb4BARYfbs2YiIXcI2IeVkoSkG+jd73A8oaXFOPrCk8UOdA0wTEa+qvu5gLtPCjh072L9/PzfddJNNKTCOcLLQbAYuEpGBwGFgNnBH8xNUdeCZP4vI88BbVmTCr6qqiqqqKnw+Hx6P3fFgQs+xQqOqXhFZQOBqUgLwnKoWicj8xuPtjssY59XV1ZGSksLVV1/NVVddZUXGOMbRuU6q+jbwdovnWi0wqnq3k1nM123ZsoX169czd+5csrKyrMgYR9mnK07169ePQYMG2eVr08SpJSLACk3cObOOTM+ePZkxY4ZtiWKaOLVEBFihiSuFhYU8/fTT7N+/3+0oJs5YoYkjI0aMYOrUqeTl5bkdxcQZKzQxTlX55JNPqK+vJyEhgfHjx9vArwk7+8TFuNLSUlavXs2nn37qdhQTx2wpzxjXp08f7rnnHnr37u12FBPHrEUTg/x+PytXruTLLwNzWvv06WNzl4yrrNDEoNOnT7N//34OHTrkdhRjAOs6xRS/34+IkJ6ezrx580hJSXE7kjGAtWhihs/nY+nSpbzzzjsAVmRMRLFCEyM8Hg9ZWVm2gLiJSNZ1inINDQ3U1dWRkZHB1KlT3Y5jTKusRRPlXn31VRYtWoTP53M7ioliTk6oBGvRRL1vfOMbnDx50iZHmvNS5/Vz36SLHHt9KzRRqLa2lsOHDzNkyBCbt2TOm9OtGbCuU1Rat24dS5cupaamxu0oJooN+9kq8h5cCeDY8hBnWIsmCk2ePJlLLrmELl26uB3FRDGnu0vNWYsmSlRXV/OXv/wFn89HSkoKF154oduRTBQLR3epOSs0UeLzzz+noKCA8vJyt6OYGODkanqtsa5ThFNVRIQxY8YwePBgMjMz3Y5kTIdZiyaCVVRU8Oyzzza1YqzImGhlhSaC+Xw+6uvraWhocDuKMefFuk4RqLa2lrS0NHJycpg/f74tvWminn2CI0xFRQWPP/44BQUFAFZkTEywT3GE6dq1KyNGjGDgwIHnPtmYKGFdpwjx1Vdf0a1bN1JSUrjxxhvdjmNiWLjvoQFr0USEuro6XnjhBVauXOl2FBPjhv1sFeD8lIOWrEUTAVJSUpg5cya9evVyO4qJceGcdtCcFRoX7d+/H4/HQ15eHkOHDnU7jjGOsa6TS1SVtWvXsm7dOlTV7TjGOMpaNC4REe644w48Ho/tuWRinrVowmznzp2sXr0aVSUjI4P09HS3IxnjOCs0YVZSUkJJSQler9ftKCbOuHFZ+wxHu04iMgX4PZAAPKOqD7c4fifwQOPDk8DfqmpM7kbv9XpJTExk0qRJeL1ekpKS3I5k4ohbl7XPcKzQiEgC8DgwGSgGNovIClXd2ey0L4AJqlohIlOBhcAVTmVyy/bt29m4cSN33303GRkZVmRM2Az72SrqvH5SEj2uFRlwtkUzHtinqvsBRGQJMANoKjSq+kGz8z8C+jmYxzU5OTn07NnTdo80YXWmFePGfTMtOdlh6wt82exxceNzbfkhsKq1AyIyT0QKRKTg6NGjIYzorDPryPTr149bb73VWjImrMK9il57nCw0rV2zbfWGERG5jkCheaC146q6UFXzVTU/Nzc3hBGdU1hYyBNPPMHBgwfdjmLizJndDdwa+G2Nk12nYqB/s8f9gJKWJ4nIpcAzwFRVPeZgnrAaOnQoEydOpF+/mOwNmggVSd2l5pwseZuBi0RkoIgkA7OBFc1PEJEBwGvA91V1j4NZwkJV2bFjBz6fj+TkZK699lrbQdKEVSR1l5pzrEWjql4RWQCsIXB5+zlVLRKR+Y3HnwJ+DvQAnmi8O9arqvlOZXLa4cOHWb58OfX19eTnR+1fw5iQc/Q+GlV9G3i7xXNPNfvzPcA9TmYIp379+jFnzhzbc8mYFiJntChKqSrvvPMOZWVlAOTl5dncJeMKN+/8PRebVHmeampq+Oyzz0hJSaFnz55uxzFxzK21ZoJhhaaTzmzslpGRwfz580lLS3M7koljkdyaAes6dYrP52PZsmVs2LABgPT0dOsuGde4PY8pGFZoOkFESEhIsK1QjOuiociAdZ06xOv14vV6SU1NZebMmdaKMa6L5HGZ5qzQBElVefXVVzl58iRz58611oxxzZkZ2UBEj8s0Z4UmSCLC2LFjqampsSJjXBUtrZjmrNCcQ11dHUeOHKF///62U4ExnWSF5hzWrFlDUVER9913n63va8KmefeopWjpLjVnheYcrr/+ekaOHGlFxoRNpM7APh/RVxrD4NSpU6xfvx5VJT09nSFDhrgdycSRSJ2BfT6sRdOKwsJCNmzYwPDhw7ngggvcjmPiRPP1fWONFZpWjBs3jiFDhtC9e3e3o5g4Eo1Xk4IVe6Wzk6qqqli0aBGVlZWIiBUZY0LIWjSNampqOHbsGNXV1WRlZbkdJ+40NDRQXFzM6dOn3Y7imqdv6k3XVPf//ie9wq6qJBo0dO2QuC809fX1JCcn07t3b+69915betMlxcXFZGZmxs16PoWHK/Hr19fq791VyM10d0seVeVkZQVwjB2VocsS14WmoqKC559/nkmTJnHppZdakXHR6dOn46LInCkwHhF6dk11O85ZRISMrG5kNG4VFCpxXWgyMzO58MILbcGqCBHLRSbSC0xzTvx/iMtCU15eTlZWFklJSdxyyy1uxzFxwK8a8QXGSXFXaE6fPs0f//hHhg4dyowZM9yOY9rw23dCu/vO300Obp7a8uXLueWWW9i1axfDhw8H4L333uPXv/41b731VtN5d999N9OnT2fWrFk0NDTw0EMPsWzZMlJSUkhPT+df//VfmTp1KhBozXg60Up45De/4uVFz5OQkMD/+Y/fcN31k886p+L4cX70g+/z5aGD9B9wIQuff5Hsbt0A2Fn4Gf94/wKqq6vxeDys/utGUlNTuf2Wmygr+wqv18uV3/gmv/zN7xwfNoi7y9upqalMmTKFa6+91u0oJgItXryYq6++miVLlgT9PQ899BClpaUUFhZSWFjIm2++SXV1ddNxv2qHB3l3/9cuXn/tz7z/8VZeXraCB//+Pnw+31nnPfrbX3PNhIl8uK2QayZM5NHf/hoIrJ3043lz+X+/fZT1H2/ltZVrmrZkXvj8i7y76RPe/2gLx8qP8ubyZR3K1hlxU2gOHTpESUlgo8xLLrmEbo1V35gzTp48yaZNm3j22WeDLjSnTp3i6aef5tFHHyUlJVBMevbsyW233XZeWdasfIuZt9xKSkoKF+blMXDQYLZt2Xz2eW+/xW13fA+A2+74HqtXvgnAe++uZeSoixl1yaUAdO/eo6nVktm1KxAoRvUNDRCGsbG46DqpKitXriQ5OZm5c+fG9KCj6bzXX3+dKVOmMHToULp3787WrVsZO3Zsu9+zb98+LujdlwNVfqg60eo5Z7pNP/+nf2TThvVnHZ95yyzu/ek/fu250tLDXD7uiqbHvfv0pbTkrB2lOXr0CD179QagZ6/elB89CsD+fXsREWbf/B2OlZcz47uzWHD/3zd93+ybv8O2LQV8a/INfGem8+OUcVFoRITbb7+dhIQEKzKmTYsXL+b+++8HYPbs2SxevJixY8e2+ZkREfaWBbpIwQz0/tsvfxV0lha32DS9X7C8Xi8ff/gBq9/bSFpaOrfeNJXRY8ZyzcTrAFiy/E1Onz7Nj++5m43vv8eEb00K+rU7I6YLzd69eykpKWHChAlkZ2e7HcdEsI2FX7Bu3bts+3QHIoLP50NE+N5P/pnyhiQOlx1lR/GJpvMPHC6j0p/KJQMHUVZymJPV1WRkZrb7Hh1p0fTp05eS4uKmx6Ulh+nVu/dZ35ubewFlX5XSs1dvyr4qJSc3t+n7v3H1NfTokQPApBumsOPTbU2FBgLjlTdMm87qt990vNDE9BjNnj172L17Nw0NDW5HMRGs8HAlf1n5Brfdfifbdu5la9EePv2vz8kbOJADRVsYN3oUx46UUVl6gJ5dU6k/Uca+3UVcc2U+Ay7oxu3fn8P/fuDvqa+vB6Dsq1JefWXxWe/zb7/8Fes2fnzWV8siA3DDtBt5/bU/U1dXx8EDB9j/+T4uu3zc2edNvZGlL78IwNKXX+Tb06YDMHHSZHYVFnLq1Cm8Xi8fbtzA0OEjqDl5krKvSoFAq2fdX1YzZOiwkP0s2xKTLRq/34/H42HatGnU19c3jbab6BHs5ehQ8Kuy9q3XuPfv/uFrz0+/aSav/XkpV151NY8//Rz3/8951NXVkZiYyH8+8iRdG+fEPfjQv/Dwv/8L146/jJTUVNLT0/lf//zz88o0fMRIbpr5Xa4dfxmJiYlfuwT90wV/y11z72HM2Mu596f/wLw53+PlRX+ib7/+PP2nlwDI7taNHy34CVOuuxoRYdLkbzP521M5eqSMu2bPor6+Hp/Px9XXTmDO3P9xXlmDIdpaZzCC5efna0FBQZvHCwsL+eCDD/j+979vu0dGkV27djFixAhX3ntH8Ym4vpmuNQf27eGDY1//mfz0hmFbVDW/M68Xc12ntLQ00tPTbd6SMREkZrpOlZWVZGVlMXjwYAYNGmRXl0yrWps13Zm7dk3HxESLpqioiEcffZTixlF6KzLRyelufOHhSiBwKbr5l9tLM0QaJ/4/xESLZtCgQVxxxRX06tXL7Simk1JTUzl27Bg9evRARFpteZwvj7i/3kukO7MezUlvaP+xjupCs3v3bi666CLS0tKYPPnsCWcmevTr149Fa7fSL+sggiACmSmh/3jWlIX8JWPOmRX2QilqC82hQ4dYsmQJ06dP5/LLL3c7jumg1jZIS0n0fH2bkZNhDmUc42ihEZEpwO+BBOAZVX24xXFpPD4NOAXcrapbg3ntAQMG8Dd/8ze2TW2Ea2vHxZRET8yu+G/O5lihEZEE4HFgMlAMbBaRFaq6s9lpU4GLGr+uAJ5s/G+bTp48yfHjx+nevXvTeiEmMsXijoumc5xs0YwH9qnqfgARWQLMAJoXmhnACxoY5v5IRLJFpLeqlrb1oidPnmTHjh1MnDjRwejRqb39mt1wVlfIxC0nC01f4Mtmj4s5u7XS2jl9ga8VGhGZB8xrfFh33XXXFYY2quNygNCu9uyskOX96f8NxasEJdp+xhB9mTs9KcrJQtPa9bGW1yuDOQdVXQgsBBCRgs7eBu2WaMscbXnBMoeDiLQ99+ccnLxhrxjo3+xxP6Dlyj3BnGOMiXJOFprNwEUiMlBEkoHZwIoW56wA7pKAK4HK9sZnjDHRybGuk6p6RWQBsIbA5e3nVLVIROY3Hn8KeJvApe19BC5v/yCIl17oUGQnRVvmaMsLljkcOp036paJMMZEn5iYVGmMiWxWaIwxjovYQiMiU0Rkt4jsE5EHWzkuIvJI4/EdItL+vhgOCyLvnY05d4jIByIy2o2cLTK1m7nZeeNExCcis8KZr40s58wsIhNFZLuIFInI++HO2CLLuT4XWSLypoh82pg3mHFKR4nIcyJyRERavV+tU797qhpxXwQGjz8HBgHJwKfAyBbnTANWEbgX50rg4wjPexXQrfHPU93MG2zmZue9S2DgflakZwayCdx9PqDx8QURnvefgf9o/HMucBxIdvnnfC0wFihs43iHf/citUXTNH1BVeuBM9MXmmuavqCqHwHZInL2fhThcc68qvqBqlY0PvyIwD1DbgrmZwxwL7AMOBLOcG0IJvMdwGuqeghAVd3MHUxeBTIbJxhnECg03vDGbBFIdX1jjrZ0+HcvUgtNW1MTOnpOuHQ0yw8J/IvgpnNmFpG+wM3AU2HM1Z5gfs5DgW4i8p6IbBGRu8KW7mzB5H0MGEHgRtXPgPtUNXImrLWuw797kboeTcimL4RJ0FlE5DoCheZqRxOdWzCZfwc8oKq+CFkeNZjMicDlwCQgDfhQRD5S1T1Oh2tFMHm/DWwHvgUMBt4RkQ2qWuVwtvPR4d+9SC000TZ9IagsInIp8AwwVVWPhSlbW4LJnA8saSwyOcA0EfGq6uthSXi2YD8X5apaA9SIyHpgNOBGoQkm7w+AhzUw+LFPRL4AhgOfhCdip3T8d8/NQad2BqMSgf3AQP57EG1Ui3Nu5OsDUp9EeN4BBO6Avsrtn2+wmVuc/zzuDwYH83MeAaxrPDcdKAQujuC8TwL/0vjnnsBhICcCPh95tD0Y3OHfvYhs0ahz0xfczPtzoAfwRGMLwasuztwNMnNECSazqu4SkdXADsBPYGVHV5YVCfJn/O/A8yLyGYFf3AdU1dWlI0RkMTARyBGRYuAXQBJ0/nfPpiAYYxwXqVedjDExxAqNMcZxVmiMMY6zQmOMcZwVGmOM46zQmJBpnOG9vdlXXuNM6koR2SYiu0TkF43nNn/+v0Tk127nN86JyPtoTNSqVdUxzZ8QkTxgg6pOF5EuwHYReavx8Jnn04BtIrJcVTeFN7IJB2vRmLDRwLSALQTm9DR/vpbAfB+3JsUah1mhMaGU1qzbtLzlQRHpQeCW9aIWz3cjsC3y+vDENOFmXScTSmd1nRpdIyLbCEwJeLjxNvyJjc/vILAD4sOq+lXYkpqwskJjwmGDqk5v63kRGQpsbByj2R7mbCYMrOtkXKeBtWJ+CTzgdhbjDCs0JlI8BVwrIgPdDmJCz2ZvG2McZy0aY4zjrNAYYxxnhcYY4zgrNMYYx1mhMcY4zgqNMcZxVmiMMY77/8I6+GMUxN5FAAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "fpr, tpr, thresholds = roc_curve(labels, -df)\n", "auc_score = auc(fpr, tpr)\n", "\n", "plt.figure(figsize=(4, 4))\n", "plt.plot(fpr, tpr, lw=1)\n", "plt.fill_between(fpr, tpr, label=f\"AUC = {auc_score:.3f}\", alpha=0.5)\n", "plt.plot([0, 1], [0, 1], color=\"gray\", linestyle=\"dotted\")\n", "plt.xlim([0.0, 1.0])\n", "plt.ylim([0.0, 1.0])\n", "plt.xlabel(\"FPR\")\n", "plt.ylabel(\"TPR\")\n", "plt.legend(loc=\"lower right\")\n", "plt.savefig(f\"roc_goodclf_inv.png\", bbox_inches=\"tight\")\n", "plt.savefig(f\"roc_goodclf_inv.pdf\", bbox_inches=\"tight\")\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Copyright © 2023 Felix Kleinsteuber and Computer Vision Group, Friedrich Schiller University Jena" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3.10.4 ('pytorch-gpu')", "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.10.4" }, "orig_nbformat": 4, "vscode": { "interpreter": { "hash": "17cd5c528a3345b75540c61f907eece919c031d57a2ca1e5653325af249173c9" } } }, "nbformat": 4, "nbformat_minor": 2 }