{ "cells": [ { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "The autoreload extension is already loaded. To reload it, use:\n", " %reload_ext autoreload\n", "Found 2 sessions\n", "Session 'Marten_01' at folder: /home/kleinsteuber/vscode/ResizedSessions256_NoBackup/VIELAAS_Spring_Session01-VIELAAS_Marten_01\n", "Loaded scans.\n" ] } ], "source": [ "%load_ext autoreload\n", "%autoreload 2\n", "\n", "import numpy as np\n", "from sklearn.neighbors import KernelDensity\n", "from sklearn.linear_model import LogisticRegression\n", "import pandas as pd\n", "\n", "from py.Dataset import Dataset\n", "from py.FileUtils import load\n", "from py.PlotUtils import plot_roc_curve\n", "\n", "DIR = '/home/kleinsteuber/vscode/ResizedSessions256_NoBackup' # dataset directory\n", "SESSION = \"marten_01\"\n", "TRAIN_NAME = \"ae2_deep_noise_sparse_marten_01\"\n", "\n", "ds = Dataset(DIR)\n", "session = ds.create_session(SESSION)" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [], "source": [ "lapse_losses, lapse_encodings, lapse_labels = load(f\"./ae_train_NoBackup/{TRAIN_NAME}/eval/{session.name}_lapse.pickle\")\n", "motion_losses, motion_encodings, motion_labels = load(f\"./ae_train_NoBackup/{TRAIN_NAME}/eval/{session.name}_motion.pickle\")" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [], "source": [ "kde = KernelDensity(kernel=\"gaussian\", bandwidth=0.2).fit(lapse_encodings)" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [], "source": [ "preds = kde.score_samples(motion_encodings)\n", "y_anom = preds[motion_labels == 1]\n", "y_norm = preds[motion_labels == 0]" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "count 2.510000e+02\n", "mean -8.112198e+07\n", "std 7.719151e+07\n", "min -2.596059e+08\n", "25% -1.292464e+08\n", "50% -6.332858e+07\n", "75% -5.495176e+06\n", "max 3.179783e+02\n", "dtype: float64" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pd.Series(y_norm).describe()" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "count 4.900000e+01\n", "mean -1.902134e+09\n", "std 1.244863e+09\n", "min -4.574705e+09\n", "25% -1.643442e+09\n", "50% -1.380562e+09\n", "75% -1.193421e+09\n", "max -6.012163e+08\n", "dtype: float64" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pd.Series(y_anom).describe()" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.3233333333333333" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "mode = \"kde,loss\"\n", "\n", "if mode == \"kde\":\n", " y_anom = preds[motion_labels == 1]\n", " y_norm = preds[motion_labels == 0]\n", " X = np.concatenate([y_norm, y_anom]).reshape((-1, 1))\n", " y = np.concatenate([-np.ones_like(y_norm), np.ones_like(y_anom)])\n", "elif mode == \"loss\":\n", " y_anom = motion_losses[motion_labels == 1]\n", " y_norm = motion_losses[motion_labels == 0]\n", " X = np.concatenate([y_norm, y_anom]).reshape((-1, 1))\n", " y = np.concatenate([-np.ones_like(y_norm), np.ones_like(y_anom)])\n", "elif mode == \"loss,kde\" or mode == \"kde,loss\":\n", " mode = \"kde,loss\"\n", " y_anom = np.array([preds[motion_labels == 1], motion_losses[motion_labels == 1]]).transpose()\n", " y_norm = np.array([preds[motion_labels == 0], motion_losses[motion_labels == 0]]).transpose()\n", " X = np.concatenate([y_norm, y_anom])\n", " y = np.concatenate([-np.ones((y_norm.shape[0])), np.ones((y_anom.shape[0]))])\n", "else:\n", " raise ValueError(\"unknown mode\")\n", "\n", "clf = LogisticRegression().fit(X, y)\n", "clf.score(X, y)" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAfkAAAHwCAYAAACluRYsAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAAsTAAALEwEAmpwYAAA8pElEQVR4nO3dd5hU5d3/8fdXOgJ2DWJBIwp2RTHGAhaalWAHYwzW2KK/WHhMMY8l0USjMXYjaow1YqKioqhUjRqxokZBLKDYFUHpe//+mIFnWVnYhZ09U96vXHNdzJwzM589bvYz933OnBMpJSRJUvlZKesAkiSpMCx5SZLKlCUvSVKZsuQlSSpTlrwkSWXKkpckqUxZ8lKRiIgUEZs00GsdHRHj6rhux/x7N12O97klIi6sf8LlExFrRcSbEdGysd6zGEXEfRHRJ+scKn6WvIpaRIyKiC8jokU9n9dghamiMhi4OaU0u/qD+Q8b8yNi3SU8fmGNx77zoSYiBkTE8xExMyKmRcQjEbFrQwaPiEMj4umI+DYiRtVh/QER8V5EfBMR/4qI1astvhi4qCHzqTxZ8ipaEdER2A1IwAHZpileyzMCL0X5D3o/Af5e4/GVgYOA6cDA5Xjd/wdcAfwOWAfYALgGOHDFEn/HF/n3ubgOmbYArgd+nM/0bT4TACml54B2EbFDA2dUmbHkVcyOAp4BbiH3x32R/Aj/2Gr3F01PR8SY/MMv50dmh+UfPy4iJkXEFxHxQPVRX0R0jogR+WVvRsSh1ZbdEhFXR8RDETEjIp6NiO9XW75Fted+HBHn5h9vERFXRMSH+dsV1WckIuKs/Kjxw4gYVOPnaxERl0bE+/nXvC4iWuWX9YiIqRFxTkR8BNy8rA0ZEX+MiHERsUpENMm/9mcRMRnYt8a6q0TETflsH0TEhRHRZFnvsbRtHDmXR8QnETE9Il6JiC3zy/aJiNfz2/aDiDizlpffCfgqpTS1xuMHAV8B51Pj96QOeVfJP+/klNJ9KaVvUkrzUkoPppTOqs9rLUtK6fGU0j3Ah3VYfSDwYEppTEppJvBroH9EtK22zihq/LeTarLkVcyOAm7P33pHxDp1eVJKaff8P7dJKbVJKd0dEXsCvwcOBdoD7wF3waKR4AjgDmBt4AjgmvxoaqEjgP8FVgMmkZ8qzf/RfRwYDqwLbAI8kX/OL4EfANsC2wDdgF/ln9cHOBPoCXQC9q7xY1wCbJp/7iZAB+A31ZZ/D1gd2BA4vrZtERErRcSNwNZAr5TSdOA4YD9gO2AH4OAaT7sVmJ9/3+2AXsCxLMPStnH+NXbP/0yrAocBn+eX3QSckFJqC2wJPFnLW2wFvLmEx38C3Jl/r84Rsf2yslazM9AS+GddnxARgyPiq9pu9XjvpdkCeHnhnZTS28BccttvoTfI/V5JtbLkVZTy+0M3BO5JKY0H3gYGrMBLDgSGpJReSCnNAf4H2Dm/S2A/4N2U0s0ppfkppReAoSxefvellJ5LKc0n96Fj2/zj+wEfpZQuSynNTinNSCk9W+09z08pfZJS+pTch4Qf55cdSm7f8oSU0jfAb6v97EGuiM9IKX2RUppBbir58Gp5qoDzUkpzUkqzavmZm5Erv9WB/VNK31Z77ytSSlNSSl+QK+aF770O0Bc4PT+q/QS4vMZ712Zp23ge0BboDERK6Y2U0rT88+YBm0dEu5TSl/ntvySrAjOqPxARGwB7AHeklD4m9wGrPqP5NYDP8v9d6ySldHFKadXabvV476VpQ273Q3XTyW3DhWaQ2yZSrSx5FaufAI+llD7L37+Dek7F1rAuuZElAPkp0M/JjZA3BHaqMRobSG60vNBH1f79Lbk/wgDrk/sAssz3zP973WrLptRYttBaQGtgfLU8w/OPL/RpzYPPlmATcvuV/zelNLdGrtree0NyHw6mVXvv68nNcCxLrds4pfQkcBVwNfBxRNwQEe3yqx4E7AO8FxGjI2LnWl7/SxYvOch9aHojpfRS/v7twICIaJa/Pz//81TXjNyHpKp8vjWj+I5rmAm0q/FYOxb/kNOW3G4KqVaWvIpOft/zoUD3iPgov9/5DGCbiFg4PfkNuSJc6Hss3YfkCmzhe6xMbhT3AbnCG11jRNYmpfSzOsSdAny/lmWLvSe5A7oW7o+dRu4DQvVlC30GzAK2qJZnlZRSm2rr1OXykW8APwUeiYjNqj2+tPeeAswB1qz23u1SStV3XdRmaduYlNKVKaWu5KaiNwXOyj/+n5TSgeQ+SPwLuKeW13+FxaerIbdLZ+Nqvyd/AtYkNxsB8D7QscZzNgKmpJSqgH8Ds4F+dfj5Fv5c50buWI8l3ur6OsvwGtWm4iNiY6AF8Fa1dbpQbUpfWhJLXsWoH7AA2JzctPi25P6gjSX3Rx3gJXIHIrWO3FfljqnxGh8DG1e7fwfw04jYNn/w2++AZ1NK7wLDgE0j4scR0Sx/2zEiutQh6zDgexFxev5gubYRsVN+2Z3AryL33e41ye1TX3hk+D3A0RGxeUS0Bs5b+IL58rkRuDwi1gaIiA4R0bsOeRaTUroTOBd4PP7vYMF7gNMiYr2IWI3c19IWrj8NeAy4LCLa5ffpfz8iuudzLPz6WcclvF2t2zi/PXfKj7C/IVesCyKieUQMjIhVUkrzgK/J/bdfkueAVSOiQz7LzuQ+YHXj/35PtmTxWZ+hwL4R0StyBxyuS+64iLvyP+90cv9dro6Ifvnfp2YR0Tci/lDLNv1d/kPgEm+1ZCf//i2BpsBKEdGy2oxDTbcD+0fEbvkPS+eT22VUfSTfHXiktveTAEgpefNWVDdyU9OXLeHxQ8lNmzclN1p7jNz05VPk9mmPq7buieRGrF8Bh1Z77G1yX2UaBqxXbf3NgIeAT8lN4T4JbJtfdgtwYbV1ewBTq93fkty+4C/z+QbnH28JXJnPMS3/75bVnjc4v/6HwCByo/NNqj33d8BkcsX3BnDakt6/lm14dI3tcRy5qfSO+e13ef7nfAc4Of/eTfPrrgJcC0wltx/4ReDw/LLdgHeBZrVsmyVuY2AvciPxmeRmKm4nt8ujef6/95f5n/M/wK5L+bn+CJyT//d1wNAlrNON3GzE6vn7+wPj8z/Le/nXaFXjOQOB58l9APko/7vwwwb+vT46v52r326ptnwmsFu1+wPIzUR8A9y/8OfJL9sReDHr/696K/5bpFSXWT9Jgoj4FbnjAa7P6P3XIjejs12q/YDDshcRQ4GbUkoPZ51Fxc2SlySpTLlPXpKkMmXJS5JUpix5SZLKlCUvSVKZKrazPC3TmmuumTp27Jh1DEmSGs348eM/Symttew1F1dyJd+xY0eef/75rGNIktRoIuK9Za/1XU7XS5JUpix5SZLKlCUvSVKZsuQlSSpTlrwkSWXKkpckqUxZ8pIklSlLXpKkMmXJS5JUpix5SZLKlCUvSVKZsuQlSSpTlrwkSWXKkpckqUxZ8pIklamClXxEDImITyJiQi3LIyKujIhJEfFKRGxfqCySJFWiQo7kbwH6LGV5X6BT/nY8cG0Bs0iSVHEKVvIppTHAF0tZ5UDgbynnGWDViGhfqDySJFWaphm+dwdgSrX7U/OPTcsmjiRJxWUIQ/iIj5b7+VmWfCzhsbTEFSOOJzelT4vvbULHwQ8VMpckSZmbvtt9fLXvEFq+td1yv0aWJT8VWL/a/fWAD5e0YkrpBuAGgBbtO6V3L9638OkkScpAIvFLfsnvGcKhHMptm95GC1os12tl+RW6B4Cj8kfZ/wCYnlJyql6SVNEmMpHLuZzjOZ47uIPmNF/u1yrYSD4i7gR6AGtGxFTgPKAZQErpOuBhYB9gEvAt8NNCZZEkqdglEkGwKZvyAi/Qmc7EEvds112ktMTd4EWrRftOac60iVnHkCSpwXzDNxzCIRzMwQxi0HeWR8T4lNIO9X1dz3gnSVKGvuRLetGLR3mUtOTjz5dblgfeSZJU0aYxjd705k3e5B/8g/70b9DXt+QlScrATGayG7vxER/xEA+xN3s3+HtY8pIkZaANbfgZP2NXdmUndirIe1jykiQ1omd4BoAf8AN+wS8K+l4eeCdJUiMZwQj2Yi9O47QGP8huSSx5SZIawb3cy77syyZswgM8sMLfga8LS16SpAK7kRs5jMPoRjdGM5rv8b1GeV9LXpKkAkokhjOc3vTmMR5jVVZttPf2wDtJkgogkZjOdFZlVe7gDoJYofPQLw9H8pIkNbAFLOAETmBXdmUmM2lBi0YveLDkJUlqUHOYwxEcwY3cSD/6sTIrZ5bF6XpJkhrITGbSn/6MYAR/4k+cwRmZ5rHkJUlqIKdyKk/wBDdzM0dzdNZxvNSsJEkN5UM+5EVeZF/2bdDX9VKzkiRlYDKT+Tk/Zz7zWZd1G7zgV4QlL0nScnqFV9iFXbid23mXd7OO8x2WvCRJy+FpnqY73WlCE8Yylk3YJOtI32HJS5JUT4/xGHuzN2uxFk/xFF3oknWkJbLkJUmqp7a0pStdGcc4NmTDrOPUypKXJKmOXuRFAHZmZ8YwhrVZO+NES2fJS5K0DInExVzM9mzPgzwI0CiXil1RngxHkqSlSCTO5mwu5VIGMIA+9Mk6Up05kpckqRbzmc+xHMulXMopnMJt3EYzmmUdq84seUmSajGSkQxhCL/hN1zJlaxUYrXpdL0kSTUkEkHQk56MZzzbs33WkZZLaX0kkSSpwD7nc/ZgD8YwBqBkCx4cyUuStMgHfEAvevE2bzOd6VnHWWGWvCRJwEQm0pOefMEXDGc4PeiRdaQVZslLkiree7zHruxKFVWMZCRd6Zp1pAbhPnlJUsVbn/UZwADGMrZsCh4cyUuSKthjPEZnOrMBG3A5l2cdp8E5kpckVaQ7uZN92ZezOTvrKAVjyUuSKs41XMNABrILu3ADN2Qdp2AseUlSxUgkLuRCTuZk9mM/HuER2tEu61gFY8lLkirGbGYzlKEcyZEMZSitaJV1pILywDtJUtmbz3zmMY9WtGIkI2lHu5I7D/3ysOQlSWVtNrM5nMOZz3we4AFWZdWsIzWa8v8YI0mqWDOYwT7sw/3cTx/6VMTovTpH8pKksvQZn9GXvrzIi/ydvzOQgVlHanSWvCSp7CQSB3EQE5jAv/gX+7Ff1pEyYclLkspOEFzO5cxgBt3pnnWczFTWzglJUll7kRe5hEuA3HXgK7ngwZKXJJWJMYyhBz24hmv4iq+yjlMULHlJUskbxjB605t1WZdxjKuor8ktjSUvSSppt3M7/ejHlmzJWMayPutnHaloWPKSpJLXne48wROsyZpZRykqkVLKOkO9tGjfKc2ZNjHrGJKkDCUS/+W/dKELAFVUlfWJbiJifEpph/o+r3y3iCSpLFVRxemczrZsy6u8ClDWBb8i/J68JKlkzGMegxjE3/k7Z3AGW7BF1pGKmiUvSSoJs5jFYRzGgzzIhVzIuZxLEFnHKmqWvCSpJNzMzQxjGFdzNSdxUtZxSoIlL0kqCSdyItuyLT/kh1lHKRkeqSBJKlrv8z57sAeTmcxKrGTB15MlL0kqSv/lv+zCLrzIi3zMx1nHKUlO10uSis54xtOHPqzESoxiFNuybdaRSpIjeUlSURnPePZgD1ZmZcYxzoJfAZa8JKmobMZm/Igf8RRP0YlOWccpaZa8JKkoPMiDzGQmbWjDrdxKBzpkHankWfKSpMz9mT9zAAdwMRdnHaWsWPKSpMwkEudxHqdzOv3pz6/5ddaRyopH10uSMlFFFT/n51zFVQxiENdzPU2tpQblSF6SlImP+Zh7uZczOZO/8lcLvgDcopKkRjWb2bSgBe1pz8u8zFqs5YVmCsSRvCSp0UxnOr3oxTmcA8DarG3BF5AlL0lqFB/zMT3owTM8Q1e6Zh2nIjhdL0kquPd4j570ZCpTeYAH6EOfrCNVBEteklRQc5nLnuzJF3zBCEawC7tkHaliWPKSpIJqTnMu4zI2ZmO2Zuus41QUS16SVBBP8iSf8imHcRj96Jd1nIrkgXeSpAb3L/5FX/pyCZcwn/lZx6lYlrwkqUHdzM0cxEFsz/Y8zuOe5CZDlrwkqcFczuUMYhB7sRcjGMHqrJ51pIpmyUuSGsxnfMbBHMyDPEgb2mQdp+IVtOQjok9EvBkRkyJi8BKWrxIRD0bEyxHxWkT8tJB5JEkNbwELeJd3AbiQC7mLu2hBi2xDCShgyUdEE+BqoC+wOXBERGxeY7WTgddTStsAPYDLIqJ5oTJJkhrWXOYykIF0oxuf8ilB0IQmWcdSXiFH8t2ASSmlySmlucBdwIE11klA24gIoA3wBXgYpiSVgm/5ln70427u5kzOZC3WyjqSaihkyXcAplS7PzX/WHVXAV2AD4FXgZ+nlKpqvlBEHB8Rz0fE84UKK0mqu6/4il70YjjDuYEbOJuzs46kJShkyS/pskKpxv3ewEvAusC2wFUR0e47T0rphpTSDimlHRo6pCSp/s7nfJ7jOe7mbo7juKzjqBaFLPmpwPrV7q9HbsRe3U+B+1LOJOAdoHMBM0mSGsCFXMgoRnEIh2QdRUtRyJL/D9ApIjbKH0x3OPBAjXXeB/YCiIh1gM2AyQXMJElaTq/xGvuzP1/zNa1pzQ/5YdaRtAwFOw1RSml+RJwCPAo0AYaklF6LiBPzy68DLgBuiYhXyU3vn5NS+qxQmSRJy+dZnmUf9qEFLZjGNNrxnT2rKkKRUs3d5MWtRftOac60iVnHkKSK8TiP049+rMM6PM7jbMRGWUeqOBExfnmOS/OMd5KkWj3Mw+zLvmzMxoxjnAVfYix5SVKttmRLDuRARjOa9rTPOo7qyZKXJH3HMIZRRRUbsAH3cA+rsVrWkbQcLHlJ0iKJxLmcy/7sz63cmnUcrSAv8itJAnIXmjmZk7me6zmBEziKo7KOpBXkSF6SxFzmMoABXM/1nMu5XMu1XmimDDiSlyTxGq/xIA9yKZfyC36RdRw1EEtekirYXObSnOZsx3a8xVusx3pZR1IDcrpekirUNKaxIztyMzcDWPBlyJG8JFWgyUymJz35mI9Zf7FriamcWPKSVGFe5VV605s5zOEJnmAndso6kgrEkpekCvIJn9Cd7rSiFWMYwxZskXUkFZD75CWpgqzN2lzIhTzFUxZ8BXAkL0kV4F7uZX3WZyd24iROyjqOGokjeUkqczdyI4dyKBdxUdZR1MgseUkqY5dwCcdzPH3ow13clXUcNTJLXpLKUCJxNmczmMEcwRH8i3/RmtZZx1Ijs+QlqQxVUcUkJnESJ/F3/k5zmmcdSRnwwDtJKiNzmMN0prM2a3M3d9OUpgSRdSxlxJG8JJWJmcxkf/Znb/ZmLnNpRjMLvsI5kpekMvAFX7AP+/Af/sNN3OT0vABLXpJK3od8SC96MZGJDGUo/eiXdSQVCUtekkrcCZzAe7zHIzzCnuyZdRwVEUtekkrcdVzHR3xEV7pmHUVFxgPvJKkEPc3THMMxzGc+HehgwWuJLHlJKjHDGc7e7M1YxvI5n2cdR0XMkpekEnI3d3MAB7AZmzGOcazDOllHUhGz5CWpRAxhCEdwBD/gB4xiFGuzdtaRVOQseUkqEV3owqEcyqM8yiqsknUclQBLXpKKWCLxBE8AsDM7cxd30YpWGadSqbDkJalIzWc+x3LsooPspPrye/KSVIRmM5sBDOCf/JPzOI9d2TXrSCpBlrwkFZkZzKAf/XiSJ7mCK/g5P886kkqUJS9JRWYEIxjDGG7lVo7iqKzjqIRZ8pJUJBawgCY0oT/9eZM32ZiNs46kEueBd5JUBCYyka3YatEBdha8GoIjeUnK2Eu8RG96U0UVrWmddRyVEUfykpShsYylO91pQQvGMtYLzahBWfKSlJFXeIVe9KI97RnHODrTOetIKjOWvCRlZAu24GzOZixj2YANso6jMmTJS1Iju5mbeZ/3aUIT/pf/ZS3WyjqSypQlL0mNJJG4kAsZxCAu47Ks46gCeHS9JDWCKqr4Bb/gCq7gKI6y5NUoHMlLUoHNZz6DGLToFLU3czNNHWOpEVjyklRg3/ItL/My53M+l3M5K/mnV43Ej5KSVCAzmEFTmtKOdvybf9OSlllHUoXx46QkFcBnfMae7MkABpBIFrwyYclLUgObwhR2YzcmMIFjOIYgso6kCuV0vSQ1oDd5k570ZDrTeZRH2Z3ds46kCmbJS1IDqaKK/vRnDnMYxSi2Y7usI6nCWfKS1EBWYiVu4zba0IZN2TTrOJL75CVpRQ1jGBdwAQDbs70Fr6JhyUvSCrid2+lHPx7gAWYzO+s40mIseUlaTn/hLxzJkXSnO0/ypF+TU9Gx5CVpOVzIhZzGafSjHw/xEG1pm3Uk6TsseUlaDh3pyCAG8Q/+4QheRStSSllnqJcW7TulOdMmZh1DUgWaxzxe4AV2Yqeso6jCRMT4lNIO9X2eI3lJqoNZzOIgDmJ3duc93ss6jlQnfk9ekpZhOtM5gAMYy1iu5mo2ZMOsI0l1YslL0lJ8wif0oQ+v8iq3cztHcETWkaQ6s+QlaSmGMIT/8l/u5372YZ+s40j14oF3krQEVVSxEitRRRVv8Rad6Zx1JFUwD7yTpAbyPM+zHdsxmcmsxEoWvEqWJS9J1YxkJHuwB9OZThVVWceRVoglL0l593M/fenLBmzAUzzFJmySdSRphVjykgQMZzgHcRDbsA1jGEMHOmQdSVphlrwkAbuwC6dyKk/wBGuwRtZxpAZhyUuqWInE9VzPTGbSlrZczuW0oU3WsaQGY8lLqkhVVHEKp3AiJ3ITN2UdRyoIT4YjqeLMYx5HczR3cAdncRancVrWkaSCsOQlVZRv+ZZDOZSHeIjf83sGMzjrSFLBWPKSKsonfMKLvMh1XMcJnJB1HKmgLHlJFeErvmIVVqEjHXmTNz3AThXBA+8klb13eZcd2ZFf8SsAC14Vo6AlHxF9IuLNiJgUEUvc8RURPSLipYh4LSJGFzKPpMrzOq+zK7vyGZ+xH/tlHUdqVAWbro+IJsDVQE9gKvCfiHggpfR6tXVWBa4B+qSU3o+ItQuVR1LleY7n6EtfmtOc0Yxma7bOOpLUqAo5ku8GTEopTU4pzQXuAg6ssc4A4L6U0vsAKaVPCphHUgX5mq/pS19WYRXGMc6CV0UqZMl3AKZUuz81/1h1mwKrRcSoiBgfEUct6YUi4viIeD4ini9QVkllph3tuI3bGMc4vs/3s44jZaKQR9fHEh5LS3j/rsBeQCvg3xHxTErprcWelNINwA0ALdp3qvkakrTIzdxMS1pyBEewD/tkHUfKVCFH8lOB9avdXw/4cAnrDE8pfZNS+gwYA2xTwEySythlXMYgBnE7t5O+M6aQKk8hS/4/QKeI2CgimgOHAw/UWOd+YLeIaBoRrYGdgDcKmElSGUokfskvOZMzOYRDGMpQYomTiVJlKdh0fUppfkScAjwKNAGGpJRei4gT88uvSym9ERHDgVeAKuCvKaUJhcokqfwkEj/jZ1zP9RzHcVzLtTShSdaxpKIQKZXWlFaL9p3SnGkTs44hqYicy7lUUcXv+b0jeJWliBifUtqhvs/ztLaSStK3fMt7vEcXunARF1nu0hJ4WltJJedLvqQnPdmTPZnJTAteqoUjeUkl5SM+oje9eYM3uIM7PA+9tBSWvKSS8Q7v0JOefMRHPMRD9KRn1pGkombJSyoZF3ABX/AFj/M4P+AHWceRip5H10sqeolEEHzLt0xhCpuxWdaRpEa1vEfXe+CdpKI2ghH0oAdf8zWtaW3BS/VgyUsqWkMZyr7sy1d8xSxmZR1HKjmWvKSidBM3cSiHsiM7MopRrMM6WUeSSo4lL6no3MRNHMux9KIXj/EYq7Fa1pGkkmTJSyo6e7M3p3Iq93M/K7Ny1nGkkmXJSyoKC1jAzdxMFVVsyIZcyZU0p3nWsaSSZslLytxc5nIERzCIQTzMw1nHkcqGJ8ORlKlv+Ib+9OcxHuNSLmU/9ss6klQ2LHlJmfmCL9iP/XiWZ7mJmxjEoKwjSWXFkpeUmTd5k9d5nX/wD/rTP+s4Utmx5CU1uhnMoC1t2ZmdeZd3WZVVs44klaV6H3gXEU0iYmAhwkgqf6/yKpuxGbdxG4AFLxVQrSUfEe0i4n8i4qqI6BU5pwKTgUMbL6KkcvE0T7M7u7MSK9GVrlnHkcre0qbrbwO+BP4NHAucBTQHDkwpvVT4aJLKyaM8Sn/6sy7rMoIRdKRj1pGksre0kt84pbQVQET8FfgM2CClNKNRkkkqG5OZzP7szxZswXCGex56qZEsbZ/8vIX/SCktAN6x4CUtj43ZmBu5kZGMtOClRrS0kt8mIr6OiBkRMQPYutr9rxsroKTSdRmX8SzPAvATfuJBdlIjq7XkU0pNUkrtUkpt87em1e63a8yQkkpLInE2Z3MmZ/I3/pZ1HKli1bpPPiJaAicCmwCvAENSSvMbK5ik0rSABZzACdzETZzMyVzJlVlHkirW0qbrbwV2AF4F9gEua5REkkrWXOZyGIdxEzfxa37NX/gLK3kdLCkzSzu6fvNqR9ffBDzXOJEklaqVWIkqqricyzmd07OOI1W8pZV89aPr50dEI8SRVIo+53PmMpf2tGcoQwn8eyEVg6WV/LbVjqIPoFX+fgDJg+8kAXzAB/SiFyuzMs/wjNPzUhFZWsm/nFLartGSSCo5k5hET3ryGZ/xAA9Y8FKRWVrJp0ZLIankvMzL9KY385nPSEayAztkHUlSDUsr+bUj4v/VtjCl9KcC5JFUAhKJkzmZZjRjJCPpQpesI0lagqWVfBOgDXgEjaTFBcHd3M185rMhG2YdR1Itllby01JK5zdaEklF7y7u4gEe4DZuowMdso4jaRmWdpSMI3hJi1zHdQxgAB/wAbOYlXUcSXWwtJLfq9FSSCpaicTv+B0/42fsy74MZzhtaJN1LEl1sLQL1HzRmEEkFaff8lt+yS85kiO5j/toRausI0mqo6Xtk5ck+tCHWcziYi72e/BSifH/sZK+YzazGcpQAHZmZ/7AHyx4qQT5/1pJi5nBDPZlXw7hECYwIes4klaA0/WSFvmMz9iHfXiBF7iVW9mSLbOOJGkFWPKSAJjKVHrRi8lM5p/8k/3ZP+tIklaQJS8JgNGM5gM+4FEepTvds44jqQFESqV1HZoW7TulOdMmZh1DKhuzmLXoa3Gf8ilrsVbGiSTVFBHjU0r1vgqUB95JFWwsY9mYjXmKpwAseKnMWPJShXqIh+hFL1ZhFdZn/azjSCoAS16qQLdzO/3ox+ZszljGsgEbZB1JUgFY8lKFGcUojuRIdmVXRjLSKXqpjFnyUoXZjd34E3/iER6hHe2yjiOpgCx5qQJUUcX5nM/7vE8TmnAGZ9CSllnHklRglrxU5uYzn5/yU87jPO7kzqzjSGpEngxHKmOzmc1hHMYDPMD5nM/ZnJ11JEmNyJKXytTXfM2BHMgoRnEVV3EyJ2cdSVIjs+SlMlVFFd/wDbdzOwMYkHUcSRmw5KUy8wEfsDqrsyqr8m/+TROaZB1JUkY88E4qI2/yJjuzM8dyLIAFL1U4S14qEy/wAruxG3OYw5mcmXUcSUXAkpfKwGhG04MetKY14xjHdmyXdSRJRcCSl0rcHObwY37MeqzHOMbRiU5ZR5JUJDzwTipxLWjBMIaxLuuyJmtmHUdSEXEkL5Wov/AXzuM8ALZmawte0ndY8lKJSSR+y285jdN4lVdZwIKsI0kqUk7XSyWkiipO53T+wl84mqO5kRv9mpykWjmSl0rIsRzLX/gL/4//x03cRFM/p0taCv9CSCVkT/ZkEzbhf/gfgsg6jqQiZ8lLRW4603mBF9iDPTiSI7OOI6mEWPJSEfuET+hDHyYykXd4xyPoJdWLJS8Vqfd4j170YgpTGMpQC15SvVnyUhF6gzfoRS9mMIMRjGAXdsk6kqQSZMlLRegO7mAe8xjNaLZhm6zjSCpRkVLKOkO9tGjfKc2ZNjHrGFJBzGUuzWlOFVV8zMe0p33WkSQVgYgYn1Laob7P83vyUpG4n/vpTGfe4R1WYiULXtIKs+SlInArt3IQB7E2a9OOdlnHkVQmClryEdEnIt6MiEkRMXgp6+0YEQsi4uBC5pGK0RVcwdEczR7sweM8zhqskXUkSWWiYCUfEU2Aq4G+wObAERGxeS3rXQI8WqgsUrG6lVs5gzM4iIMYxjDa0CbrSJLKSCGPru8GTEopTQaIiLuAA4HXa6x3KjAU2LGAWaSi1J/+TGMaZ3GWF5qR1OAKOV3fAZhS7f7U/GOLREQH4EfAdQXMIRWVeczjAi7gG76hLW0ZzGALXlJBFLLkl3T1jJrf17sCOCeltNQLYkfE8RHxfEQ831DhpCx8y7f0ox+/4TcMY1jWcSSVuUJO108F1q92fz3gwxrr7ADcFREAawL7RMT8lNK/qq+UUroBuAFy35MvVGCpkL7iK/Znf57iKa7neg7jsKwjSSpzhSz5/wCdImIj4APgcGBA9RVSShst/HdE3AIMq1nwUjn4mI/pTW9e53Xu5m4O4ZCsI0mqAAUr+ZTS/Ig4hdxR802AISml1yLixPxy98OrYszM/28Yw+hFr6zjSKoQntZWKqCpTKUDHQiCecyjGc2yjiSpBHlaW6nIPMdzbMM2XMiFABa8pEZnyUsF8ARPsCd7siqrMpCBWceRVKEseamB3cd97MM+bMRGjGMcG7Nx1pEkVShLXmpAH/ERAxlIV7oyhjFeSU5Spgr5FTqp4nyP7/EwD9ONbqzMylnHkVThHMlLKyiR+BW/4k7uBGAP9rDgJRUFS15aAQtYwM/4GRdxEeMYl3UcSVqMJS8tp7nMZSADuZ7rGcxgruKqrCNJ0mLcJy8th3nM40AOZDjD+QN/4CzOyjqSJH2HJS8th2Y0oytdOYiDOJZjs44jSUtkyUv1MI1pfMqnbM3Wi85kJ0nFypKX6mgyk+lJTxKJN3nT09RKKnqWvFQHE5hAL3oxm9k8wiMWvKSS4NH10jI8wzPszu4EwVjGshM7ZR1JkurEkby0DJdxGauzOiMYwUZslHUcSaozS16qxXzm05Sm3MqtzGAG67BO1pEkqV6crpeW4EZu5If8kK/5mta0tuAllSRLXqrhD/yB4zmeNVmTpk52SSphlryUl0gMZjDncA6HcRj/4l+0pnXWsSRpuVnyUt75nM8lXMKJnMjt3E5zmmcdSZJWiHORUt7RHE0rWnEWZxFE1nEkaYU5kldF+4ZvuIzLqKKKDdmQsznbgpdUNix5Vawv+IK92ZuzOZtneTbrOJLU4JyuV0X6kA/pTW/e4i3u5V52ZuesI0lSg7PkVXHe5m160pNP+ZSHeZi92CvrSJJUEJa8Ks5UpjKXuTzBE3SjW9ZxJKlgLHlVjI/5mHVYh+50ZxKTaEnLrCNJUkF54J0qwqM8yvf5PvdwD4AFL6kiWPIqe3dzN/uzP53oRHe6Zx1HkhqNJa+ydj3XcwRH8AN+wChGeaEZSRXFklfZGs94TuRE+tKX4QxnFVbJOpIkNSoPvFPZ6kpX7uM+9mM/mtEs6ziS1OgcyauszGc+p3LqojPY/YgfWfCSKpYjeZWNOcxhAAO4j/tYj/XYiZ2yjiRJmbLkVRZmMpN+9OMJnuByLud0Ts86kiRlzpJXyZvOdHrTm+d5nlu5laM4KutIklQU3CevkrcyK7MRGzGUoRa8JFXjSF4laxKTWJmVaU977uTOrONIUtFxJK+S9BIvsQu7cCRHZh1FkoqWJa+SM45x9KAHzWnO1VyddRxJKlqWvErKIzxCL3qxDuvwFE/Rmc5ZR5KkomXJq2QsYAHnci5d6MJYxrIBG2QdSZKKmgfeqSRUUUUTmvAwD9Oa1p6HXpLqwJG8iloicREXcTiHs4AFtKe9BS9JdWTJq2hVUcUv+AW/4le0pCVVVGUdSZJKitP1Kkrzmc9xHMct3MKpnMoVXMFKfiaVpHrxr6aK0sKC/y2/5c/82YKXpOXgSF5F6TiOYwd24GROzjqKJJUsh0cqGp/xGbdwCwA/5IcWvCStIEteRWEKU9iN3TiJk5jClKzjSFJZcLpemXuLt+hJT77iK4YznPVZP+tIklQWLHll6kVepDe9ARjJSLZn+4wTSVL5sOSVqZd4iVa0YgQj2JRNs44jSWUlUkpZZ6iXFu07pTnTJmYdQyvoC75gdVYHYCYzaUObjBNJUvGKiPEppR3q+zwPvFOju53b6UhHnuM5AAtekgrEklejuoqrOJIj2YEd6EKXrONIUlmz5NUoEokLuIBTOZUDOZCHeZi2tM06liSVNUtejWIoQ/kNv+En/IR7uZeWtMw6kiSVPY+uV6P4ET/ib/yNgQz0PPSS1Ej8a6uCmcUsTuREpjCFJjThx/zYgpekRuRfXBXE13xNX/pyAzcwhjFZx5GkiuR0vRrcp3xKH/rwCq9wO7dzBEdkHUmSKpIlrwY1lanszd68x3vcz/3swz5ZR5KkiuV0vRpUG9rwPb7HCEZY8JKUMUfyahCv8RobszGrsiojGUkQWUeSpIrnSF4rbDSj2ZmdOYMzACx4SSoSlrxWyAM8QG96sz7r82t+nXUcSVI1lryW223cRn/6sw3bMIYxdKBD1pEkSdVY8lou05nOL/gFPejB4zzOGqyRdSRJUg0eeKd6SSQAVmEVxjCGjdiIFrTIOJUkaUkcyavOqqjiNE7jPM4DoDOdLXhJKmKWvOpkHvM4iqO4iqv4lm8XjeglScXL6Xot0yxmcQiH8BAP8Tt+x2AG+zU5SSoBlryWKpHYj/0YyUiu5VpO5MSsI0mS6qig0/UR0Sci3oyISRExeAnLB0bEK/nb0xGxTSHzqP6C4GiO5k7utOAlqcQUbCQfEU2Aq4GewFTgPxHxQErp9WqrvQN0Tyl9GRF9gRuAnQqVSXX3Hu/xOq/Tl778mB9nHUeStBwKOV3fDZiUUpoMEBF3AQcCi0o+pfR0tfWfAdYrYB7V0eu8Ti96MZ/5vM3brMzKWUeSJC2HQk7XdwCmVLs/Nf9YbY4BHilgHtXBf/gPu7M785nPozxqwUtSCStkyS/p8Oslfu8qIvYgV/Ln1LL8+Ih4PiKeb8B8quFJnmRP9qQtbRnHOLbBQyQkqZQVsuSnAutXu78e8GHNlSJia+CvwIEppc+X9EIppRtSSjuklHYoSFIB8AiPsCEb8hRPsQmbZB1HkrSCIqXCnNQkIpoCbwF7AR8A/wEGpJReq7bOBsCTwFE19s/XqkX7TmnOtIkFSFy5vuZr2tGOKqqYyUza0S7rSJKkaiJi/PIMdAs2kk8pzQdOAR4F3gDuSSm9FhEnRsTC72L9BlgDuCYiXnI6vvH9iT+xOZszhSmsxEoWvCSVkYKN5AvFkXzDSCR+za+5iIs4iIO4nds9D70kFanlHcl7xrsKVEUVp3AK13Itx3AM13M9TWiSdSxJUgPzAjUV6I/8kWu5lrM5mxu50YKXpDLlSL4CncRJrMM6HM3RWUeRJBWQI/kK8RVfcRqn8Q3f0Ja2FrwkVQBLvgJ8zMf0oAfXcR3P8VzWcSRJjcTp+jL3Lu/Sk558yIcMYxh7sEfWkSRJjcSSL2Ov8zo96cksZvE4j7MzO2cdSZLUiJyuL2PNac46rMMYxljwklSBHMmXodd4jc3ZnE3YhPGMJ5Z4rSBJUrlzJF9m7uM+tmd7LudyAAtekiqYJV9GhjCEQziErnTlp/w06ziSpIxZ8mXiUi7lGI6hJz0ZwQhWY7WsI0mSMmbJl4GJTORczuVQDuUBHmBlVs46kiSpCHjgXQlLJIKgE514iqfYnu09D70kaRFH8iVqLnMZyEDu4i4AdmRHC16StBhLvgR9wzccwAHcyZ18yIdZx5EkFSmn60vMl3zJvuzLszzLX/krx3BM1pEkSUXKki8h3/AN3enOm7zJP/gH/emfdSRJUhGz5EvIyqxMf/qzK7uyN3tnHUeSVOQipZR1hnpp0b5TmjNtYtYxGtUEJjCf+WzLtllHkSRlICLGp5R2qO/zHMkXuWd4hn3Yh4509Dz0kqR68ej6IjaCEezFXqzBGgxlqAUvSaoXS75I3cu97Mu+dKIT4xjHRmyUdSRJUomx5ItQInELt9CNboxiFOuwTtaRJEklyH3yRWYWs2hFK+7hHgBa0zrjRJKkUuVIvkgkEoMZzG7sxkxm0jr/P0mSlpclXwQWsIDjOZ5LuIRudKMVrbKOJEkqA5Z8xuYwh8M5nL/yV37Fr7iaq73QjCSpQbhPPmOncRr3ci+Xczmnc3rWcSRJZcSSz9i5nEsPenAER2QdRZJUZpyuz8CHfMiv+TVVVLEhG1rwkqSCsOQb2du8za7syhVcwVu8lXUcSVIZs+Qb0Su8wq7sytd8zZM8SWc6Zx1JklTGLPlG8jRP053uNKEJYxnLjuyYdSRJUpmz5BvJHOawPuvzFE/RhS5Zx5EkVQBLvsAmMQmAPdiDF3mRDdkw40SSpEphyRfQ9VzPZmzGMIYBeJIbSVKjsuQLIJH4Pb/nRE6kL33Zkz2zjiRJqkCWfANLJM7iLM7lXAYwgH/yTy80I0nKhCXfwJ7gCS7jMk7hFG7jNprRLOtIkqQK5WltG9je7M1IRtKd7gSRdRxJUgVzJN8AZjCDfvTjOZ4DoAc9LHhJUuYs+RX0OZ+zF3sxjGG8zdtZx5EkaRGn61fAB3xAL3rxNm9zH/dxAAdkHUmSpEUs+eX0AR+wC7vwBV8wnOH0oEfWkSRJWozT9ctpHdZhL/ZiJCMteElSUXIkX0//5t9sxEZ8j+9xEzdlHUeSpFo5kq+Hh3mYvdiLUzk16yiSJC2TJV9Hd3InB3IgXejCNVyTdRxJkpbJkq+Da7iGgQxkF3ZhJCNZi7WyjiRJ0jJZ8sswm9lczdXsx348wiO0o13WkSRJqhMPvKtFFVUsYAEtackoRrEqq3oeeklSSXEkvwTzmc8gBjGAAVRRxVqsZcFLkkqOJV/DbGZzMAdzK7eyNVt7DnpJUslyur6ar/mafvRjJCP5C3/hFE7JOpIkScvNkq/mYA5mDGP4O39nIAOzjiNJRWXevHlMnTqV2bNnZx2lbLVs2ZL11luPZs0aZhdxpJQa5IUaS4v2ndKcaRML8tpP8zSf8zn7s39BXl+SStk777xD27ZtWWONNYhwV2ZDSynx+eefM2PGDDbaaKPFlkXE+JTSDvV9zYrfJ/8Wby06uc0P+aEFL0m1mD17tgVfQBHBGmus0aAzJRU9Xf8CL9CHPgTB4RzO6qyedSRJKmoWfGE19Pat2JH8aEbTgx60ohVjGWvBS1IJaNKkCdtuuy1bbrkl+++/P1999dWiZa+99hp77rknm266KZ06deKCCy6g+i7pRx55hB122IEuXbrQuXNnzjzzzCW+R13XKwUVWfIP8iB96EMHOvAUT7Epm2YdSZJUB61ateKll15iwoQJrL766lx99dUAzJo1iwMOOIDBgwfz1ltv8fLLL/P0009zzTW53bETJkzglFNO4e9//ztvvPEGEyZMYOONN/7O69d1vdosWLCgYX7QBlKRJf8RH7ElWzKWsazHelnHkSQth5133pkPPvgAgDvuuINddtmFXr16AdC6dWuuuuoqLr74YgD+8Ic/8Mtf/pLOnTsD0LRpU0466aTvvObS1jv66KO59957F63bpk0bAEaNGsUee+zBgAED2GqrrTjnnHMWfbgA+O1vf8tll10GwB//+Ed23HFHtt56a84777wG3R5LUlEl/z7vA3Acx/E0T7Mma2acSJK0PBYsWMATTzzBAQccAOSm6rt27brYOt///veZOXMmX3/9NRMmTPjO8iWp63o1Pffcc1x00UW8/vrrHH744dx9992Llt1zzz0ccsghPPbYY0ycOJHnnnuOl156ifHjxzNmzJh6v1d9VMSBd4nE+ZzPJVzCszzLVmzlaWolaQV1HPxQg7/muxfvu9Tls2bNYtttt+Xdd9+la9eu9OzZE8h9/ay2g9Ya42DBbt26Lfra23bbbccnn3zChx9+yKeffspqq63GBhtswJVXXsljjz3GdtttB8DMmTOZOHEiu+++e8FylX3JV1HFGZzBlVzJ0RxNF7pkHUmSysKyCrkQFu6Tnz59Ovvttx9XX301p512GltsscV3RsWTJ0+mTZs2tG3bli222ILx48ezzTbbLPX1l7Ze06ZNqaqqAnIfKubOnbto2corr7zYugcffDD33nsvH330EYcffvii5/zP//wPJ5xwwnL97MujrKfr5zGPozmaK7mSMziDm7iJpuX/uUaSyt4qq6zClVdeyaWXXsq8efMYOHAg48aN4/HHHwdyI/7TTjuNs88+G4CzzjqL3/3ud7z11lsAVFVV8ac//ek7r7u09Tp27Mj48eMBuP/++5k3b16t+Q4//HDuuusu7r33Xg4++GAAevfuzZAhQ5g5cyYAH3zwAZ988klDbI5alXXJ38RN3MZtXMiFXMZlrFTeP64kVZTtttuObbbZhrvuuotWrVpx//33c+GFF7LZZpux1VZbseOOO3LKKblrkGy99dZcccUVHHHEEXTp0oUtt9ySadOmfec1l7becccdx+jRo+nWrRvPPvvsd0bv1W2xxRbMmDGDDh060L59ewB69erFgAED2Hnnndlqq604+OCDmTFjRgG2zP8p69PaLmABIxhBH/oUOJUklb833niDLl3c5VloS9rOntY27xM+4Uf8iClMoQlNLHhJUsUqqx3U7/M+PenJFKYwkYmsz/pZR5IkKTNlU/L/5b/0pCczmMFjPMau7Jp1JEmSMlUWJT+BCezBHjShCaMZzTYs/SsSkqTls7Tvo2vFNfRxcmWxT3491mMXdmEsYy14SSqQli1b8vnnnzd4ESln4fXkW7Zs2WCvWdJH149mNN3oRitaZZxKksrfvHnzmDp1aoNe71yLa9myJeuttx7Nmi1+VtblPbq+oNP1EdEH+DPQBPhrSuniGssjv3wf4Fvg6JTSC3V57b/xNwYxiLM4i9/z+wZOLkmqqVmzZotO3arSULDp+ohoAlwN9AU2B46IiM1rrNYX6JS/HQ9cW5fX/jN/5if8hB704Jf8sgFTS5JUPgq5T74bMCmlNDmlNBe4CziwxjoHAn9LOc8Aq0ZE+6W96IK2X3A6p9Of/jzEQ7ShTWHSS5JU4gpZ8h2AKdXuT80/Vt91FrOgzVcMYhB3czctaNEgQSVJKkeF3Ce/pO9Y1DzKry7rEBHHk5vOB5gzJIZMGMKQFYynpVgT+CzrEBXA7Vx4buPCcxs3js2W50mFLPmpsNgp59YDPlyOdUgp3QDcABARzy/PEYaqO7dx43A7F57buPDcxo0jIp5fnucVcrr+P0CniNgoIpoDhwMP1FjnAeCoyPkBMD2l9N3LAkmSpHor2Eg+pTQ/Ik4BHiX3FbohKaXXIuLE/PLrgIfJfX1uErmv0P20UHkkSao0Bf2efErpYXJFXv2x66r9OwEn1/Nlb2iAaFo6t3HjcDsXntu48NzGjWO5tnPJnfFOkiTVTVmcu16SJH1X0ZZ8RPSJiDcjYlJEDF7C8oiIK/PLX4mI7bPIWcrqsI0H5rftKxHxdER49Z96WtY2rrbejhGxICIObsx85aIu2zkiekTESxHxWkSMbuyMpa4Ofy9WiYgHI+Ll/Db2GKt6ioghEfFJREyoZXn9ey+lVHQ3cgfqvQ1sDDQHXgY2r7HOPsAj5L5r/wPg2axzl9Ktjtv4h8Bq+X/3dRs3/Dautt6T5I5fOTjr3KV2q+Pv8qrA68AG+ftrZ527lG513MbnApfk/70W8AXQPOvspXQDdge2BybUsrzevVesI/mCnBJXi1nmNk4pPZ1S+jJ/9xly5zFQ3dXl9xjgVGAo8EljhisjddnOA4D7UkrvA6SU3Nb1U5dtnIC2+QuPtSFX8vMbN2ZpSymNIbfdalPv3ivWki/IKXG1mPpuv2PIfYJU3S1zG0dEB+BHwHVoedXld3lTYLWIGBUR4yPiqEZLVx7qso2vArqQO6HZq8DPU0pVjROvYtS79wr6FboV0GCnxFWt6rz9ImIPciW/a0ETlZ+6bOMrgHNSSgtyAyAth7ps56ZAV2AvoBXw74h4JqX0VqHDlYm6bOPewEvAnsD3gRERMTal9HWBs1WSevdesZZ8g50SV7Wq0/aLiK2BvwJ9U0qfN1K2clGXbbwDcFe+4NcE9omI+SmlfzVKwvJQ178Xn6WUvgG+iYgxwDaAJV83ddnGPwUuTrmdx5Mi4h2gM/Bc40SsCPXuvWKdrveUuIW3zG0cERsA9wE/dsSzXJa5jVNKG6WUOqaUOgL3AidZ8PVWl78X9wO7RUTTiGgN7AS80cg5S1ldtvH75GZKiIh1yF1QZXKjpix/9e69ohzJJ0+JW3B13Ma/AdYArsmPNOcnL0RRZ3XcxlpBddnOKaU3ImI48ApQBfw1pbTErynpu+r4u3wBcEtEvEpuWvmclJJXp6uHiLgT6AGsGRFTgfOAZrD8vecZ7yRJKlPFOl0vSZJWkCUvSVKZsuQlSSpTlrwkSWXKkpckqUxZ8pIAyF8F76Vqt475K7dNj4gXI+KNiDgvv271x/8bEZdmnV/SdxXl9+QlZWJWSmnb6g9EREdgbEppv4hYGXgpIoblFy98vBXwYkT8M6X0VONGlrQ0juQl1Un+lLDjyZ2XvPrjs8ids9wLRElFxpKXtFCralP1/6y5MCLWIHcN69dqPL4a0AkY0zgxJdWV0/WSFvrOdH3ebhHxIrnTwV6cP51pj/zjr5A7R/nFKaWPGi2ppDqx5CUty9iU0n61PR4RmwLj8vvkX2rkbJKWwul6SSskf4XC3wPnZJ1F0uIseUkN4Tpg94jYKOsgkv6PV6GTJKlMOZKXJKlMWfKSJJUpS16SpDJlyUuSVKYseUmSypQlL0lSmbLkJUkqU5a8JEll6v8D7AmCjMnzSssAAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "fpr, tpr, thresholds, auc_score = plot_roc_curve(y, clf.decision_function(X), f\"Autoencoder {mode}\", savefile=f\"plots/approach4/roc_curves/{session.name}_{mode}\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## AUC Scores\n", "\n", "### Beaver_01\n", "\n", "| Mode | AUC |\n", "| --- | ---: |\n", "| Loss | 0.5549 |\n", "| KDE | 0.9209 |\n", "| KDE + Loss | 0.9209 |\n", "\n", "### Marten_01\n", "\n", "| Mode | AUC |\n", "| --- | ---: |\n", "| Loss | 0.8499 |\n", "| KDE | 1.0 |\n", "| KDE + Loss | 1.0 |" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "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 }