{ "cells": [ { "cell_type": "code", "execution_count": 1, "id": "pretty-performer", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "2022-05-31 18:41:03.497214: W tensorflow/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library 'libcudart.so.11.0'; dlerror: libcudart.so.11.0: cannot open shared object file: No such file or directory\n", "2022-05-31 18:41:03.497237: I tensorflow/stream_executor/cuda/cudart_stub.cc:29] Ignore above cudart dlerror if you do not have a GPU set up on your machine.\n" ] } ], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt\n", "import matplotlib.colors\n", "from PIL import Image, ImageDraw, ImageFont\n", "from library.analysis import testSets, generators" ] }, { "cell_type": "markdown", "id": "engaging-warehouse", "metadata": {}, "source": [ "# Constants" ] }, { "cell_type": "code", "execution_count": 2, "id": "crazy-taxation", "metadata": {}, "outputs": [], "source": [ "kScore = \"cohens kappa score\"\n", "f1Score = \"f1 score\"" ] }, { "cell_type": "markdown", "id": "extensive-future", "metadata": {}, "source": [ "# Settings" ] }, { "cell_type": "code", "execution_count": 3, "id": "warming-department", "metadata": {}, "outputs": [], "source": [ "ignoreSet = [\"ozone_level\", \"yeast_me2\"]\n", "\n", "gans = [g.replace(\"SimpleGAN\", \"GAN\") for g in generators.keys()]\n", "algs = [\"LR\", \"GB\", \"KNN\", \"DoG\"]" ] }, { "cell_type": "code", "execution_count": 4, "id": "edf5b592", "metadata": {}, "outputs": [], "source": [ "testSets = [t for t in testSets if t[0:7] == \"folding\"]" ] }, { "cell_type": "markdown", "id": "seasonal-greek", "metadata": {}, "source": [ "# ProWRAS Data" ] }, { "cell_type": "code", "execution_count": 5, "id": "needed-birmingham", "metadata": {}, "outputs": [], "source": [ "dataset = [\n", " \"abalone9-18\",\n", " \"abalone_17_vs_7_8_9_10\",\n", " \"car-vgood\",\"car_good\",\n", " \"flare-F\",\n", " \"hypothyroid\",\n", " \"kddcup-guess_passwd_vs_satan\",\n", " \"kr-vs-k-three_vs_eleven\",\n", " \"kr-vs-k-zero-one_vs_draw\",\n", " \"shuttle-2_vs_5\",\n", " \"winequality-red-4\",\n", " \"yeast4\",\n", " \"yeast5\",\n", " \"yeast6\",\n", " \"ozone_level\",\n", " \"yeast_me2\",\n", " \"Average\"\n", " ]" ] }, { "cell_type": "code", "execution_count": 6, "id": "brilliant-phoenix", "metadata": {}, "outputs": [], "source": [ "knn_ProWRAS_f1 = [0.384,0.347,0.818,0.641,0.301,0.553,1.0,0.94,0.9,1.0,0.141,0.308,0.714,0.545,0.556,0.339,0.538]\n", "knn_ProWRAS_k = [0.35,0.328,0.81,0.622,0.263,0.528,1.0,0.938,0.896,1.0,0.093,0.268,0.704,0.531,0.526,0.305,0.515]\n", "\n", "lr_ProWRAS_f1 = [0.488,0.315,0.407,0.103,0.341,0.446,0.99,0.928,0.853,1.0,0.158,0.308,0.591,0.326,0.347,0.295,0.472]\n", "lr_ProWRAS_k = [0.446,0.287,0.371,0.033,0.3,0.407,0.99,0.926,0.847,1.0,0.119,0.268,0.574,0.3,0.319,0.254,0.441]\n", "\n", "gb_ProWRAS_f1 = [0.385,0.335,0.959,0.863,0.320,0.803,0.998,0.995,0.969,1.0,0.156,0.335,0.735,0.514,0.329,0.225,0.600]\n", "gb_ProWRAS_k = [0.341,0.310,0.957,0.857,0.291,0.794,0.998,0.995,0.967,1.0,0.115,0.303,0.726,0.501,0.303,0.328,0.589]" ] }, { "cell_type": "code", "execution_count": 7, "id": "ordered-roman", "metadata": {}, "outputs": [], "source": [ "statistic = { \"ProWRAS\": {} }\n", "for (n, f1, k) in zip(dataset, lr_ProWRAS_f1, lr_ProWRAS_k):\n", " if n in ignoreSet:\n", " continue\n", " \n", " if n not in statistic[\"ProWRAS\"]:\n", " statistic[\"ProWRAS\"][n] = {}\n", " \n", " statistic[\"ProWRAS\"][n][\"LR\"] = { kScore: k, f1Score: f1 }\n", "\n", "for (n, f1, k) in zip(dataset, gb_ProWRAS_f1, gb_ProWRAS_k):\n", " if n in ignoreSet:\n", " continue\n", " \n", " if n not in statistic[\"ProWRAS\"]:\n", " statistic[\"ProWRAS\"][n] = {}\n", " \n", " statistic[\"ProWRAS\"][n][\"GB\"] = { kScore: k, f1Score: f1 }\n", "\n", " \n", "for (n, f1, k) in zip(dataset, knn_ProWRAS_f1, knn_ProWRAS_k):\n", " if n in ignoreSet:\n", " continue\n", " \n", " if n not in statistic[\"ProWRAS\"]:\n", " statistic[\"ProWRAS\"][n] = {}\n", " \n", " statistic[\"ProWRAS\"][n][\"KNN\"] = { kScore: k, f1Score: f1 }\n", " \n", "dataset = list(filter(lambda n: n not in ignoreSet, dataset))" ] }, { "cell_type": "markdown", "id": "selective-connecticut", "metadata": {}, "source": [ "# Load data from CSV files" ] }, { "cell_type": "code", "execution_count": 8, "id": "a23177bd", "metadata": {}, "outputs": [], "source": [ "def cleanupName(name):\n", " return name.replace(\"folding_\", \"\").replace(\"imblearn_\", \"\").replace(\"kaggle_\", \"\")" ] }, { "cell_type": "code", "execution_count": 9, "id": "intended-watts", "metadata": {}, "outputs": [], "source": [ "def loadDiagnoseData(ganType, datasetName):\n", " if ganType == \"GAN\":\n", " ganType = \"SimpleGAN\"\n", " \n", " fileName = f\"data_result/{ganType}/{datasetName}.csv\"\n", " r = {}\n", " try:\n", " with open(fileName) as f:\n", " newBlock = True\n", " n = \"\"\n", " for line in f:\n", " line = line.strip()\n", " if newBlock:\n", " n = line\n", " if n == \"GAN\":\n", " n = \"DoG\"\n", " newBlock = False\n", " elif line == \"---\":\n", " newBlock = True\n", " else:\n", " parts = line.split(\";\")\n", " if parts[0] == \"avg\":\n", " r[n] = { f1Score: float(parts[5]), kScore: float(parts[6]) }\n", " except FileNotFoundError as e:\n", " print(f\"Missing file: {fileName}\")\n", " return r" ] }, { "cell_type": "code", "execution_count": 10, "id": "classical-rescue", "metadata": {}, "outputs": [], "source": [ "for gan in gans:\n", " if gan not in statistic:\n", " statistic[gan] = {}\n", " \n", " for ds in testSets:\n", " if ds != \"Average\":\n", " statistic[gan][cleanupName(ds)] = loadDiagnoseData(gan, ds)\n", " \n", " d = cleanupName(ds)\n", " if d not in dataset:\n", " dataset.append(d)" ] }, { "cell_type": "code", "execution_count": 11, "id": "unable-entrance", "metadata": {}, "outputs": [], "source": [ "for gan in statistic.keys():\n", " f1 = { n: 0.0 for n in algs }\n", " k = { n: 0.0 for n in algs }\n", " c = 0\n", "\n", " for ds in dataset:\n", " if ds != \"Average\":\n", " c += 1\n", " for n in algs:\n", " if n in statistic[gan][ds].keys():\n", " f1[n] += statistic[gan][ds][n][f1Score]\n", " k[n] += statistic[gan][ds][n][kScore]\n", "\n", " avg = {}\n", " for n in algs:\n", " avg[n] = { f1Score: f1[n] / c, kScore: k[n] / c }\n", " statistic[gan][\"Average\"] = avg" ] }, { "cell_type": "code", "execution_count": 12, "id": "3fe2a8d8", "metadata": {}, "outputs": [], "source": [ "convGanMax = {}\n", "for g in gans:\n", " if g[0:7] == \"convGAN\":\n", " for d in statistic[g].keys():\n", " if d not in convGanMax.keys():\n", " convGanMax[d] = {}\n", " for a in statistic[g][d].keys():\n", " if a not in convGanMax[d].keys():\n", " convGanMax[d][a] = {}\n", " for s in statistic[g][d][a].keys():\n", " x = statistic[g][d][a][s]\n", " if x is None:\n", " x = 0.0\n", " if s not in convGanMax[d][a].keys():\n", " convGanMax[d][a][s] = x\n", " else:\n", " convGanMax[d][a][s] = max(x, convGanMax[d][a][s])\n", "\n", "gs = []\n", "for g in list(gans):\n", " if g[0:7] == \"convGAN\":\n", " del statistic[g]\n", " else:\n", " gs.append(g)\n", "\n", "statistic[\"convGAN\"] = convGanMax\n", "gs.append(\"convGAN\")\n", "gans = gs" ] }, { "cell_type": "markdown", "id": "public-collins", "metadata": {}, "source": [ "# Show Statistics" ] }, { "cell_type": "code", "execution_count": 13, "id": "5fec8e83", "metadata": {}, "outputs": [], "source": [ "def drawDiagram(size, rowNames, data, colNames=[], colors=None, border=20, barIndent=10, fontSize=20, markers=[0.25, 0.5, 0.75, 1.00]):\n", " silver = (204, 204, 204)\n", " black = (0,0,0)\n", " white = (255, 255, 255)\n", " \n", " defaultColors = [ (31,119,180)\n", " , (255,127,14)\n", " , (44,160,44)\n", " , (214,40,40)\n", " , (148,103,189)\n", " , (140,86,75)\n", " , (227,119,194)\n", " , (127,127,127)\n", " ]\n", " \n", " \n", " if colors is None:\n", " colors = defaultColors\n", "\n", " print((len(data[0]), len(colNames), len(data), len(rowNames)))\n", "\n", " font = ImageFont.truetype(\"FreeSans\", fontSize)\n", " \n", " markerSize = 0\n", " for m in markers:\n", " markerSize = max(markerSize, font.getsize(f\"{m:0.2f}\")[0])\n", "\n", " areaTop = 2 * border + markerSize\n", "\n", " barStep = (size[0] - border - areaTop) // len(data)\n", " barSize = max(border, barStep - border)\n", " barIndent = min(barIndent, barSize / (1 + len(data[0])))\n", " barIndent = barSize / (2 + len(data[0]))\n", " \n", " print((size[0], barSize, barSize * len(data)))\n", " \n", " \n", " w = max(size[0], size[1])\n", " img = Image.new(\"RGB\", (w,w))\n", " d = ImageDraw.Draw(img)\n", " d.rectangle(((0,0), (w,w)), fill=white)\n", " \n", " height = size[1]\n", " left = w - height\n", " textSize = 0\n", " for (n, name) in enumerate(rowNames):\n", " s = font.getsize(name)\n", " offset = int(border + barSize - s[1] + 1.5) // 2\n", " textSize = max(textSize, s[0])\n", " pos = (left + border, areaTop + offset + (barStep * n))\n", " d.text(pos, name, fill=black, font=font)\n", " \n", " barLength = height - (4 * border) - textSize\n", " areaSize = (barLength, barSize)\n", " areaLeft = left + (2 * border) + textSize\n", " \n", " markerPos = [areaLeft + int(v * barLength) for v in markers]\n", " for p in markerPos:\n", " d.line(((p, border), (p, size[0] - border)), fill=silver)\n", " \n", " for (n, row) in enumerate(data):\n", " area = ((areaLeft, areaTop + (n * barStep) + (border // 2)), areaSize)\n", "\n", " indices = list(range(len(row)))\n", " indices.sort(key= lambda i: 1.0 - row[i])\n", "\n", " for (n, i) in enumerate(indices):\n", " v = row[i]\n", " c = colors[i]\n", " offset = barIndent * n\n", " tl = (area[0][0], area[0][1] + offset)\n", " br = (tl[0] + int(v * area[1][0]), area[1][1] + tl[1] - offset)\n", " rect = (tl, br)\n", " d.rectangle(rect, fill=c, outline=black)\n", "\n", "\n", " d.line(((areaLeft, areaTop), (areaLeft, size[0] - border)), fill=black)\n", " d.line(((areaLeft, areaTop), (w - border, areaTop)), fill=black)\n", " \n", " img = img.rotate(90)\n", " d = ImageDraw.Draw(img)\n", "\n", " for (m, p) in zip(markers, markerPos):\n", " d.text((border, size[1] - (p - left)), f\"{m:0.2f}\", fill=black, font=font)\n", " \n", " if len(colNames) > 0:\n", " colNameWidth = 0\n", " colNameHeight = fontSize * len(colNames)\n", " for c in colNames:\n", " colNameWidth = max(colNameWidth, font.getsize(c)[0])\n", " \n", " rWidth = int(fontSize * 0.75)\n", " rHeight = fontSize // 2\n", " rPadd = (fontSize - rHeight) // 2\n", " \n", " tl = (size[0] - ((3 * border) + colNameWidth + rWidth), 0)\n", " br = (size[0], 2 * border + colNameHeight)\n", " d.rectangle((tl, br), fill=white)\n", "\n", " for (n, c) in enumerate(colNames):\n", " t = border + (fontSize * n)\n", " l = size[0] - border - colNameWidth\n", " d.rectangle(((l - border - rWidth, t + rPadd - 1), (l - border, t + rPadd + rHeight)), fill=colors[n])\n", " d.text((l, t), c, fill=black, font=font)\n", " \n", " return img.crop((0, 0, size[0], size[1]))" ] }, { "cell_type": "markdown", "id": "2f2d08a8", "metadata": {}, "source": [ "def showDiagnose(algo, score):\n", " def gr(n):\n", " if n in resultList:\n", " return resultList[n][algo].data[score]\n", " else:\n", " return 0.0\n", " \n", " def valueOf(d, g):\n", " d = cleanupName(d)\n", " if d not in statistic[g].keys():\n", " print(f\"Missing '{d}' in '{g}'\")\n", " return 0.0\n", " \n", " if algo in statistic[g][d].keys():\n", " return statistic[g][d][algo][score]\n", " else:\n", " print(f\"Missing '{algo}' in ('{g}', '{d}')\")\n", " return 0.0\n", " \n", " print(f\"{algo}: {score}\")\n", " \n", " gans = list(statistic.keys())\n", "\n", " w = 0.8 / len(gans)\n", " bar = list(range(len(testSets)))\n", " plt.figure(figsize=(20, 18))\n", " for g in gans:\n", " values = [valueOf(d, g) for d in testSets]\n", " plt.barh(bar, values, w, label=g)\n", " print(values)\n", " \n", " \n", " bar = [i - w for i in bar]\n", "\n", " plt.ylabel(\"Dataset\")\n", " plt.xlabel(score)\n", " plt.yticks(range(len(testSets)), [cleanupName(name) for name in testSets])\n", " #plt.yticks(rotation=\"vertical\")\n", " plt.legend()\n", " plt.savefig(f\"data_result/statistics/byAlgorithm/statistic-{algo}-{score}.pdf\")\n", " plt.show()" ] }, { "cell_type": "markdown", "id": "ec7d07b0", "metadata": {}, "source": [ "def showDiagnose(algo, score):\n", " def gr(n):\n", " if n in resultList:\n", " return resultList[n][algo].data[score]\n", " else:\n", " return 0.0\n", " \n", " def valueOf(d, g):\n", " d = cleanupName(d)\n", " if d not in statistic[g].keys():\n", " print(f\"Missing '{d}' in '{g}'\")\n", " return 0.0\n", " \n", " if algo in statistic[g][d].keys():\n", " return statistic[g][d][algo][score]\n", " else:\n", " print(f\"Missing '{algo}' in ('{g}', '{d}')\")\n", " return 0.0\n", " \n", " print(f\"{algo}: {score}\")\n", " \n", " gans = list(statistic.keys())\n", "\n", " w = 0.8 / len(gans)\n", " bar = list(range(len(testSets)))\n", " plt.figure(figsize=(20, 18))\n", " for g in gans:\n", " print(f\"({algo}, {score}) -> {g}\")\n", " values = [valueOf(d, g) for d in testSets]\n", " plt.plot(bar, values, 'o', label=g)\n", " #plt.plot(bar, values, w, label=g)\n", " #print(values)\n", " \n", " \n", " #bar = [i - w for i in bar]\n", "\n", " plt.ylabel(\"Dataset\")\n", " plt.ylabel(score)\n", " plt.xticks(range(len(testSets)), [cleanupName(name) for name in testSets])\n", " plt.xticks(rotation=\"vertical\")\n", " plt.legend()\n", " plt.savefig(f\"data_result/statistics/byAlgorithm/statistic-{algo}-{score}.pdf\")\n", " plt.show()" ] }, { "cell_type": "code", "execution_count": 14, "id": "038344f7", "metadata": {}, "outputs": [], "source": [ "def showDiagnose(algo, score):\n", " def valueOf(d, g):\n", " d = cleanupName(d)\n", " if d not in statistic[g].keys():\n", " print(f\"Missing '{d}' in '{g}'\")\n", " return 0.0\n", " \n", " if algo in statistic[g][d].keys():\n", " return statistic[g][d][algo][score]\n", " else:\n", " print(f\"Missing '{algo}' in ('{g}', '{d}')\")\n", " return 0.0\n", " \n", " print(f\"{algo}: {score}\")\n", " \n", " gans = list(statistic.keys())\n", "\n", " data = [[valueOf(d, g) for g in gans] for d in testSets] \n", " img = drawDiagram((1024, 1024), [cleanupName(d) for d in testSets], data, colNames=gans)\n", " img.save(f\"data_result/statistics/byAlgorithm/statistic-{algo}-{score}.png\")\n" ] }, { "cell_type": "markdown", "id": "faa6ba9c", "metadata": {}, "source": [ "def showDiagnoseAverage(score, onlyOneBar=False):\n", " def gr(n):\n", " if n in resultList:\n", " return resultList[n][algo].data[score]\n", " else:\n", " return 0.0\n", " \n", " print(f\"Average: {score}\")\n", " \n", " gans = list(statistic.keys())\n", "\n", " w = 0.8 / len(gans)\n", " if onlyOneBar:\n", " barType = \"O\"\n", " bar = range(len(algs))\n", " else:\n", " barType = \"M\"\n", " bar = [0.8 + i - w for i in range(len(algs)) ]\n", " plt.figure(figsize=(20, 18))\n", " for g in gans:\n", " values = [\n", " (statistic[g][\"Average\"][algo][score] if algo in statistic[g][\"Average\"].keys() else 0.0)\n", " for algo in algs\n", " ]\n", " plt.barh(bar, values, w, label=g)\n", " \n", " if not onlyOneBar:\n", " bar = [i - w for i in bar]\n", "\n", " plt.ylabel(\"Dataset\")\n", " plt.xlabel(score)\n", " plt.yticks(range(len(algs)), algs)\n", " plt.legend()\n", " plt.savefig(f\"data_result/statistics/average/statistic-Average-{score}-{barType}.pdf\")\n", " plt.show()" ] }, { "cell_type": "code", "execution_count": 15, "id": "8904b4b3", "metadata": {}, "outputs": [], "source": [ "def showDiagnoseAverage(score, onlyOneBar=False):\n", " def valueOf(g, algo):\n", " if algo in statistic[g][\"Average\"].keys():\n", " return statistic[g][\"Average\"][algo][score] \n", " else:\n", " return 0.0\n", "\n", " print(f\"Average: {score}\")\n", " \n", " gans = list(statistic.keys())\n", " \n", " data = [[valueOf(g, algo) for g in gans] for algo in algs]\n", " img = drawDiagram((1024, 1024), algs, data, colNames=gans)\n", " img.save(f\"data_result/statistics/average/statistic-Average-{score}.png\")" ] }, { "cell_type": "markdown", "id": "53621267", "metadata": {}, "source": [ "def showDiagnoseDataset(dataset):\n", " def gr(n):\n", " if n in resultList:\n", " return resultList[n][algo].data[score]\n", " else:\n", " return 0.0\n", " \n", " print(f\"{dataset}\")\n", " \n", " gans = list(statistic.keys())\n", " scores = [(a, s) for a in algs for s in (f1Score, kScore)]\n", "\n", " w = 0.8 / len(scores)\n", " bar = list(range(len(gans)))\n", " plt.figure(figsize=(20, 18))\n", " for (algo, score) in scores:\n", " values = [\n", " (statistic[g][dataset][algo][score] if algo in statistic[g][dataset] else 0.0) if dataset in statistic[g] else 0.0\n", " for g in gans\n", " ]\n", " plt.barh(bar, values, w, label=f\"{algo}: {score}\")\n", " \n", " \n", " bar = [i - w for i in bar]\n", "\n", " plt.xlabel(\"score\")\n", " plt.ylabel(\"Generator\")\n", " plt.yticks(range(len(gans)), gans)\n", " #plt.yticks(rotation=\"vertical\")\n", " plt.legend()\n", " plt.savefig(f\"data_result/statistics/byDataset/statistic-{dataset}.pdf\")\n", " plt.show()\n" ] }, { "cell_type": "code", "execution_count": 16, "id": "d1f4961a", "metadata": {}, "outputs": [], "source": [ "def showDiagnoseDataset(dataset):\n", " print(f\"{dataset}\")\n", " \n", " def valueOf(algo, score, g):\n", " if dataset in statistic[g]:\n", " if algo in statistic[g][dataset]:\n", " if score in statistic[g][dataset][algo]:\n", " return statistic[g][dataset][algo][score]\n", " return 0.0\n", " \n", " gans = list(statistic.keys())\n", " scores = [f1Score, kScore]\n", " \n", " for score in scores:\n", " data = [[valueOf(algo, score, g) for algo in algs] for g in gans]\n", " img = drawDiagram((1024, 1024), gans, data, colNames=algs)\n", " img.save(f\"data_result/statistics/byDataset/statistic-{dataset}-{score}.png\")\n" ] }, { "cell_type": "code", "execution_count": 17, "id": "57fe8925", "metadata": { "scrolled": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "LR: f1 score\n", "(6, 6, 14, 14)\n", "(1024, 46, 644)\n", "LR: cohens kappa score\n", "(6, 6, 14, 14)\n", "(1024, 46, 644)\n", "GB: f1 score\n", "(6, 6, 14, 14)\n", "(1024, 46, 644)\n", "GB: cohens kappa score\n", "(6, 6, 14, 14)\n", "(1024, 46, 644)\n", "KNN: f1 score\n", "(6, 6, 14, 14)\n", "(1024, 46, 644)\n", "KNN: cohens kappa score\n", "(6, 6, 14, 14)\n", "(1024, 46, 644)\n", "DoG: f1 score\n", "Missing 'DoG' in ('ProWRAS', 'abalone_17_vs_7_8_9_10')\n", "Missing 'DoG' in ('Repeater', 'abalone_17_vs_7_8_9_10')\n", "Missing 'DoG' in ('GAN', 'abalone_17_vs_7_8_9_10')\n", "Missing 'DoG' in ('ctGAN', 'abalone_17_vs_7_8_9_10')\n", "Missing 'DoG' in ('CTAB-GAN', 'abalone_17_vs_7_8_9_10')\n", "Missing 'DoG' in ('ProWRAS', 'abalone9-18')\n", "Missing 'DoG' in ('Repeater', 'abalone9-18')\n", "Missing 'DoG' in ('GAN', 'abalone9-18')\n", "Missing 'DoG' in ('ctGAN', 'abalone9-18')\n", "Missing 'DoG' in ('CTAB-GAN', 'abalone9-18')\n", "Missing 'DoG' in ('ProWRAS', 'car_good')\n", "Missing 'DoG' in ('Repeater', 'car_good')\n", "Missing 'DoG' in ('GAN', 'car_good')\n", "Missing 'DoG' in ('ctGAN', 'car_good')\n", "Missing 'DoG' in ('CTAB-GAN', 'car_good')\n", "Missing 'DoG' in ('ProWRAS', 'car-vgood')\n", "Missing 'DoG' in ('Repeater', 'car-vgood')\n", "Missing 'DoG' in ('GAN', 'car-vgood')\n", "Missing 'DoG' in ('ctGAN', 'car-vgood')\n", "Missing 'DoG' in ('CTAB-GAN', 'car-vgood')\n", "Missing 'DoG' in ('ProWRAS', 'flare-F')\n", "Missing 'DoG' in ('Repeater', 'flare-F')\n", "Missing 'DoG' in ('GAN', 'flare-F')\n", "Missing 'DoG' in ('ctGAN', 'flare-F')\n", "Missing 'DoG' in ('CTAB-GAN', 'flare-F')\n", "Missing 'DoG' in ('ProWRAS', 'hypothyroid')\n", "Missing 'DoG' in ('Repeater', 'hypothyroid')\n", "Missing 'DoG' in ('GAN', 'hypothyroid')\n", "Missing 'DoG' in ('ctGAN', 'hypothyroid')\n", "Missing 'DoG' in ('CTAB-GAN', 'hypothyroid')\n", "Missing 'DoG' in ('ProWRAS', 'kddcup-guess_passwd_vs_satan')\n", "Missing 'DoG' in ('Repeater', 'kddcup-guess_passwd_vs_satan')\n", "Missing 'DoG' in ('GAN', 'kddcup-guess_passwd_vs_satan')\n", "Missing 'DoG' in ('ctGAN', 'kddcup-guess_passwd_vs_satan')\n", "Missing 'DoG' in ('CTAB-GAN', 'kddcup-guess_passwd_vs_satan')\n", "Missing 'DoG' in ('ProWRAS', 'kr-vs-k-three_vs_eleven')\n", "Missing 'DoG' in ('Repeater', 'kr-vs-k-three_vs_eleven')\n", "Missing 'DoG' in ('GAN', 'kr-vs-k-three_vs_eleven')\n", "Missing 'DoG' in ('ctGAN', 'kr-vs-k-three_vs_eleven')\n", "Missing 'DoG' in ('CTAB-GAN', 'kr-vs-k-three_vs_eleven')\n", "Missing 'DoG' in ('ProWRAS', 'kr-vs-k-zero-one_vs_draw')\n", "Missing 'DoG' in ('Repeater', 'kr-vs-k-zero-one_vs_draw')\n", "Missing 'DoG' in ('GAN', 'kr-vs-k-zero-one_vs_draw')\n", "Missing 'DoG' in ('ctGAN', 'kr-vs-k-zero-one_vs_draw')\n", "Missing 'DoG' in ('CTAB-GAN', 'kr-vs-k-zero-one_vs_draw')\n", "Missing 'DoG' in ('ProWRAS', 'shuttle-2_vs_5')\n", "Missing 'DoG' in ('Repeater', 'shuttle-2_vs_5')\n", "Missing 'DoG' in ('GAN', 'shuttle-2_vs_5')\n", "Missing 'DoG' in ('ctGAN', 'shuttle-2_vs_5')\n", "Missing 'DoG' in ('CTAB-GAN', 'shuttle-2_vs_5')\n", "Missing 'DoG' in ('ProWRAS', 'winequality-red-4')\n", "Missing 'DoG' in ('Repeater', 'winequality-red-4')\n", "Missing 'DoG' in ('GAN', 'winequality-red-4')\n", "Missing 'DoG' in ('ctGAN', 'winequality-red-4')\n", "Missing 'DoG' in ('CTAB-GAN', 'winequality-red-4')\n", "Missing 'DoG' in ('ProWRAS', 'yeast4')\n", "Missing 'DoG' in ('Repeater', 'yeast4')\n", "Missing 'DoG' in ('GAN', 'yeast4')\n", "Missing 'DoG' in ('ctGAN', 'yeast4')\n", "Missing 'DoG' in ('CTAB-GAN', 'yeast4')\n", "Missing 'DoG' in ('ProWRAS', 'yeast5')\n", "Missing 'DoG' in ('Repeater', 'yeast5')\n", "Missing 'DoG' in ('GAN', 'yeast5')\n", "Missing 'DoG' in ('ctGAN', 'yeast5')\n", "Missing 'DoG' in ('CTAB-GAN', 'yeast5')\n", "Missing 'DoG' in ('ProWRAS', 'yeast6')\n", "Missing 'DoG' in ('Repeater', 'yeast6')\n", "Missing 'DoG' in ('GAN', 'yeast6')\n", "Missing 'DoG' in ('ctGAN', 'yeast6')\n", "Missing 'DoG' in ('CTAB-GAN', 'yeast6')\n", "(6, 6, 14, 14)\n", "(1024, 46, 644)\n", "DoG: cohens kappa score\n", "Missing 'DoG' in ('ProWRAS', 'abalone_17_vs_7_8_9_10')\n", "Missing 'DoG' in ('Repeater', 'abalone_17_vs_7_8_9_10')\n", "Missing 'DoG' in ('GAN', 'abalone_17_vs_7_8_9_10')\n", "Missing 'DoG' in ('ctGAN', 'abalone_17_vs_7_8_9_10')\n", "Missing 'DoG' in ('CTAB-GAN', 'abalone_17_vs_7_8_9_10')\n", "Missing 'DoG' in ('ProWRAS', 'abalone9-18')\n", "Missing 'DoG' in ('Repeater', 'abalone9-18')\n", "Missing 'DoG' in ('GAN', 'abalone9-18')\n", "Missing 'DoG' in ('ctGAN', 'abalone9-18')\n", "Missing 'DoG' in ('CTAB-GAN', 'abalone9-18')\n", "Missing 'DoG' in ('ProWRAS', 'car_good')\n", "Missing 'DoG' in ('Repeater', 'car_good')\n", "Missing 'DoG' in ('GAN', 'car_good')\n", "Missing 'DoG' in ('ctGAN', 'car_good')\n", "Missing 'DoG' in ('CTAB-GAN', 'car_good')\n", "Missing 'DoG' in ('ProWRAS', 'car-vgood')\n", "Missing 'DoG' in ('Repeater', 'car-vgood')\n", "Missing 'DoG' in ('GAN', 'car-vgood')\n", "Missing 'DoG' in ('ctGAN', 'car-vgood')\n", "Missing 'DoG' in ('CTAB-GAN', 'car-vgood')\n", "Missing 'DoG' in ('ProWRAS', 'flare-F')\n", "Missing 'DoG' in ('Repeater', 'flare-F')\n", "Missing 'DoG' in ('GAN', 'flare-F')\n", "Missing 'DoG' in ('ctGAN', 'flare-F')\n", "Missing 'DoG' in ('CTAB-GAN', 'flare-F')\n", "Missing 'DoG' in ('ProWRAS', 'hypothyroid')\n", "Missing 'DoG' in ('Repeater', 'hypothyroid')\n", "Missing 'DoG' in ('GAN', 'hypothyroid')\n", "Missing 'DoG' in ('ctGAN', 'hypothyroid')\n", "Missing 'DoG' in ('CTAB-GAN', 'hypothyroid')\n", "Missing 'DoG' in ('ProWRAS', 'kddcup-guess_passwd_vs_satan')\n", "Missing 'DoG' in ('Repeater', 'kddcup-guess_passwd_vs_satan')\n", "Missing 'DoG' in ('GAN', 'kddcup-guess_passwd_vs_satan')\n", "Missing 'DoG' in ('ctGAN', 'kddcup-guess_passwd_vs_satan')\n", "Missing 'DoG' in ('CTAB-GAN', 'kddcup-guess_passwd_vs_satan')\n", "Missing 'DoG' in ('ProWRAS', 'kr-vs-k-three_vs_eleven')\n", "Missing 'DoG' in ('Repeater', 'kr-vs-k-three_vs_eleven')\n", "Missing 'DoG' in ('GAN', 'kr-vs-k-three_vs_eleven')\n", "Missing 'DoG' in ('ctGAN', 'kr-vs-k-three_vs_eleven')\n", "Missing 'DoG' in ('CTAB-GAN', 'kr-vs-k-three_vs_eleven')\n", "Missing 'DoG' in ('ProWRAS', 'kr-vs-k-zero-one_vs_draw')\n", "Missing 'DoG' in ('Repeater', 'kr-vs-k-zero-one_vs_draw')\n", "Missing 'DoG' in ('GAN', 'kr-vs-k-zero-one_vs_draw')\n", "Missing 'DoG' in ('ctGAN', 'kr-vs-k-zero-one_vs_draw')\n", "Missing 'DoG' in ('CTAB-GAN', 'kr-vs-k-zero-one_vs_draw')\n", "Missing 'DoG' in ('ProWRAS', 'shuttle-2_vs_5')\n", "Missing 'DoG' in ('Repeater', 'shuttle-2_vs_5')\n", "Missing 'DoG' in ('GAN', 'shuttle-2_vs_5')\n", "Missing 'DoG' in ('ctGAN', 'shuttle-2_vs_5')\n", "Missing 'DoG' in ('CTAB-GAN', 'shuttle-2_vs_5')\n", "Missing 'DoG' in ('ProWRAS', 'winequality-red-4')\n", "Missing 'DoG' in ('Repeater', 'winequality-red-4')\n", "Missing 'DoG' in ('GAN', 'winequality-red-4')\n", "Missing 'DoG' in ('ctGAN', 'winequality-red-4')\n", "Missing 'DoG' in ('CTAB-GAN', 'winequality-red-4')\n", "Missing 'DoG' in ('ProWRAS', 'yeast4')\n", "Missing 'DoG' in ('Repeater', 'yeast4')\n", "Missing 'DoG' in ('GAN', 'yeast4')\n", "Missing 'DoG' in ('ctGAN', 'yeast4')\n", "Missing 'DoG' in ('CTAB-GAN', 'yeast4')\n", "Missing 'DoG' in ('ProWRAS', 'yeast5')\n", "Missing 'DoG' in ('Repeater', 'yeast5')\n", "Missing 'DoG' in ('GAN', 'yeast5')\n", "Missing 'DoG' in ('ctGAN', 'yeast5')\n", "Missing 'DoG' in ('CTAB-GAN', 'yeast5')\n", "Missing 'DoG' in ('ProWRAS', 'yeast6')\n", "Missing 'DoG' in ('Repeater', 'yeast6')\n", "Missing 'DoG' in ('GAN', 'yeast6')\n", "Missing 'DoG' in ('ctGAN', 'yeast6')\n", "Missing 'DoG' in ('CTAB-GAN', 'yeast6')\n", "(6, 6, 14, 14)\n", "(1024, 46, 644)\n", "Average: f1 score\n", "(6, 6, 4, 4)\n", "(1024, 211, 844)\n", "Average: cohens kappa score\n", "(6, 6, 4, 4)\n", "(1024, 211, 844)\n", "abalone_17_vs_7_8_9_10\n", "(4, 4, 6, 6)\n", "(1024, 134, 804)\n", "(4, 4, 6, 6)\n", "(1024, 134, 804)\n", "abalone9-18\n", "(4, 4, 6, 6)\n", "(1024, 134, 804)\n", "(4, 4, 6, 6)\n", "(1024, 134, 804)\n", "car_good\n", "(4, 4, 6, 6)\n", "(1024, 134, 804)\n", "(4, 4, 6, 6)\n", "(1024, 134, 804)\n", "car-vgood\n", "(4, 4, 6, 6)\n", "(1024, 134, 804)\n", "(4, 4, 6, 6)\n", "(1024, 134, 804)\n", "flare-F\n", "(4, 4, 6, 6)\n", "(1024, 134, 804)\n", "(4, 4, 6, 6)\n", "(1024, 134, 804)\n", "hypothyroid\n", "(4, 4, 6, 6)\n", "(1024, 134, 804)\n", "(4, 4, 6, 6)\n", "(1024, 134, 804)\n", "kddcup-guess_passwd_vs_satan\n", "(4, 4, 6, 6)\n", "(1024, 134, 804)\n", "(4, 4, 6, 6)\n", "(1024, 134, 804)\n", "kr-vs-k-three_vs_eleven\n", "(4, 4, 6, 6)\n", "(1024, 134, 804)\n", "(4, 4, 6, 6)\n", "(1024, 134, 804)\n", "kr-vs-k-zero-one_vs_draw\n", "(4, 4, 6, 6)\n", "(1024, 134, 804)\n", "(4, 4, 6, 6)\n", "(1024, 134, 804)\n", "shuttle-2_vs_5\n", "(4, 4, 6, 6)\n", "(1024, 134, 804)\n", "(4, 4, 6, 6)\n", "(1024, 134, 804)\n", "winequality-red-4\n", "(4, 4, 6, 6)\n", "(1024, 134, 804)\n", "(4, 4, 6, 6)\n", "(1024, 134, 804)\n", "yeast4\n", "(4, 4, 6, 6)\n", "(1024, 134, 804)\n", "(4, 4, 6, 6)\n", "(1024, 134, 804)\n", "yeast5\n", "(4, 4, 6, 6)\n", "(1024, 134, 804)\n", "(4, 4, 6, 6)\n", "(1024, 134, 804)\n", "yeast6\n", "(4, 4, 6, 6)\n", "(1024, 134, 804)\n", "(4, 4, 6, 6)\n", "(1024, 134, 804)\n", "Average\n", "(4, 4, 6, 6)\n", "(1024, 134, 804)\n", "(4, 4, 6, 6)\n", "(1024, 134, 804)\n" ] } ], "source": [ "for a in algs:\n", " showDiagnose(a, f1Score)\n", " showDiagnose(a, kScore)\n", " \n", "showDiagnoseAverage(f1Score)\n", "showDiagnoseAverage(kScore)\n", "\n", "for t in testSets:\n", " showDiagnoseDataset(cleanupName(t))\n", "\n", "showDiagnoseDataset(\"Average\")" ] }, { "cell_type": "code", "execution_count": 18, "id": "63841c55", "metadata": {}, "outputs": [], "source": [ "def getValueOf(gan, dataset, algo, score):\n", " if dataset not in statistic[gan].keys():\n", " #print(f\"Missing '{dataset}' in '{gan}'\")\n", " return None\n", "\n", " if algo not in statistic[gan][dataset].keys():\n", " #print(f\"Missing '{algo}' in ('{gan}', '{dataset}')\")\n", " return None\n", " \n", " if score not in statistic[gan][dataset][algo].keys():\n", " #print(f\"Missing '{score}' in ('{gan}', '{dataset}', '{algo}')\")\n", " return None\n", " \n", " return statistic[gan][dataset][algo][score]\n", " \n", " \n", " \n", "def calcTable(algo, score, ignore=[]):\n", " table = []\n", " \n", " def calc(gc, g):\n", " n = 0\n", " for d in testSets:\n", " d = cleanupName(d)\n", " if d not in ignore:\n", " vc = getValueOf(gc, d, algo, score)\n", " v = getValueOf(g, d, algo, score)\n", " if vc is not None and v is not None and vc >= v:\n", " n += 1\n", " return n\n", " \n", " for gc in gans:\n", " table.append([calc(gc, g) for g in gans])\n", " return table" ] }, { "cell_type": "code", "execution_count": null, "id": "93d1f460", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "id": "d8567532", "metadata": {}, "source": [ "for a in algs:\n", " showDiagnose(a, f1Score)\n", " showDiagnose(a, kScore)\n", " \n", "showDiagnoseAverage(f1Score)\n", "showDiagnoseAverage(kScore)\n", "\n", "for t in testSets:\n", " showDiagnoseDataset(cleanupName(t))\n", "\n", "showDiagnoseDataset(\"Average\")" ] }, { "cell_type": "code", "execution_count": 19, "id": "177774b0", "metadata": { "scrolled": false }, "outputs": [ { "data": { "text/plain": [ "[[14, 13, 9, 11, 9, 6],\n", " [3, 14, 6, 11, 6, 2],\n", " [5, 8, 14, 10, 7, 3],\n", " [3, 3, 4, 14, 3, 2],\n", " [5, 9, 7, 11, 14, 4],\n", " [10, 14, 11, 12, 11, 14]]" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tables = {}\n", "ignore = [# \"webpage\"\n", " #, \"mammography\"\n", " #, \"protein_homo\"\n", " #, \"ozone_level\"\n", " #, \"creditcard\"\n", " ]\n", "for a in algs:\n", " tables[a + \" - \" + f1Score] = calcTable(a, f1Score, ignore)\n", " tables[a + \" - \" + kScore] = calcTable(a, kScore, ignore)\n", " \n", "tables[algs[0] + \" - \" + f1Score]" ] }, { "cell_type": "code", "execution_count": null, "id": "befa2db4", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": 20, "id": "453f491d", "metadata": { "scrolled": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "LR - f1 score\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "LR - cohens kappa score\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "GB - f1 score\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "GB - cohens kappa score\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZkAAAF6CAYAAADLdSXiAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAAsTAAALEwEAmpwYAAApZElEQVR4nO3dd5glZZn+8e89IDlLEAEZQMIKDmlEBRcFZAgiQVAcMKCuiFlcWV3Zn7ruumZXVAyzBsIqoCKKoitBAYk6hCEooEQREAZEEEHC3L8/qhoOx57p06f7PXWq5/5c17mmq+pU1XOapp9+nqr3LdkmIiKihGlNBxAREVNXkkxERBSTJBMREcUkyURERDFJMhERUUySTEREFJMkExERTyLp65LulHTVKNveI8mSVu/lWEkyERHR7Rhg9+6VktYDdgVu6fVASTIREfEkts8F7hll038D/wL0PIo/SSYiIsYkaW/gD7bnjWe/JQvFExERhUi7G+ZP4AiXXA081LFiju05Cz+flgOOBGaN90xJMhERrTOfadN+2ffeCxYs8ZDtmePYZSNgA2CeJIB1gUslbWf7jkXtmCQTEdE6Ztq0BX3vvWCcu9q+ElhzZFnSTcBM22OWU7kmExHRMhJI7vs19vF1AnAhsKmkWyW9od9YU8lERLTQRCqZsdiePcb26b0eK0kmIqJ1JtYuG6QkmYiIlhlpl7VBkkxERAulkomIiGJSyURERBFSrslERERBSTIREVFIb+NdhkGSTEREy0ipZCIioqBUMhERUUgu/EdERCFpl0VERFFpl0VERCFpl0VEREGpZFpGWt0wvekw+rLxxtc1HULfll32waZD6Nutt67bdAgT8tSn3t10CH1bifubDqEvN/0R5v/Zmuhxck2mlaYDc5sOoi9HHz3ux24PjRkzrmg6hL4dccSHmw5hQl796uObDqFvu3JG0yH0ZeZbJ+tIaZdFRERBaZdFREQRaZdFRERRqWQiIqKQXJOJiIhC0i6LiIii0i6LiIhC0i6LiIhCpFQyERFRUCqZiIgoJO2yiIgoJO2yiIgoKpVMREQU4lQyERFRRgZjRkREUUkyERFRSNplERFRSJvaZdMmsrOkxyRdLukqSd+RtNw49r1M0lb110tKekDSqzq2XyJpG0mHSLqrPs81kg7vOs7Wkixpt671R0q6WtIV9b7PnchnjYgYJpL7fg3ShJIM8KDtrWxvATwMHNa5UdISi9j3AmD7+ustgWtHliUtD2wIzKu3n2R7K2AH4EhJ63UcZzZwXv3vyHmfD+wFbGN7BvBi4Pf9fMCIiOFTDcbs9zVIE00ynX4BPFPSiyT9XNK3gCslLSPpG5KurKuXner3n88TSWZ74MvAVvXydsClth/rPIHtu4HfAWsDSBJwAHAIMEvSMvVb1wbm2/5bvd9827dN4meNiGjMSLtssUkykpYE9gCurFdtBxxp+1nAWwFsP5uq2ji2Tgadlcz2wLnA3yStWC+fP8p5ngEsA1xRr9oBuNH29cDZwJ71+tOB9SRdJ+mLkl44GZ8zImJYLC7tsmUlXQ7MBW4Bvlav/6XtG+uvXwAcD2D7GuBmYBPbNwFLSXoasBlVu+xXwHOpkswFHec5UNLVwA3AUbYfqtfPBk6svz6xXsb2X4BtgUOBu4CTJB3SHbykQyXNlTS3eltERBu0p1020bvLHqyvlTyu6mDxQOeqRex/IVW763bblnQRVXWyHXBRx/tOsv22+lrLaZJ+QpUV9gf2lnRkfZ6nSlrR9v11q+1s4GxJVwKvBY7pPLntOcCcKu6Z7bgfMCKC9sxdNpnXZBbmXOBgAEmbAM+gqlqgaokdTpVsqP99DXCH7Xu7D2T7Qqqq6J1UF/Pn2V7P9nTb6wMnA/tK2lTSxh27bkVVQUVEtF6brskMYpzMF4Ev19XEo8AhIxfkqZLMf1MnGdu313ekXTDqkSofBy4FNgFO6dp2MvBm4NfA5yWtUp/zd1Sts4iIKWAxmerf9gqjrDubqk01svwQ1d1fo+3/K7raabandy0fQ0ebq75L7GkLOd6pwKn14vajvSciYipoS7ssI/4jIlqmTSP+k2QiIloolUxERBSymFyTiYiIwUu7LCIiikq7LCIiipDSLouIiILaUskMYsR/RERMspIj/iV9XdKdkq7qWPfJ+pleV0g6pR7sPnac/X/EiIhowki7rOC0MscAu3etOwPYon5G13XAv/ZyoCSZiIgWKjnVv+1zgXu61p1u+9F68SJg3V7izDWZiIgWavjC/+uBk3p5Y5JMRETrTPjhY6tXz9F63Jz60Sdjqh+t8ijwzV7enyQTEdEykzAYc77tmeM/r14L7AXsYrunLJckExHROoMfJyNpd+C9wAtt/7XX/ZJkIiJaqOQ4GUknAC+iaqvdCnyQ6m6ypYEz6icgX2T7sLGOlSQTEdEypecusz17lNVf6+dYSTIRES3UlhH/STIREa2TuctaZ9uNL2Hu0Rr7jUNIs9rxF81o7rhj1Cdpt8K8eVs2HcKEzJhxRdMh9G3XK85oOoT+3D05h8lU/xERUVTaZRERUUjaZRERUYiUSiYiIgpKJRMREYWkXRYREYWkXRYREUWlkomIiEImPNX/wCTJRES0TAZjRkREUUkyERFRSNplERFRSNplERFRVCqZiIgoJIMxIyKikLTLIiKiqLTLIiKikLTLIiKioFQyERFRRJuuyUybyM6SHpN0uaSrJP1Q0iqTFNdY511F0lsGca6IiOFTtcv6fQ3ShJIM8KDtrWxvAdwDvHUSYurFKsC4kowqE/28ERFDQXLfr0GazF+6FwLrAEjaSNL/SbpE0i8kbVavP0bSl+t110naq16/hKRPSvqVpCskvalev4KksyRdKulKSfvU5/oYsFFdRX2yfu8RHfv/e71uuqTfSPoicCmw3iR+3oiIRoy0y9pQyUzKNRlJSwC7AF+rV80BDrP9W0nPBb4I7Fxvmw68ENgI+LmkZwKvAf5s+zmSlgbOl3Q68HtgP9v3SVoduEjSqcD7gC1sb1WffxawMbAdIOBUSTsCtwCbAq+znfZaREwZi8uF/2UlXU6VOC4BzpC0ArA98B1JI+9bumOfb9teAPxW0g3AZsAsYIakA+r3rEyVNG4F/qtOGAuoKqW1RoljVv26rF5eod7/FuBm2xeNFrykQ4FDAZ6x5rg+d0REgxafW5gftL2VpJWBH1FdkzkGuHekyhhFd/o1VfXxdts/7dwg6RBgDWBb249IuglYZpRjCvio7a907T8deGBhwdueQ1V1MXOTlvxZEBGLvcXm7rIRtv8MvAN4D/AgcKOkl8PjF9y37Hj7yyVNk7QRsCFwLfBT4M2SnlLvs4mk5akqmjvrBLMTsH59jPuBFTuO+VPg9XUVhaR1JKU2iYgpqy0X/idtnIztyyTNA14JHAx8SdK/AU8BTgTm1W+9FjiHqu11mO2HJH2VquV2qaoe213AvsA3gR9KmgtcDlxTn+tuSedLugr4ie0jJP0DcGHdovsL8Crgscn6fBERw2MxaZfZXqFr+aUdi7svZLfzbR/etd8C4P31q9vzF3Lug7qWjwKOGuWtWywkjoiIVmpTuywj/iMiWmhxubtsXGwfMsjzRURMTYtJuywiIgZPSiUTEREFpZKJiIhC0i6LiIhC0i6LiIiiUslEREQhgx+5368kmYiIlslgzIiIKCpJJiIiCkm7LCIiCkm7LCIiikolExERhWQwZkREFJJ2WUREFJV2WUREFJJ2WUREFJK5y9roQWBe00H0x59U0yH0TU9rx/8oozn99FlNhzAhu844o+kQ+tfWb/2Dk3eokpWMpK8DewF32t6iXrcacBIwHbgJeIXtP40ZZ7EoIyKikKpd1u+rB8cAu3etex9wlu2NgbPq5TElyUREtMxIu6zf11hsnwvc07V6H+DY+utjgX17iTXtsoiIFmrgwv9atm8HsH27pDV72SlJJiKidSY8d9nqkuZ2LM+xPWeCQY0qSSYiomUmYTDmfNszx7nPHyWtXVcxawN39rJTrslERLRQ4Qv/ozkVeG399WuBH/SyUyqZiIjWKTvVv6QTgBdRtdVuBT4IfAz4tqQ3ALcAL+/lWEkyEREtU3ruMtuzF7Jpl/EeK0kmIqKFMuI/IiIKydxlERFRSKb6j4iIotIui4iIQtIui4iIglLJREREEbkmExERBaVdFhERBaVdFhERRaRdFhERRaWSiYiIQtpzTWaop/qXtJakb0m6QdIlki6UtF/H9qMk/UHStI51h0haIGlGx7qrJE0fcPgREUWMtMsGPNV/X4Y2yUgS8H3gXNsb2t4WeCWwbr19GrAf8Htgx67dbwWOHFy0ERGDJbnv1yANbZIBdgYetv3lkRW2b7b9+XpxJ+Aq4EtA97TUPwI2l7TpQCKNiBgop5KZBJsDly5i+2zgBOAUYC9JT+nYtgD4BPD+RZ1A0qGS5kqae9dfJhpuRMRgSKlkJp2koyXNk/QrSUsBewLft30fcDEwq2uXbwHPk7TBwo5pe47tmbZnrrFCudgjIiZbWyqZYb677Gpg/5EF22+VtDowF9gdWBm4srp0w3LAX4HTOt7/qKRPA+8dZNAREeXl7rLJ8DNgGUlv7li3XP3vbOCfbE+3PR3YAJglabmuYxwDvBhYo3CsEREDk3bZJLBtYF/ghZJulPRL4Fjgg8BuPLlqeQA4D3hp1zEeBj4HrDmgsCMiBiLtsklg+3aq25a7HTvKe1/WsXhMx/rPUSWaiIgpYvAVSb+GOslERMTfy9xlERFRVJJMREQUknZZREQUknZZREQUlUomIiIKac9gzCSZiIiWSbssIiKKSrssIiIKSbssIiIKGZm7rA2SZCIiWiiVTEREFJJ2WUREFJJ2WUREFJVKJiIiikklExERRUi5JhMREQUlybTN3cDxTQfRpyuaDqB/nqGmQ+ibZrWjXbEwbf7et/lnfrKkXRYREeW0I8ckyUREtFKSTEREFGGgHZdkkmQiIlopSSYiIopJuywiIopIuywiIopKJRMREcWkkomIiCLSLouIiKLSLouIiGJaUslMazqAiIgYJ0/w1QNJh0u6WtJVkk6QtEw/oSbJRES00YIJvMYgaR3gHcBM21sASwCv7CfMtMsiItqofLtsSWBZSY8AywG39XOQVDIREW0z8XbZ6pLmdrwOfdLh7T8AnwJuAW4H/mz79H5CTSUTEdFGE6tk5tueubCNklYF9gE2AO4FviPpVbb/d7wnSiUTEdFGZS/8vxi40fZdth8Bvgds30+YqWQiItqm/GDMW4DnSVoOeBDYBZjbz4GSZCIi2qhgkrF9saTvApcCjwKXAXP6OVaSTEREGxUe8W/7g8AHJ3qcobgmI2lfSc/qWvduSddIulLSPEmfkfSUju1bS7Kk3br2s6RPdyy/R9KHin+IiIhBGWmXFRonM5mGIskA+wKPJxlJhwGzgOfZfjbwHOBOYNmOfWYD59X/dvob8DJJq5cMOCKiUYVH/E+WRpKMpNdIuqKuUM4A9gY+KelySRsBRwJvtn0vgO2HbX/M9n31/gIOAA4BZnVNd/AoVe/w8MF9ooiIAUslMzpJm1MlkZ1tbwkcCJwKHGF7K6qKZQXbNy7iMDtQ3V53PXA2sGfX9qOBgyWtPEYsh44MRrrr0b4+TkTE4KVdtkg7A9+1PR/A9j1d20VHQSdpt7rCuUnSyH3as4ET669PpKtlVlc8x1HNvbNQtufYnml75hq5BSIi2iTtsoV6UhLpVieIByRtUC//tK5wrgKWkrQEsD/wAUk3AZ8H9pC0YtehPgu8AVh+sj9ARETjUsks1FnAKyQ9FUDSasD9QGeS+CjwJUmr1O8RMHLd5cXAPNvr2Z5ue33gZKqbBx5XV0jfpko0ERFTSyqZ0dm+GvgIcI6kecBnqFpeR0i6rL7w/yXgTOBiSVcA51MNBrqMqjV2StdhTwYOGuV0nwZyl1lETC0tuibTyJUI28cCx3atflbX8qfqV7dDRjneqVQ3D2B7hY71f6SaojoiYmppyZMxc7k7IqKNBtz26leSTERE25SfIHPSJMlERLRRKpmIiCgmlUxERBSRdllERBSVdllERBSTSiYiIopoYOR+v5JkIiLaKJVMREQUkyQTERFFpF0WERFFpZKJiIhiUslEREQRGYwZERFFJclEREQxaZdFREQRaZdFRERRqWRaZl1Gf9hzG8xrOoAJ2LLpAPr36uOPbzqECdHxLfktNQqjpkNoXiqZiIgoIu2yiIgoqiWFaJJMREQbpZKJiIhiUslEREQRuSYTERFFJclEREQxaZdFREQRaZdFRERRSTIREVFM2mUREVFE2mUREVFUKpmIiCgilUxERBSVJBMREcWkXRYREUWkXRYREUWlkomIiGJSyURERBEtapdN6+VNkp4m6URJ10v6taSfS/qrpMsl3SPpxvrrM+v3by3JknbrOs5j9fvmSbpU0vaLOOfGkn5Un/OS+pw7dr3nB5Iu7Fr3oTq2NTvW/aWXzxkR0RqewGuAxkwykgScApxteyPbzwIOB3azvRVwKnCE7a1sv7jebTZwXv1vpwfr920J/Cvw0YWccxngNGBOfc5tgbcDG3a8ZxVgG2AVSRt0HWI+8M9jfbaIiNZaMIHXAPVSyewEPGL7yyMrbF9u+xejvblOSgcAhwCz6oQxmpWAPy1k28HAhbZP7TjnVbaP6XjP/sAPgROBV3bt/3XgQEmrLexDRUS0WuFKRtIqkr4r6RpJv5H0/H7C7CXJbAFcMo5j7gDcaPt64Gxgz45ty9btsmuArwL/sZBjbA5cOsZ5ZgMn1K/uiukvVInmnYs6gKRDJc2VNPeuP49xtoiIYTFyTaZsJXMU8H+2NwO2BH7TT6g9XZMZp9lU1QX1v50JYKRdthmwO3BcXfkskqRTJF0l6Xv18lrAM4HzbF8HPCppi67dPge8VtJKCzuu7Tm2Z9qeucbKPX++iIjmFUwy9e/NHYGvAdh+2Pa9/YTZS5K5Gti2l4NJWoKqjfUBSTcBnwf2kLRi93ttXwisDqwh6SN1hXN5xzm36XjvflTtt5H214HAqsCN9Xmm09Uyq78h3wLe0kvsERGtMrF22eojXZz6dWjX0TcE7gK+IekySV+VtHw/YfaSZH4GLC3pjSMrJD1H0gtHee+LgXm217M93fb6wMnAvt1vlLQZsARwt+0j6wpnq3rzt4AdJO3dsctyHV/PBnavzzGdKgl2X5cB+AzwJnKrdkRMJRNvl80f6eLUrzldZ1iS6g/9L9neGngAeF8/oY6ZZGwb2A/Ytb6d+GrgQ8Bto7x9NtWdaJ1OBg6qv162o2I5CXit7cdGOeeDwF7AYZJuqG9T/jfgPyVNB54BXNTx/huB+yQ9t+s48+t4lh7rc0ZEtErZC/+3Arfavrhe/i4d3aXx6OkvfNu3Aa9YyLZDRvu6Y92pVLc5Y3uJXgOzfQ1Pvmmg0zqjvH/kG3Bx1/p3A+/u9bwREa1Q8FZk23dI+r2kTW1fC+wC/LqfY6WNFBHRNoMZ8f924JuSlgJuAF7Xz0GSZCIi2qjwyH3blwMzJ3qcJJmIiDZqydxlSTIREW3TwBxk/UqSiYhoo1QyERFRTJJMREQUkXZZREQUlUomIiKKSSUTERFFtOjxy0kyERFtlCQTERHFpF0WERFFpF0WERFFpZKJiIhiUslEREQRaZdFRERRaZdFREQxqWTa5ZFll+SPM57adBh9OX7eq5sOoW9bMq/pEPo2b96WTYcwITNmXNF0CH3TFS35M/7vTPgZYE9oybcgSSYiom1yTSYiIopKkomIiGLSLouIiCLSLouIiKJSyURERDGpZCIiooi0yyIioqi0yyIiophUMhERUYRJJRMREQWlkomIiGKSZCIiooi0yyIioqhUMhERUUwqmYiIKCKDMSMioqgkmYiIKCbtsoiIKKJF7bJpTQewMJK2k3S2pN9KulTSaZKe3fWeeZJO6Fp3jKQ/SFq6Xl5d0k0DDD0iojxP4DVAQ5lkJK0FfBt4v+2NbW8DfBTYqOM9/0AV/46Slu86xGPA6wcVb0TEwC2YwGuAJpRkJL1G0hV1RXG8pPUlnVWvO0vSM+r3HSPpc5IukHSDpAPq9SdJ2rPjeMdI2h94G3Cs7QtGttk+z/b3O05/EHA8cDqwd1donwUOl5R2YERMPSPtsqmcZCRtDhwJ7Gx7S+CdwBeA42zPAL4JfK5jl7WBFwB7AR+r150IHFgfbylgF+DHwObApWOEcCBwEnACMLtr2y3AecCrx/gMh0qaK2nuPfe0pMEZEQGLRbtsZ+C7tucD2L4HeD7wrXr78VRJZcT3bS+w/WtgrXrdT4Cd6+snewDn2n6w+0SSLpb0G0lH1cvPAe6yfTNwFrCNpFW7dvsv4IhFfUbbc2zPtD1ztdWGsnMYETG6qV7JAGLsnNi5/W9d+2L7IeBsYDeqyuTEevvVwDaPH8R+LvD/gJXrVbOBzeoL+tcDKwH7P+nE9u+Ay4FX9PZxIiJaYiJVTIsqmbOAV0h6KoCk1YALgFfW2w+malmN5UTgdcA/Aj+t1x0NHCJp+473LVefZxrwcmCG7em2pwP78PctM4CPAO8Zx2eKiGiHllQyfV8Yt321pI8A50h6DLgMeAfwdUlHAHdRJY+xnA4cB5xq++H62HdIOhD4uKR1gDuB+cCHgR2BP9j+Q8cxzgWeJWntUWK8lI6qKCJiSmjJZeQJ3X1l+1jg2K7VO4/yvkO6llfo+PoR4Kmj7HMR8MKFnPp5Xe99jOrGAoDuc71sIceIiGinTPUfERFFLQ6VTERENCSVTEREFNGiucuSZCIi2qglSSYjECMi2mgA42QkLSHpMkk/6jfMVDIREW0zuHbZO4HfUA1470sqmYiINipcyUhaF3gJ8NWJhJlKJiKijSZWyawuaW7H8hzbc7re81ngX4AVJ3KiJJmIiLaZeLtsvu2ZC9soaS/gTtuXSHrRRE6UJBMR0UZlx8nsAOxdP+9rGWAlSf9r+1XjPVCuyUREtFHBCTJt/6vtdesJiF8J/KyfBAOpZCIi2ikj/iMioogBjvi3fTbVc7/6kiQTEdFGLRnxnyQTEdFGaZdFREQRmSAzIiKKSiUTERHFtKSSkd2SdFiYpLuAmwueYnVgfsHjl5TYm5HYm1Ey9vVtrzHRg8xcSp67Vv/761YuWdSI/8mUSqY2Gf/hF0XS3EH9R51sib0Zib0ZrYm9JfVBkkxERBu1pF2WJBMR0TbjfPhYk5JkBqd7Gu02SezNSOzNaEfsLalkcuE/IqJlZj5FnrtK//trfi78R0TEwqRdFhERRbWkXZbnycTfUWW9puOIiEXwBF4DlEqmAEnPAX5v+456+TXA/lSDPT9k+54m4xuLbUv6PrBt07H0StIzFrXd9i2DiiWiuMxdttj7CvBiAEk7Ah8D3g5sRXXnygGNRda7iyQ9x/avmg6kR6dR/a+njnUG1gDWBJZoIqheSPrAIjbb9n8MLJhxknQ/T/xtPPK9N9XvlqVsD+3vGEk38uS/69WxbNsbDT6qcUiSWawt0VGtHAjMsX0ycLKky5sLa1x2Ag6TdBPwAPX/gLZnNBrVQth+dueypOnAe6mS/X81EdM4PDDKuuWAfwKeCgxtkrG9YueypBWBtwBvAk5pJKjedd9dNQ14BfAe4LLBhzNOufC/WFtC0pK2HwV2AQ7t2NaW7/keTQfQD0kbA0cCzwU+DbzD9iPNRrVotj898nX9S/qdwOuBE6k+w9CTtArwLuA1wLeA59i+u8mYxjISn6RpwKuBI4DLgZfY/nWDoY0t7bLF3gnAOZLmAw8CvwCQ9Ezgz00G1ivbN0t6AbCx7W9IWgNYoem4FkbSFlTJZXPgE8AbbD/WbFS9k7Qa8G7gYOBYYBvbf2o2qrFJWh34Z6qK/evA1rZb8TMu6SlUyfxw4DxgH9vXNxvVOLSkkslgzEIkPQ9YGzjd9gP1uk2A5W0PfSku6YNU7YRNbW8i6enAd2zv0HBoo5L0GPB7qmszf5dcbL9j4EH1SNIngZdRXa872vZfGg6pZ5IeAO4CvgHc373d9mcGHlSPJN0KPAp8Fvi7G0Nsf2/QMfVq5jR57lP6318PZzBm69m+qHNZ0vLAdsBs4CWNBDU++wFbA5cC2L6tbuUMq9c3HcAE/DPwN+DfgCOlx+9dGLkOtlJTgfXgkzzxN3X3z8ew/wV7JlWMW9avTgaGNsmkXRYASFoK2BM4CNgdOBn4cqNB9e7h+lZmw+NJcmjZPna09ZKWAV464HDGxXZrx6vZ/tDCttW38g8t24csbJukCTytZUCGPYXXWvvDPcwk7Srp68CNVLcrHw/cY/t1tn/YbHQ9+7akrwCrSHoj1V99X204pp5IWkLSHpKOoxqbdGDTMY2XpOUlHSzptKZjGQ9Jz5L0YUm/Bb7UdDzjIWllSa+XdCZ1BT/UFkzgNUCpZMr4KdXF/hfYvhFA0lHNhjQ+tj8laVfgPmBT4AO2z2g4rEWqxyQdRNWO/CWwA7CB7b82GliP2lr5Slqfqg08m+oax/rATNs3NRlXLyQtC+xN9T3fhqrlty9wboNh9aYllUySTBnbAq8EzpR0A9WtqEM7GHA0kj5u+73AGaOsGzr1RdxbqP56PsL2/ZJubEOCqZP5bGA34OdUle92tl/XaGA9kHQBsDLVz/gBtn9bf99vajaysUn6JrAjcDrwBeBnwO9sn91kXL24BH6q6jHR/RrYo7GTZAqo7x67DHivpB2ofoEsJeknwCm22/C8il2pBjN22mOUdcPiZKq/QA8EHpP0A1rzt16rK9+7gHWBtahmV/gt7fm+bwH8CfgNcI3tx0auQQ4727s3HUOvcgvzgNQDvl4MvNH2y5uOZ2EkvZlqxPaGQOeYgRWB822/qpHAeqDqtqydqJL6nlR/Yb8BOG2YbwuWtDVV5XsAMFL5fsD2+o0G1iNJK1PNzTcbeCawCrCb7V82GVcvJG1G1So7ELgT2Ax49si8gzFxSTKFSFqHapzMFbYflrQm1YjoQ2w/vdHgFqH+hbEq8FHgfR2b7h/2iT071QPtdqf6xTfL9kRaCwPTUfnuTzX6vC2VL/D4XVkHUiXN9Wy3ZjZvSTOpEs4BwK22t284pCkhSaYASe+iGn3+O2Bp4CjgM8BxwCds395cdONTJ8dlRpaHdTZjSfsA69o+ul6+mGpiTKiqguMbC64PHZXv7DZcmxmNpPVt39x0HONVV8Q72j6n6VimglyTKeNQqpHy99RT0P+O6of2ojH2GxqSXkqVGJ9O1UZYn6p3vXmTcS3Cv1D99TxiaaoZC5anGo0+tElG0hLAsiMtvXq2iKWAh4ChnakAoJ56aEPbx9XL3wVWqzf/J9Ut5ENJ0ubARrZPrZf/m6rFCtWNADEJMk6mjIdGWkv1X/7XtSnB1P4TeB5V7BtQTfR5frMhLdJStn/fsXye7bvr7/9QDyQFPk51HWzECVSTNf4/qop4mP07MLdjeVOq2D9ElfiH2cd48l1Wu1FNS/RzYFGPX4hxSCVTxrqSPtexvGbn8jDPo9XhEdt3S5omaZrtn0v6eNNBLcKqnQu239axuMaAYxmvXYDO0fH32n5p3bb5RUMx9WqlrhmLf2v7EgBJH20opl6tbfuCjuX76kdyIOlNDcU05STJlHFE1/IljUQxMfdKWoHql9w3Jd1JNdBuWF0s6Y22/6dzZf3LYtjvcppWPxZixHvh8SeUDu3M17VVOhdsv6xjcdinZnnSXGu2n9exuCYxKZJkypgHzHO776rYh+oxBe+imn5+ZeDDTQY0hsOB70s6iCemBNmW6trMvk0F1aOlJK1o+34A26fD43f6LbPIPZt3jaSX2H7S9DeS9gKubSimXt0m6bm2L+5cWV8Tu62hmKac3F1WgKS5wAZUv+zOBy4ALrJ9X6OBjVM9XcjGts+UtBzVEz//bjr3YSJpZ564OeFq2z9rMp5eSHo31Z1kh43cvVd/778EnNX5ULNhUz8j6TSqn/HO5L49sJft65qKbSyStgNOAo7hybG/FjiwDeN82iBJppD6l/J2VP+zbU/Vc7+DakDjWxa17zCoJ8U8FFjN9kb1Eye/bHuXhkObkiQdBryf6iYFUz2S+WO2h36SSUlLU1W7jyd34Fu2H2ouqt7Ut+i/jSfHfrTtPzYX1dSSJFNYPUX+86gma3wNVf99w2ajGpuky6mS5MW2t67XXWn72Y0GNoVJ2pDqdnGNVIySNhiZaibKkLQf8GPbf2s6lqkotzAXIOkgSV+QdB5wKtU8YFdSzU019Amm9jfbD48sSFqS9sxJ1Vbftf2XrpbkdxuLpk+Shn+a/CfbG7hO0vGSXlL/rMckyTezjDnANVTTtJ87zH3pRThH0vuBZetZgt8CtOVZOK1Sz5+1OdWzezrvzlqJ4b/wPxqN/ZbhYft19TREe1BNK/NFSWfY/qeGQ5sSkmTKWJnqca7bAx+StClwO3AhcGEbLkZTzVv2BqoK7E3Aj2nJQ8taaFNgL6qfm7144pf0/UAbf9G16kFrALYfqWdJN7As1d2VbfzeD51ckxmAetLAA6hus93AdiueLVM/RGszqv/xru1sn8Xkk3Q68Arb99bLqwKftv36RgMbJ0mrA3e35RZ+SbtTTUm0E3A21R1np3eNXYo+pZIpQNIMnrirbHuqeaguBD7PcE/N8jhJL6Fq911P9Zf1BpLeZPsnzUY2pa0xkmAAbP+pfgzA0KrHlHwMuAf4D6o54lYHpkl6je3/azK+Hh1C9XiFN+Xi/+RLJVNAfeFzZHzMBS2difYaqnEOv6uXN6J6LstmzUY2dUmaB7zI9p/q5dWAc4b5jr56TNj7qVp9c4A9bF9UX2c6YeTOxFh8pZIpwPY2I19LWkrSFvXitbYfaSis8bpzJMHUbqC6vTbK+TRwQT2TsYFXAB9pNqQxLdkxQ8GHRyaCtX1NNfXa8Ktvtvg41VQyql+2vVKjgU0RSTIFSXoRcCxwE9UP7nqSXmv73AbD6tXVkn4MfJvqF97LgV+N3P1k+3tNBjcV2T6urgx2pvp5eVnX5JPDaEHH1w92bWtLm+QTwEtt/6bpQKaitMsKknQJcJDta+vlTahaCNs2G9nYJH1jEZvdtovRUYakx6hmJxDVXVl/HdkELGP7KU3F1itJ59veoek4pqokmYIkXWF7xljrIqI5ko4CngZ8H3j8wn+q9cmREf9lXSLpa5JeVL/+h5ZM+y9pE0lnSbqqXp4h6d+ajiuGn6TlJR0sqS3jZVaiqsBmAS+tX3s1GtEUkkqmoHriwLcCL6BqH5wLfLENt0lKOofquThf6Zi77CrbWyx6z1gc1WOq9qQaMb87cDLwPduZJWIxlwv/hUiaBlxS/1L+TNPx9GE527/sukMog9PiSeoph2ZTPbr451TjZLaz/bpGAxsHSetSjWHbgepmhfOAd9q+tdHApoi0ywqxvQCYJ+kZTcfSp/n12BgDSDqAamqciE4/BTaimvz1VXXlsmCMfYbNN6gmsn06sA7VHH2LuvElxiGVTFlrU90K/EuqO3AAsL13cyH17K1Ug+s2k/QH4EaqZ4ZEdNqWakqWMyXdQDVyvhXTJnVYw3ZnUjlG0ruaCmaqyTWZgiS9cLT1ts8ZdCz9qp+HM41qDMSBtr/ZcEgxpCTtQNU62x+4HDjF9pxGg+qBpDOpno55Qr1qNvC6PKBvciTJFCBpGeAw4JlUsxh/rS2T7UlaiaqKWQf4AXBmvfweYJ7tfRoML4aMpNNtz+paN43qGUqvbMO1mbql/QXg+VTt4QuAd4w8CjsmJkmmAEknAY8Av6B6RsXNtt/ZbFS9kfQD4E9UE3ruAqxKNcHnO21f3mBoMYQkXdb2+ckkHQu8q2vOuE9lwPHkyDWZMp41MqmhpK8Bv2w4nvHYsCP2rwLzgWd0Pa0xYsTKXQ9ae5KWDGicMZJgAGzfM+yzX7dJkkwZj0+CafvRtkwUWOuM/TFJNybBxCJ0P2itk4E2JJlpklbtqmTyu3GS5BtZxpaS7qu/FtUjjO+jHbO7tjn2GLybp0BbqY2zX7dGrslERN8kPQDMsn1+1/p/BG6zfX0zkY2PpGfxxOzXZ7Vg9uvWSCUTERNxMTBaO/VB4LNU84ANvTqpJLEUkBH/ETERa9q+onul7bnA9MGHE8MmSSYiJmKZRWxbdmBRxNBKkomIifiVpDd2r5T0BlryWIsoKxf+I6JvktYCTgEe5omkMpNqAO9+tu9oKrYYDkkyETFhknYCRp41dLXtnzUZTwyPJJmIiCgm12QiIqKYJJmIiCgmSSYiIopJkomIiGKSZCIiopj/D2RehSrKIZgjAAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "KNN - f1 score\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "KNN - cohens kappa score\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZkAAAF6CAYAAADLdSXiAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAAsTAAALEwEAmpwYAAAp/klEQVR4nO3debyuc73/8dd7K/NYG0mykThIhp2KDhkyJSqirY4MJ2mUigb9qtM5nUrDSXP7lNApFMkudRIZMtbG3oaiYiOlwyaRyPT+/XFdi9tt7TXca33v677Wfj8fj/ux13Xd1/C5l2V91uc7XbJNRERECdOaDiAiIqauJJmIiCgmSSYiIopJkomIiGKSZCIiopgkmYiIKCZJJiIinkDScZJul3TNMO+9R5IlTR/LtZJkIiKi2/HArt07Ja0FvAy4ZawXSpKJiIgnsH0BcNcwb/0XcBQw5ln8STIRETEqSXsCf7Q9fzznPaVQPBERUYi0q2HhBK5w+bXAAx07Ztuevej7aVngaGDn8d4pSSYionUWMm3aL3s++9FHl3jA9sxxnLIesA4wXxLAs4ArJG1l+88jnZgkExHROmbatEd7PvvRcZ5q+2pgtaFtSTcBM22PWk6lTyYiomUkkNzza/Tr6yTgEmADSbdKOqTXWFPJRES00EQqmdHYnjXK+zPGeq0kmYiI1plYc1k/JclERLTMUHNZGyTJRES0UCqZiIgoJpVMREQUIaVPJiIiCkqSiYiIQsY232UQJMlERLSMlEomIiIKSiUTERGFpOM/IiIKSXNZREQUleayiIgoJM1lERFRUCqZlpGmG2Y0HcZiZ6WV7m46hJ799a8rNx3ChCy11AOjHzSgnvGMER/GOLDuvPNv3HvvA5roddIn00ozgLlNB7HY2W67OU2H0LM5c/ZsOoQJmTHj+qZD6NlRRx3TdAg9+ehHz5ikK6W5LCIiCkpzWUREFJHmsoiIKCqVTEREFJI+mYiIKCTNZRERUVSayyIiopA0l0VERCFSKpmIiCgolUxERBSS5rKIiCgkzWUREVFUKpmIiCjEqWQiIqKMTMaMiIiikmQiIqKQNJdFREQhbWoumzaRkyU9ImmepGskfU/SsuM490pJm9VfP0XSfZJe3/H+5ZK2kHSgpDvq+1wn6Yiu62wuyZJ26dp/tKRrJV1Vn/vCiXzWiIhBIrnnVz9NKMkA99vezPYmwIPAYZ1vSlpihHMvBrauv34+cP3QtqTlgHWB+fX7p9jeDNgGOFrSWh3XmQVcWP87dN8XA3sAW9jeFNgJ+EMvHzAiYvBUkzF7ffXTRJNMp18Az5H0UknnSvoOcLWkpSV9U9LVdfWyfX38RTyeZLYGvgpsVm9vBVxh+5HOG9i+E/g9sAaAJAH7AAcCO0tauj50DWCh7X/U5y20/adJ/KwREY0Zai5bbJKMpKcAuwFX17u2Ao62vRHwVgDbz6OqNk6ok0FnJbM1cAHwD0kr1NsXDXOfZwNLA1fVu7YBFti+ATgP2L3efxawlqTfSvqypO0m43NGRAyKxaW5bBlJ84C5wC3AN+r9v7S9oP76JcC3AGxfB9wMPNf2TcCSkp4BbEjVXPYr4IVUSebijvvsJ+la4EbgWNsP1PtnASfXX59cb2P7b8CWwKHAHcApkg7sDl7SoZLmSppbHRYR0QbtaS6b6Oiy++u+ksdULVjc17lrhPMvoWruus22JV1KVZ1sBVzacdwptt9W97WcKeknVFlhb2BPSUfX93m6pBVs31s3tZ0HnCfpauANwPGdN7c9G5hdxT2zHeMBIyJoz9plk9knsygXAK8DkPRc4NlUVQtUTWJHUCUb6n8PAP5s++7uC9m+hKoqOpyqM3++7bVsz7C9NnAa8EpJG0hav+PUzagqqIiI1mtTn0w/5sl8GfhqXU08DBw41CFPlWT+izrJ2L6tHpF28bBXqnwSuAJ4LnB613unAW8Gfg18QdLK9T1/T9V0FhExBZRd6l/ScVQjdG+vRw8j6VPAK6hGEt8AHDRcMdBtQknG9vLD7DuPqplqaPsBqtFfw53/K7qa02zP6No+no5mrnqU2DMWcb05wJx6c+vhjomImAoKN5cdD3wROLFj38+A99t+WNIngfcD7x3tQpnxHxHRMqVn/Nu+QNKMrn1ndWxeStWfPqokmYiIFmq44/9g4JSxHJgkExHROhPuk5leTd14zOx6tO2o6tG8DwPfHsvxSTIRES0zCc1lC23PHP999QaqAQE72h5TKZUkExHRQv1uLpO0K1VH/3a2/z7W85JkIiJaRio+hPkk4KVUzWq3Ah+mGk22FPCzetL9pbYPW+RFakkyEREtVLKSsT1rmN3fGGbfqJJkIiJaqC0PLUuSiYhomdLNZZMpSSYiooXaskBmkkxERAulkomIiEL6//CxXiXJRES0TOm1yyZTkkxEROuk4z8iIgpKc1lERBSR5rKIiCgqlUxERBSSPpnW2ZLLmfvEJ0G3hmjHXzTDOWOvvZoOoWd7cUbTIUzIcccd3HQIPXv6wXc2HUJPvnz35FwnzWUREVFUmssiIqKQNJdFREQhUiqZiIgoKJVMREQUkuayiIgoJM1lERFRVCqZiIgoJEv9R0REIZmMGRERRSXJREREIWkui4iIQtJcFhERRaWSiYiIQjIZMyIiCklzWUREFJXmsoiIKCTNZRERUVAqmYiIKKJNfTLTJnKypEckzZN0jaQfSlp5kuIa7b4rS3pLP+4VETF4quayXl/9NKEkA9xvezPbmwB3AW+dhJjGYmVgXElGlYl+3oiIgSC551c/TeYv3UuANQEkrSfpfyVdLukXkjas9x8v6av1vt9K2qPev4SkT0n6laSrJL2p3r+8pHMkXSHpakl71ff6BLBeXUV9qj72yI7z/63eN0PSbyR9GbgCWGsSP29ERCOGmsvaUMlMSp+MpCWAHYFv1LtmA4fZ/p2kFwJfBnao35sBbAesB5wr6TnAAcBfbb9A0lLARZLOAv4AvMr2PZKmA5dKmgO8D9jE9mb1/XcG1ge2AgTMkbQtcAuwAXCQ7TSvRcSUsbh0/C8jaR5V4rgc+Jmk5YGtge9JGjpuqY5zvmv7UeB3km4ENgR2BjaVtE99zEpUSeNW4D/rhPEoVaW0+jBx7Fy/rqy3l6/PvwW42falwwUv6VDgUIBnj+tjR0Q0afEZwny/7c0krQT8iKpP5njg7qEqYxjd6ddU1cfbbf+08w1JBwKrAlvafkjSTcDSw1xTwMdtf63r/BnAfYsK3vZsqqqLmW35syAiFnuLzeiyIbb/CrwDeA9wP7BA0mvgsQ7353cc/hpJ0yStB6wLXA/8FHizpKfW5zxX0nJUFc3tdYLZHli7vsa9wAod1/wpcHBdRSFpTUmrTcZni4gYRG3p+J+0eTK2r5Q0H3gt8DrgK5I+CDwVOBmYXx96PXA+VbPXYbYfkPR1qia3K1S1sd0BvBL4NvBDSXOBecB19b3ulHSRpGuAn9g+UtI/AZfUTXR/A14PPDJZny8iYnAsJs1ltpfv2n5Fx+auizjtIttHdJ33KPCB+tXtxYu49/5d28cCxw5z6CaLiCMiopXa1FyWGf8RES3Ulm7kviYZ2wf2834REVNT2eYySccBe1D1iW9S73sacApV18ZNwL62/zLatTIDPiKiZaTiHf/H8+Quj/cB59heHzin3h5VkkxERAuVnPFv+wKqpcI67QWcUH99AtXgrFGlTyYionUm3Fw2vR61O2R2PW9wJKvbvg3A9m1jnSaSJBMR0TJDzWUTsND2zMmKZyRJMhERLdTAEOb/k7RGXcWsAdw+lpPSJxMR0Tq9d/pPoAKaA7yh/voNwBljOSmVTEREy5SejCnpJOClVH03twIfpnrEynclHUK1+PBrxnKtJJmIiBYqmWRsz1rEWzuO91pJMhERrdP/hS57lSQTEdEyWbssIiKKSiUTERGFLCZL/UdERP+luSwiIopKc1lERBSS5rKIiChkEtYu65skmSErAds1HURvvrHXIU2H0DMd0o7/UYZz1FHHNB3ChBx88HFNh9CzM47aq+kQenP95F0qlUxERBSS5rKIiCgkzWUREVFUKpmIiCgka5dFREQhmYwZERFFJclEREQhaS6LiIhC0lwWERFFpZKJiIhCMhkzIiIKSXNZREQUleayiIgoJM1lERFRUCqZiIgoIn0yERFRUJrLIiKioDSXRUREEWkui4iIolLJREREIe3pk5nWdAAjkbS6pO9IulHS5ZIukfSqjvePlfRHSdM69h0o6VFJm3bsu0bSjD6HHxFRxFBzWa+vfhrYJCNJwA+AC2yva3tL4LXAs+r3pwGvAv4AbNt1+q3A0f2LNiKivyT3/OqngU0ywA7Ag7a/OrTD9s22v1Bvbg9cA3wFmNV17o+AjSVt0JdIIyL6yqlkJsHGwBUjvD8LOAk4HdhD0lM73nsUOAb4wEg3kHSopLmS5t7x4ETDjYjoDymVzKST9CVJ8yX9StKSwO7AD2zfA1wG7Nx1yneAF0laZ1HXtD3b9kzbM1ddslzsERGTrS2VzCCPLrsW2Htow/ZbJU0H5gK7AisBV1ddNywL/B04s+P4hyV9BnhvP4OOiCgvo8smw8+BpSW9uWPfsvW/s4B/tT3D9gxgHWBnSct2XeN4YCdg1cKxRkT0TZrLJoFtA68EtpO0QNIvgROADwO78MSq5T7gQuAVXdd4EPg8sFqfwo6I6Is0l00C27dRDVvudsIwx766Y/P4jv2fp0o0ERFTRP8rkl4NdJKJiIgny9plERFRVFuSzMD2yURExKL03uk/1mY2SUdIurZeluskSUv3EmmSTEREy5Reu0zSmsA7gJm2NwGWYPj+8VGluSwiooX60PH/FGAZSQ9RTR/5U68XiYiIVpnwZMzpkuZ2bM+2Pfuxq9t/lPRp4BbgfuAs22f1cqMkmYiIlpmE0WULbc9c9PW1CrAX1UT3u4HvSXq97f8Z743SJxMR0UKFO/53AhbYvsP2Q8D3ga17iTOVTERE6xRfu+wWqgWGl6VqLtuRat3IcUuSiYhomaG1y0qxfZmkU6ket/IwcCUwe+SzhpckExHRQqUnY9r+MNVakROSJBMR0TrtWeo/SSYiomVKN5dNpiSZiIgWSiUTERHFpJKJiIgipPTJREREQUkybfMAcH3TQfTm4DOOazqEnh18VHtj1zHtaK5YFC9U0yH0bnrTATQvzWUREVFOO3JMkkxERCslyURERBEG2tElkyQTEdFKSTIREVFMmssiIqKINJdFRERRqWQiIqKYVDIREVFEmssiIqKoNJdFREQxqWQiIqIIk0omIiIKSiUTERHFJMlEREQRaS6LiIiiUslEREQxqWQiIqKITMaMiIiikmQiIqKYljSXTWs6AABJr5S0Ude+d0m6TtLVkuZL+qykp3a8v7kkS9ql6zxL+kzH9nskfaT4h4iI6Jeh5rJeX300EEkGeCXwWJKRdBiwM/Ai288DXgDcDizTcc4s4ML6307/AF4taXrJgCMiGuUJvPqokSQj6QBJV9UVys+APYFPSZonaT3gaODNtu8GsP2g7U/Yvqc+X8A+wIHAzpKW7rj8w8Bs4Ij+faKIiD5LJTM8SRtTJZEdbD8f2A+YAxxpezOqimV52wtGuMw2wALbNwDnAbt3vf8l4HWSVhollkMlzZU0945Hevo4ERH9l+ayEe0AnGp7IYDtu7reFx0FnaRd6grnJklb17tnASfXX59MV5NZXfGcCLxjpEBsz7Y90/bMVZfo+fNERPRfmssW6QlJpFudIO6TtE69/dO6wrkGWFLSEsDewIck3QR8AdhN0gpdl/occAiw3GR/gIiIxqWSWaRzgH0lPR1A0tOAe4HOJPFx4CuSVq6PETDU77ITMN/2WrZn2F4bOI1q8MBj6grpu1SJJiJiakklMzzb1wIfA86XNB/4LFWT15GSrqw7/r8CnA1cJukq4CLgyvo1Czi967KnAfsPc7vPABllFhFTS4v6ZBqZjGn7BOCErt0bdW1/un51O3CY682hGjyA7eU79v8fsOxEYo2IGEiZ8R8REcW0ZMZ/kkxERNtkgcyIiCgqlUxERBTTkkpmUNYui4iIserD6DJJK0s6tV6o+DeSXtxLqKlkIiLaqHxz2bHA/9reR9KS9DhSN0kmIqKNCjaXSVoR2JZ6yojtB4EHe7lWmssiItpmIrP9x1YBrQvcAXyzniT/dUk9LdGVJBMR0UYT65OZPrQCff06tOvqTwG2AL5ie3PgPuB9vYSZ5rKIiDaaWHPZQtszR3j/VuBW25fV26fSY5JJJRMR0TaFm8ts/xn4g6QN6l07Ar/uJdRUMhERbVR+nszbgW/XI8tuBA7q5SJJMhERbVR4CLPtecBITWpjkiQTEdE2WbssIiKKSpKJiIhiskBmREQUkeayiIgoKpVM9M1xTQcwAQc3HUDvFi6c3nQIE6LpLfktNQzvqaZD6M35k3itVDIREVFEmssiIqKolhSiSTIREW2USiYiIopJJRMREUWkTyYiIopKkomIiGLSXBYREUWkuSwiIopKkomIiGLSXBYREUWkuSwiIopKJRMREUWkkomIiKKSZCIiopg0l0VERBFpLouIiKJSyURERDGpZCIioogWNZdNG8tBkp4h6WRJN0j6taRzJf1d0jxJd0laUH99dn385pIsaZeu6zxSHzdf0hWSth7hnutL+lF9z8vre27bdcwZki7p2veROrbVOvb9bSyfMyKiNTyBVx+NmmQkCTgdOM/2erY3Ao4AdrG9GTAHONL2ZrZ3qk+bBVxY/9vp/vq45wPvBz6+iHsuDZwJzK7vuSXwdmDdjmNWBrYAVpa0TtclFgLvHu2zRUS01qMTePXRWCqZ7YGHbH91aIftebZ/MdzBdVLaBzgQ2LlOGMNZEfjLIt57HXCJ7Tkd97zG9vEdx+wN/BA4GXht1/nHAftJetqiPlRERKtNlUoG2AS4fBzX3AZYYPsG4Dxg9473lqmby64Dvg78+yKusTFwxSj3mQWcVL+6K6a/USWaw0e6gKRDJc2VNPeOR0a5W0TEoBjqk5kilcx4zaKqLqj/7UwAQ81lGwK7AifWlc+IJJ0u6RpJ36+3VweeA1xo+7fAw5I26Trt88AbJK24qOvanm17pu2Zqy4x5s8XEdG8KZRkrgW2HMvFJC1B1Yz1IUk3AV8AdpO0Qvexti8BpgOrSvpYXeHM67jnFh3Hvoqq+W2o+Ws/YBVgQX2fGXQ1mdm+G/gO8JaxxB4R0SpTqLns58BSkt44tEPSCyRtN8yxOwHzba9le4bttYHTgFd2HyhpQ2AJ4E7bR9cVzmb1298BtpG0Z8cpy3Z8PQvYtb7HDKok2N0vA/BZ4E1kqHZETCVTqbnMtoFXAS+rhxNfC3wE+NMwh8+iGonW6TRg//rrZToqllOAN9h+Um+I7fuBPYDDJN1YD1P+IPAfkmYAzwYu7Th+AXCPpBd2XWdhHc9So33OiIhWaUklM6a/8G3/Cdh3Ee8dONzXHfvmUA1zxvaYez5sX8cTBw10WnOY44ea1y7r2v8u4F1jvW9ERCu0ZDJmmpEiItqmRTP+k2QiItooC2RGREQxqWQiIqKIBjrwe5UkExHRRqlkIiKimJYkmRLLykREREkTmSMzjmY2SUtIulLSj3oNNZVMREQb9aeSORz4DdWq+T1JJRMR0UaFKxlJzwJeTrVifs9SyUREtE1/JmN+DjgKeNICx+ORSiYioo0mtkDm9KFnadWvQzsvLWkP4Hbb43mW2LBSyUREtNHE5skstD1zhPe3AfaUtDuwNLCipP+x/frx3iiVTERE2xRe6t/2+20/q36UymuBn/eSYCCVTEREO2XGf0REFNOnyZi2zwPO6/X8JJmIiLbJUv8REVFUmssiIqKYVDIt8wyqaUcttNfBZzQdQs+OOuqYpkPo2UumX9h0CBOy555zmg6hZ5rTkj/jn2SkUcPj1JJvQZJMRETbpE8mIiKKSpKJiIhi0lwWERFFpLksIiKKSiUTERHFpJKJiIgi0lwWERFFpbksIiKKSSUTERFFmFQyERFRUCqZiIgoJkkmIiKKSHNZREQUlUomIiKKSSUTERFFZDJmREQUlSQTERHFpLksIiKKaFFz2bSmA1gUSVtJOk/S7yRdIelMSc/rOma+pJO69h0v6Y+Slqq3p0u6qY+hR0SU5wm8+mggk4yk1YHvAh+wvb7tLYCPA+t1HPNPVPFvK2m5rks8Ahzcr3gjIvru0Qm8+mhCSUbSAZKuqiuKb0laW9I59b5zJD27Pu54SZ+XdLGkGyXtU+8/RdLuHdc7XtLewNuAE2xfPPSe7Qtt/6Dj9vsD3wLOAvbsCu1zwBGS0hwYEVPPUHPZVE4ykjYGjgZ2sP184HDgi8CJtjcFvg18vuOUNYCXAHsAn6j3nQzsV19vSWBH4MfAxsAVo4SwH3AKcBIwq+u9W4ALgX8Z5TMcKmmupLl3/G2Uu0VEDJLFoLlsB+BU2wsBbN8FvBj4Tv3+t6iSypAf2H7U9q+B1et9PwF2qPtPdgMusH1/940kXSbpN5KOrbdfANxh+2bgHGALSat0nfafwJEjfUbbs23PtD1z1eXH9dkjIpo11SsZQIyeEzvf/0fXudh+ADgP2IWqMjm5fv9aYIvHLmK/EPh/wEr1rlnAhnWH/g3AisDeT7ix/XtgHrDv2D5ORERLTKSKaVElcw6wr6SnA0h6GnAx8Nr6/ddRNVmN5mTgIOCfgZ/W+74EHChp647jlq3vMw14DbCp7Rm2ZwB78eQmM4CPAe8Zx2eKiGiHllQyPXeM275W0seA8yU9AlwJvAM4TtKRwB1UyWM0ZwEnAnNsP1hf+8+S9gM+KWlN4HZgIfBRYFvgj7b/2HGNC4CNJK0xTIxX0FEVRURMCS2ZJzOh0Ve2TwBO6Nq9wzDHHdi1vXzH1w8BTx/mnEuB7RZx6xd1HfsI1cACgO57vXoR14iIaKcs9R8REUUtDpVMREQ0JJVMREQU0aK1y5JkIiLaKEkmIiKKSXNZREQUkeayiIgoKpVMREQU05JKZiCfJxMRESMovNS/pLUknVsvTHytpMN7DTWVTEREG5VtLnsYeLftKyStAFwu6Wf1KvrjkiQTEdFGBZvLbN8G3FZ/fa+k3wBrAkkyERGLhT51/EuaAWwOXNbL+UkyERFtM/EhzNMlze3Ynm17dvdBkpYHTgPeafueXm6UJBMR0UYTSzILbc8c6QBJT6VKMN+2/f1eb5QkExHRRgWbyyQJ+AbwG9ufnci1MoQ5IqJtCg9hBrYB/gXYQdK8+rV7L6GmkomIaKOClYztCwFNxrWSZCIi2qglM/5lt2QBnMIk3QHcXPAW04GFBa9fUmJvRmJvRsnY17a96kQvMnNJee7qvZ+vW7l8tI7/yZJKpjYZ/+FHImluv/6jTrbE3ozE3ozWxN6S+iBJJiKijVrSXJYkExHRNiaVTDzJk2bTtkhib0Zib0Y7Ym9JJZOO/4iIlpn5VHnuyr2fr4Xp+I+IiEVJc1lERBTVkuayLCsTT6LKWk3HEREj8ARefZRKpgBJLwD+YPvP9fYBwN5Ukz0/YvuuJuMbjW1L+gGwZdOxjJWkZ4/0vu1b+hVLRHETX+q/b5JkyvgasBOApG2BTwBvBzajGrmyT2ORjd2lkl5g+1dNBzJGZ1L9r9e53pKBVYHVgCWaCGosJH1ohLdt+9/7Fsw4SbqXx/82Hvrem+p3y5K2B/Z3jKQFPPHvenVs2/Z6/Y9qHJJkFmtLdFQr+1E9EOg04DRJ85oLa1y2Bw6TdBNwH/X/gLY3bTSqRbD9vM7t+ml+76VK9v/ZREzjcN8w+5YF/hV4OjCwScb2Cp3b9fPg3wK8CTi9kaDGrnt01TRgX+A9wJX9D2ec0vG/WFtC0lNsPwzsCBza8V5bvue7NR1ALyStDxwNvBD4DPAO2w81G9XIbH9m6Ov6l/ThwMHAyVSfYeBJWhl4J3AA8B3gBbbvbDKm0QzFJ2ka1bL2RwLzgJfbHvez7PsqzWWLvZOA8yUtBO4HfgEg6TnAX5sMbKxs3yzpJcD6tr8paVVg+abjWhRJm1All42BY4BDbD/SbFRjJ+lpwLuA1wEnAFvY/kuzUY1O0nTg3VQV+3HA5rZb8TNeP/nxYOAI4EJgL9s3NBvVOLSkkslkzEIkvQhYAzjL9n31vucCy9ke+FJc0oepmhM2sP1cSc8Evmd7m4ZDG5akR4A/UPXNPCm52H5H34MaI0mfAl5N1V/3Jdt/azikMZN0H3AH8E3g3u73J/pUxZIk3Qo8DHwOeNLAkIk8cri0mdPkuU/t/Xw9mMmYrWf70s5tScsBWwGzgJc3EtT4vArYHLgCwPaf6qacQXVw0wFMwLuBfwAfBI6unnwLPN4PtmJTgY3Bp3j8b+run49B/wv2bKoYn1+/OhkY2CST5rIAQNKSwO7A/sCuwGnAVxsNauwerIcyGx5LkgPL9gnD7Ze0NPCKPoczLrZbO1/N9kcW9V49lH9g2T5wUe9JmsDTWvpk0FN4rbU/3INM0sskHQcsoBqu/C3gLtsH2f5hs9GN2XclfQ1YWdIbqf7q+3rDMY2JpCUk7SbpRKq5Sfs1HdN4SVpO0uskndl0LOMhaSNJH5X0O+ArTcczHpJWknSwpLOpK/iB9ugEXn2USqaMn1J19r/E9gIAScc2G9L42P60pJcB9wAbAB+y/bOGwxpRPSdpf6rmyF8C2wDr2P57o4GNUVsrX0lrUzUDz6Lq41gbmGn7pibjGgtJywB7Un3Pt6Bq8nslcEGDYY1NSyqZJJkytgReC5wt6UaqoagDOxlwOJI+afu9wM+G2Tdw6k7cW6j+ej7S9r2SFrQhwdTJfBawC3AuVeW7le2DGg1sDCRdDKxE9TO+j+3f1d/3m5qNbHSSvg1sC5wFfBH4OfB72+c1GddYXA4/VfWY6F717dHYSTIF1KPHrgTeK2kbql8gS0r6CXC67TY8r+JlVJMZO+02zL5BcRrVX6D7AY9IOoPW/K3X6sr3DuBZwOpUqyv8jvZ83zcB/gL8BrjO9iNDfZCDzvauTccwVhnC3Cf1hK+dgDfafk3T8SyKpDdTzdheF+icM7ACcJHt1zcS2BioGpa1PVVS353qL+xDgDMHeViwpM2pKt99gKHK90O21240sDGStBLV2nyzgOcAKwO72P5lk3GNhaQNqZrK9gNuBzYEnje07mBMXJJMIZLWpJonc5XtByWtRjUj+kDbz2w0uBHUvzBWAT4OvK/jrXsHfWHPTvVEu12pfvHtbHsiTQt901H57k01+7wtlS/w2Kis/aiS5lq2W7Oat6SZVAlnH+BW21s3HNKUkCRTgKR3Us0+/z2wFHAs8FngROAY27c1F9341Mlx6aHtQV3NWNJewLNsf6nevoxqYUyoqoJvNRZcDzoq31lt6JsZjqS1bd/cdBzjVVfE29o+v+lYpoL0yZRxKNVM+bvqJeh/T/VDe+ko5w0MSa+gSozPpGpGWJuq7XrjJuMawVFUfz0PWYpqxYLlqGajD2ySkbQEsMxQk169WsSSwAPAwK5UAFAvPbSu7RPr7VOBp9Vv/wfVEPKBJGljYD3bc+rt/6JqYoVqIEBMgsyTKeOBoaal+i//37YpwdT+A3gRVezrUC30eVGzIY1oSdt/6Ni+0Pad9fd/oCeSAp+k6gcbchLVYo3/j6oiHmT/Bszt2N6AKvaPUCX+QfYJnjjKaheqZYnOBUZ6/EKMQyqZMp4l6fMd26t1bg/yOlodHrJ9p6RpkqbZPlfSJ5sOagSrdG7YflvH5qp9jmW8dgQ6Z8ffbfsVdbPNLxqKaaxW7Fqx+He2LweQ9PGGYhqrNWxf3LF9T/1IDiS9qaGYppwkmTKO7Nq+vJEoJuZuSctT/ZL7tqTbqSbaDarLJL3R9n937qx/WQz6KKdp9WMhhrwXHntC6cCufF1buXPD9qs7Ngd9aZYnrLVm+0Udm6sRkyJJpoz5wHy3e1TFXlSPKXgn1fLzKwEfbTKgURwB/EDS/jy+JMiWVH0zr2wqqDFaUtIKtu8FsH0WPDbSb+kRz2zedZJebvsJy99I2gO4vqGYxupPkl5o+7LOnXWf2J8aimnKyeiyAiTNBdah+mV3EXAxcKntexoNbJzq5ULWt322pGWpnvj5pOXcB4mkHXh8cMK1tn/eZDxjIeldVCPJDhsavVd/778CnNP5ULNBUz8j6Uyqn/HO5L41sIft3zYV22gkbQWcAhzPE2N/A7BfG+b5tEGSTCH1L+WtqP5n25qqzf3PVBMa3zLSuYOgXhTzUOBptternzj5Vds7NhzalCTpMOADVIMUTPVI5k/YHvhFJiUtRVXtPpbcge/YfqC5qMamHqL/Np4Y+5ds/19zUU0tSTKF1Uvkv4hqscYDqNrf1202qtFJmkeVJC+zvXm972rbz2s0sClM0rpUw8U1VDFKWmdoqZkoQ9KrgB/b/kfTsUxFGcJcgKT9JX1R0oXAHKp1wK6mWptq4BNM7R+2HxzakPQU2rMmVVudavtvXU2SpzYWTY8kDf4y+U+0J/BbSd+S9PL6Zz0mSb6ZZcwGrqNapv2CQW6XHsH5kj4ALFOvEvwWoC3PwmmVev2sjame3dM5OmtFBr/jfzga/ZDBYfugehmi3aiWlfmypJ/Z/teGQ5sSkmTKWInqca5bAx+RtAFwG3AJcEkbOqOp1i07hKoCexPwY1ry0LIW2gDYg+rnZg8e/yV9L9DGX3StetAagO2H6lXSDSxDNbqyjd/7gZM+mT6oFw3ch2qY7Tq2W/FsmfohWhtS/Y93fWfzWUw+SWcB+9q+u95eBfiM7YMbDWycJE0H7mzLEH5Ju1ItSbQ9cB7ViLOzuuYuRY9SyRQgaVMeH1W2NdU6VJcAX2Cwl2Z5jKSXUzX33UD1l/U6kt5k+yfNRjalrTqUYABs/6V+DMDAqueUfAK4C/h3qjXipgPTJB1g+3+bjG+MDqR6vMKb0vk/+VLJFFB3fA7Nj7m4pSvRXkc1z+H39fZ6VM9l2bDZyKYuSfOBl9r+S739NOD8QR7RV88J+wBVU99sYDfbl9b9TCcNjUyMxVcqmQJsbzH0taQlJW1Sb15v+6GGwhqv24cSTO1GquG1Uc5ngIvrlYwN7At8rNmQRvWUjhUKPjq0EKzt66ql1wZfPdjik1RLyah+2faKjQY2RSTJFCTppcAJwE1UP7hrSXqD7QsaDGusrpX0Y+C7VL/wXgP8amj0k+3vNxncVGT7xLoy2IHq5+XVXYtPDqJHO76+v+u9tjSTHAO8wvZvmg5kKkpzWUGSLgf2t319vf1cqiaELZuNbHSSvjnC225bZ3SUIekRqtUJRDUq6+9DbwFL235qU7GNlaSLbG/TdBxTVZJMQZKusr3paPsiojmSjgWeAfwAeKzjP9X65MiM/7Iul/QNSS+tX/9NS5b9l/RcSedIuqbe3lTSB5uOKwafpOUkvU5SW+bLrEhVge0MvKJ+7dFoRFNIKpmC6oUD3wq8hKr54ALgy20YJinpfKrn4nytY+2ya2xvMvKZsTiq51TtTjVjflfgNOD7trNKxGIuHf+FSJoGXF7/Uv5s0/H0YFnbv+waIZTJafEE9ZJDs6geXXwu1TyZrWwf1Ghg4yDpWVRz2LahGqxwIXC47VsbDWyKSHNZIbYfBeZLenbTsfRoYT03xgCS9qFaGiei00+B9agWf319Xbk8Oso5g+abVAvZPhNYk2qNvpEGvsQ4pJIpaw2qocC/pBqBA4DtPZsLaczeSjW5bkNJfwQWUD0zJKLTllRLspwt6UaqmfOtWDapw6q2O5PK8ZLe2VQwU036ZAqStN1w+22f3+9YelU/D2ca1RyI/Wx/u+GQYkBJ2oaq6WxvYB5wuu3ZjQY1BpLOpno65kn1rlnAQXlA3+RIkilA0tLAYcBzqFYx/kZbFtuTtCJVFbMmcAZwdr39HmC+7b0aDC8GjKSzbO/ctW8a1TOUXtuGvpm6SfuLwIupmocvBt4x9CjsmJgkmQIknQI8BPyC6hkVN9s+vNmoxkbSGcBfqBb03BFYhWqBz8Ntz2swtBhAkq5s+/pkkk4A3tm1ZtynM+F4cqRPpoyNhhY1lPQN4JcNxzMe63bE/nVgIfDsrqc1RgxZqetBa0/QkgmNmw4lGADbdw366tdtkiRTxmOLYNp+uC0LBdY6Y39E0oIkmBhB94PWOhloQ5KZJmmVrkomvxsnSb6RZTxf0j3116J6hPE9tGN11zbHHv138xRoVmrj6tetkT6ZiOiZpPuAnW1f1LX/n4E/2b6hmcjGR9JGPL769TktWP26NVLJRMREXAYM15x6P/A5qnXABl6dVJJYCsiM/4iYiNVsX9W90/ZcYEb/w4lBkyQTEROx9AjvLdO3KGJgJclExET8StIbu3dKOoSWPNYiykrHf0T0TNLqwOnAgzyeVGZSTeB9le0/NxVbDIYkmYiYMEnbA0PPGrrW9s+bjCcGR5JMREQUkz6ZiIgoJkkmIiKKSZKJiIhikmQiIqKYJJmIiCjm/wOM1tVMUvZ3fAAAAABJRU5ErkJggg==\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "DoG - f1 score\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "DoG - cohens kappa score\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "cmap = matplotlib.colors.ListedColormap([\n", " (1.0, x / 255.0, 0.0)\n", " for x in range(256)\n", " ] + [\n", " ((255 - x) / 255.0, (255 - x) / 255.0, x / 255.0)\n", " for x in range(256)\n", " ])\n", "\n", "cmap.set_extremes(bad=cmap(0.0), under=cmap(0.0), over=cmap(1.0))\n", "\n", "for k in tables.keys():\n", " print(k)\n", " labels = list(gans)\n", " t = tables[k]\n", " if k[0:3] == \"GAN\":\n", " continue\n", " labels = labels[-4:]\n", " t = [r[-4:] for r in t[-4:]]\n", " f = plt.figure(figsize=(5, 4))\n", " f.add_axes([0.4, 0.45, 0.6, 0.5])\n", " else:\n", " f = plt.figure(figsize=(7, 6))\n", " f.add_axes([0.27, 0.25, 0.7, 0.74])\n", " p = plt.imshow(t, cmap=cmap)\n", " plt.colorbar(p)\n", " plt.xticks(range(len(labels)), labels, rotation=\"vertical\")\n", " plt.yticks(range(len(labels)), labels)\n", " plt.savefig(f\"data_result/statistics/successCount/statistic-{k}.pdf\")\n", " plt.show()" ] }, { "cell_type": "code", "execution_count": 21, "id": "e4397945", "metadata": {}, "outputs": [], "source": [ "class Table:\n", " def __init__(self, heading):\n", " self.heading = [str(h) for h in heading]\n", " self.sizes = [len(h) for h in self.heading]\n", " self.rows = []\n", " \n", " def add(self, row):\n", " row = [str(r) for r in row]\n", " self.rows.append(row)\n", " self.sizes = [max(a,len(b)) for (a, b) in zip(self.sizes, row)]\n", " \n", " def separator(self):\n", " return \"|\".join([\"-\" * n for n in self.sizes])\n", " \n", " def showRow(self, row):\n", " def pad(n, t):\n", " while len(t) < n:\n", " t += \" \"\n", " return t\n", " \n", " return \"|\".join([pad(n, t) for (n,t) in zip(self.sizes, row)])\n", " \n", " def show(self):\n", " print(self.showRow(self.heading))\n", " print(self.separator())\n", " for row in self.rows:\n", " print(self.showRow(row))" ] }, { "cell_type": "code", "execution_count": 22, "id": "d0e2faa0", "metadata": {}, "outputs": [], "source": [ "def tableRow(algo, dataset):\n", " row = []\n", " for gan in (list(gans)[-1:] if algo[0:3] == \"GAN\" else gans):\n", " v = getValueOf(gan, dataset, algo, f1Score)\n", " w = getValueOf(gan, dataset, algo, kScore)\n", " row.append((v, w))\n", " return row" ] }, { "cell_type": "code", "execution_count": 23, "id": "8c820b02", "metadata": { "scrolled": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "### LR\n", "\n", "dataset ($f_1~$score$~/~\\kappa~$score)|ProWRAS |Repeater |GAN |ctGAN |CTAB GAN |convGAN \n", "--------------------------------------|-----------------|-----------------|-----------------|-----------------|-----------------|-----------------\n", "abalone 17 vs 7 8 9 10 | 0.340 / 0.314 | 0.275 / 0.244 | 0.354 / 0.335 | 0.172 / 0.140 | 0.189 / 0.153 | 0.335 / 0.308 \n", "abalone9 18 | 0.568 / 0.535 | 0.458 / 0.409 | 0.477 / 0.442 | 0.315 / 0.267 | 0.471 / 0.427 | 0.580 / 0.548 \n", "car good | 0.100 / 0.029 | 0.106 / 0.035 | 0.091 / 0.021 | 0.107 / 0.036 | 0.106 / 0.035 | 0.109 / 0.038 \n", "car vgood | 0.395 / 0.357 | 0.362 / 0.320 | 0.369 / 0.335 | 0.322 / 0.276 | 0.367 / 0.328 | 0.407 / 0.370 \n", "flare F | 0.276 / 0.226 | 0.263 / 0.210 | 0.334 / 0.300 | 0.332 / 0.289 | 0.346 / 0.308 | 0.309 / 0.264 \n", "hypothyroid | 0.400 / 0.353 | 0.357 / 0.304 | 0.287 / 0.265 | 0.289 / 0.229 | 0.248 / 0.207 | 0.399 / 0.351 \n", "kddcup guess passwd vs satan | 0.997 / 0.996 | 0.997 / 0.996 | 0.994 / 0.994 | 1.000 / 1.000 | 0.996 / 0.996 | 0.997 / 0.996 \n", "kr vs k three vs eleven | 0.965 / 0.964 | 0.942 / 0.941 | 0.954 / 0.953 | 0.575 / 0.558 | 0.702 / 0.691 | 0.956 / 0.955 \n", "kr vs k zero one vs draw | 0.744 / 0.732 | 0.650 / 0.632 | 0.791 / 0.782 | 0.401 / 0.364 | 0.739 / 0.727 | 0.795 / 0.786 \n", "shuttle 2 vs 5 | 0.998 / 0.998 | 0.998 / 0.998 | 0.990 / 0.990 | 0.980 / 0.980 | 0.991 / 0.991 | 0.998 / 0.998 \n", "winequality red 4 | 0.143 / 0.090 | 0.113 / 0.056 | 0.025 / 0.020 | 0.108 / 0.059 | 0.127 / 0.080 | 0.134 / 0.079 \n", "yeast4 | 0.243 / 0.197 | 0.236 / 0.188 | 0.260 / 0.245 | 0.231 / 0.188 | 0.282 / 0.252 | 0.277 / 0.235 \n", "yeast5 | 0.592 / 0.574 | 0.574 / 0.555 | 0.558 / 0.545 | 0.530 / 0.510 | 0.612 / 0.598 | 0.612 / 0.596 \n", "yeast6 | 0.291 / 0.262 | 0.242 / 0.210 | 0.436 / 0.426 | 0.226 / 0.195 | 0.399 / 0.382 | 0.342 / 0.316 \n", "\n", "### GB\n", "\n", "dataset ($f_1~$score$~/~\\kappa~$score)|ProWRAS |Repeater |GAN |ctGAN |CTAB GAN |convGAN \n", "--------------------------------------|-----------------|-----------------|-----------------|-----------------|-----------------|-----------------\n", "abalone 17 vs 7 8 9 10 | 0.339 / 0.321 | 0.333 / 0.311 | 0.261 / 0.249 | 0.195 / 0.178 | 0.211 / 0.199 | 0.331 / 0.318 \n", "abalone9 18 | 0.399 / 0.361 | 0.388 / 0.352 | 0.362 / 0.333 | 0.324 / 0.292 | 0.371 / 0.340 | 0.374 / 0.335 \n", "car good | 0.845 / 0.840 | 0.839 / 0.831 | 0.853 / 0.847 | 0.533 / 0.504 | 0.773 / 0.765 | 0.845 / 0.839 \n", "car vgood | 0.973 / 0.972 | 0.938 / 0.935 | 0.967 / 0.966 | 0.812 / 0.803 | 0.974 / 0.973 | 0.982 / 0.982 \n", "flare F | 0.132 / 0.113 | 0.283 / 0.235 | 0.222 / 0.208 | 0.326 / 0.285 | 0.184 / 0.167 | 0.205 / 0.190 \n", "hypothyroid | 0.789 / 0.779 | 0.781 / 0.768 | 0.808 / 0.799 | 0.742 / 0.727 | 0.803 / 0.794 | 0.809 / 0.798 \n", "kddcup guess passwd vs satan | 1.000 / 1.000 | 1.000 / 1.000 | 0.982 / 0.982 | 1.000 / 1.000 | 1.000 / 1.000 | 1.000 / 1.000 \n", "kr vs k three vs eleven | 0.995 / 0.995 | 0.995 / 0.995 | 0.995 / 0.995 | 0.748 / 0.739 | 0.995 / 0.995 | 0.997 / 0.997 \n", "kr vs k zero one vs draw | 0.961 / 0.960 | 0.944 / 0.942 | 0.971 / 0.969 | 0.636 / 0.617 | 0.949 / 0.948 | 0.960 / 0.958 \n", "shuttle 2 vs 5 | 1.000 / 1.000 | 1.000 / 1.000 | 0.994 / 0.994 | 1.000 / 1.000 | 1.000 / 1.000 | 1.000 / 1.000 \n", "winequality red 4 | 0.096 / 0.070 | 0.127 / 0.094 | 0.079 / 0.067 | 0.106 / 0.081 | 0.091 / 0.076 | 0.136 / 0.097 \n", "yeast4 | 0.352 / 0.330 | 0.375 / 0.347 | 0.249 / 0.234 | 0.254 / 0.225 | 0.285 / 0.271 | 0.365 / 0.342 \n", "yeast5 | 0.708 / 0.699 | 0.714 / 0.705 | 0.709 / 0.700 | 0.630 / 0.617 | 0.687 / 0.678 | 0.723 / 0.715 \n", "yeast6 | 0.544 / 0.533 | 0.478 / 0.464 | 0.499 / 0.490 | 0.346 / 0.329 | 0.428 / 0.417 | 0.540 / 0.530 \n", "\n", "### KNN\n", "\n", "dataset ($f_1~$score$~/~\\kappa~$score)|ProWRAS |Repeater |GAN |ctGAN |CTAB GAN |convGAN \n", "--------------------------------------|-----------------|-----------------|-----------------|-----------------|------------------|-----------------\n", "abalone 17 vs 7 8 9 10 | 0.337 / 0.314 | 0.315 / 0.291 | 0.153 / 0.143 | 0.122 / 0.117 | 0.111 / 0.105 | 0.320 / 0.299 \n", "abalone9 18 | 0.395 / 0.347 | 0.342 / 0.286 | 0.194 / 0.177 | 0.213 / 0.196 | 0.132 / 0.118 | 0.366 / 0.310 \n", "car good | 0.720 / 0.706 | 0.357 / 0.312 | 0.496 / 0.472 | 0.247 / 0.190 | 0.390 / 0.349 | 0.568 / 0.542 \n", "car vgood | 0.805 / 0.797 | 0.413 / 0.375 | 0.736 / 0.725 | 0.308 / 0.260 | 0.634 / 0.614 | 0.831 / 0.824 \n", "flare F | 0.294 / 0.250 | 0.245 / 0.191 | 0.315 / 0.279 | 0.293 / 0.250 | 0.262 / 0.219 | 0.312 / 0.270 \n", "hypothyroid | 0.616 / 0.593 | 0.568 / 0.540 | 0.591 / 0.569 | 0.610 / 0.586 | 0.608 / 0.588 | 0.626 / 0.603 \n", "kddcup guess passwd vs satan | 0.991 / 0.991 | 0.991 / 0.991 | 0.991 / 0.991 | 0.991 / 0.991 | 0.991 / 0.991 | 0.991 / 0.991 \n", "kr vs k three vs eleven | 0.932 / 0.929 | 0.901 / 0.898 | 0.948 / 0.947 | 0.638 / 0.624 | 0.816 / 0.810 | 0.911 / 0.908 \n", "kr vs k zero one vs draw | 0.887 / 0.882 | 0.840 / 0.833 | 0.867 / 0.862 | 0.784 / 0.774 | 0.795 / 0.787 | 0.871 / 0.866 \n", "shuttle 2 vs 5 | 0.956 / 0.955 | 0.951 / 0.951 | 0.929 / 0.928 | 0.949 / 0.948 | 0.916 / 0.915 | 0.959 / 0.958 \n", "winequality red 4 | 0.072 / 0.020 | 0.069 / 0.016 | 0.024 / 0.006 | 0.043 / 0.000 | 0.040 / -0.010 | 0.077 / 0.019 \n", "yeast4 | 0.367 / 0.336 | 0.329 / 0.293 | 0.350 / 0.324 | 0.298 / 0.267 | 0.269 / 0.234 | 0.339 / 0.303 \n", "yeast5 | 0.689 / 0.677 | 0.670 / 0.657 | 0.679 / 0.668 | 0.599 / 0.582 | 0.706 / 0.696 | 0.651 / 0.637 \n", "yeast6 | 0.460 / 0.442 | 0.409 / 0.387 | 0.452 / 0.434 | 0.343 / 0.319 | 0.433 / 0.415 | 0.402 / 0.380 \n", "\n", "### DoG\n", "\n", "dataset ($f_1~$score$~/~\\kappa~$score)|ProWRAS |Repeater |GAN |ctGAN |CTAB GAN |convGAN \n", "--------------------------------------|---------|---------|---------|---------|---------|-----------------\n", "abalone 17 vs 7 8 9 10 | ? / ? | ? / ? | ? / ? | ? / ? | ? / ? | 0.359 / 0.336 \n", "abalone9 18 | ? / ? | ? / ? | ? / ? | ? / ? | ? / ? | 0.480 / 0.451 \n", "car good | ? / ? | ? / ? | ? / ? | ? / ? | ? / ? | 0.693 / 0.678 \n", "car vgood | ? / ? | ? / ? | ? / ? | ? / ? | ? / ? | 0.723 / 0.711 \n", "flare F | ? / ? | ? / ? | ? / ? | ? / ? | ? / ? | 0.313 / 0.270 \n", "hypothyroid | ? / ? | ? / ? | ? / ? | ? / ? | ? / ? | 0.710 / 0.694 \n", "kddcup guess passwd vs satan | ? / ? | ? / ? | ? / ? | ? / ? | ? / ? | 0.998 / 0.998 \n", "kr vs k three vs eleven | ? / ? | ? / ? | ? / ? | ? / ? | ? / ? | 0.995 / 0.995 \n", "kr vs k zero one vs draw | ? / ? | ? / ? | ? / ? | ? / ? | ? / ? | 0.955 / 0.954 \n", "shuttle 2 vs 5 | ? / ? | ? / ? | ? / ? | ? / ? | ? / ? | 1.000 / 1.000 \n", "winequality red 4 | ? / ? | ? / ? | ? / ? | ? / ? | ? / ? | 0.103 / 0.049 \n", "yeast4 | ? / ? | ? / ? | ? / ? | ? / ? | ? / ? | 0.292 / 0.252 \n", "yeast5 | ? / ? | ? / ? | ? / ? | ? / ? | ? / ? | 0.614 / 0.599 \n", "yeast6 | ? / ? | ? / ? | ? / ? | ? / ? | ? / ? | 0.423 / 0.402 \n" ] } ], "source": [ "def p(f):\n", " if f is None:\n", " return \" ? \"\n", " else:\n", " return f\" {f:0.3f} \"\n", "\n", "def latex(text):\n", " r = \"\"\n", " for x in text:\n", " if x == \"_\" or x == \"-\":\n", " r += \" \"\n", " else:\n", " r += x\n", " return r\n", " \n", "for algo in algs:\n", " print()\n", " print(\"### \" + algo)\n", " print()\n", " f = \"\"\n", " heading = [\"dataset ($f_1~$score$~/~\\\\kappa~$score)\"]\n", " if algo[0:3] == \"GAN\":\n", " for g in list(gans)[-1:]:\n", " heading.append(latex(g))\n", " else:\n", " for g in gans:\n", " heading.append(latex(g))\n", " table = Table(heading)\n", " \n", " for d in testSets:\n", " d = cleanupName(d)\n", " if d not in ignore:\n", " row = tableRow(algo, d)\n", " line = [latex(d)]\n", " for r in row:\n", " line.append(f\"{p(r[0])} / {p(r[1])}\")\n", " table.add(line)\n", " \n", " tableB = None\n", " #if len(table.heading) > 5:\n", " # heading = [table.heading[0]] + table.heading[6:]\n", " # tableB = Table(heading)\n", " # tableB.sizes = [table.sizes[0]] + table.sizes[6:]\n", " # tableB.rows = [\n", " # [r[0]] + r[6:]\n", " # for r in table.rows\n", " # ]\n", " # table.heading = table.heading[0:6]\n", " # table.sizes = table.sizes[0:6]\n", " # table.rows = [\n", " # r[0:6]\n", " # for r in table.rows\n", " # ]\n", "\n", " table.show()\n", " if tableB is not None:\n", " print()\n", " tableB.show()\n", " \n" ] }, { "cell_type": "code", "execution_count": 24, "id": "f1b75f48", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "2.682 - winequality-red-4\n", "9.727 - abalone_17_vs_7_8_9_10\n", "9.770 - flare-F\n", "10.716 - yeast4\n", "13.735 - abalone9-18\n", "15.026 - yeast6\n", "16.847 - car_good\n", "21.588 - hypothyroid\n", "24.241 - car-vgood\n", "24.265 - yeast5\n", "30.915 - kr-vs-k-zero-one_vs_draw\n", "33.849 - kr-vs-k-three_vs_eleven\n", "37.213 - shuttle-2_vs_5\n", "37.811 - kddcup-guess_passwd_vs_satan\n" ] } ], "source": [ "def dsWeight(d, score):\n", " w = 0.0\n", " for g in gans:\n", " for a in algs:\n", " x = getValueOf(g, d, a, score)\n", " if x is not None:\n", " w += x\n", " return w\n", "\n", "\n", "\n", "dataNames = [cleanupName(d) for d in testSets]\n", "dataNames.sort(key=lambda d: dsWeight(d, f1Score) + dsWeight(d, kScore))\n", "for d in dataNames:\n", " w = dsWeight(d, f1Score) + dsWeight(d, kScore)\n", " print(f\"{w:0.3f} - {d}\")" ] }, { "cell_type": "markdown", "id": "28bdb691", "metadata": {}, "source": [ "# Radar per GAN / algo" ] }, { "cell_type": "code", "execution_count": 25, "id": "7fe67f6a", "metadata": {}, "outputs": [], "source": [ "def latexRadarPicture(data, gan=\"?\"):\n", " lData = \"\"\n", " for k in data.keys():\n", " xs = data[k]\n", " if lData != \"\":\n", " lData += \",\\n \"\n", " for x in xs:\n", " if x is None or x < 0:\n", " lData += \"0.00/\"\n", " else:\n", " lData += f\"{x:0.3f}/\"\n", " lData += \"{\" + k.replace(\"_\", \"-\") + \"}\"\n", " \n", " angle = \"90 - \\\\i * 360 / __COUNT__\"\n", " \n", " return '''\n", "\\\\begin{tikzpicture}\n", " \\\\coordinate (origin) at (0, 0);\n", " \\\\node (title) at (0, 5) {''' + gan + '''};\n", "\n", " \\\\foreach[count=\\\\i] \\\\LR/\\\\GB/\\\\KNN/\\\\GAN/\\\\dim in {\n", " ''' + lData + '''\n", " }{\n", " \\\\coordinate (LR\\\\i) at (__ANGLE__: \\\\radarRadius * \\\\LR);\n", " \\\\coordinate (GB\\\\i) at (__ANGLE__: \\\\radarRadius * \\\\GB);\n", " \\\\coordinate (KNN\\\\i) at (__ANGLE__: \\\\radarRadius * \\\\KNN);\n", " \\\\coordinate (GAN\\\\i) at (__ANGLE__: \\\\radarRadius * \\\\GAN);\n", " \\\\node (title) [text width=2cm, text centered] at (__ANGLE__: \\\\radarRadius * 1.3) {\\\\tiny\\\\dim};\n", " \\\\coordinate (025x\\\\i) at (__ANGLE__: \\\\radarRadius * 0.25);\n", " \\\\coordinate (050x\\\\i) at (__ANGLE__: \\\\radarRadius * 0.50);\n", " \\\\coordinate (075x\\\\i) at (__ANGLE__: \\\\radarRadius * 0.75);\n", " \\\\coordinate (100x\\\\i) at (__ANGLE__: \\\\radarRadius * 1.00);\n", " \\\\draw [color=black!50] (origin) -- (100x\\\\i);\n", " }\n", "\n", " \\\\node (title) at (90: \\\\radarRadius * 0.25) {\\\\tiny0.25};\n", " \\\\node (title) at (90: \\\\radarRadius * 0.50) {\\\\tiny0.50};\n", " \\\\node (title) at (90: \\\\radarRadius * 0.75) {\\\\tiny0.75};\n", " \\\\node (title) at (90: \\\\radarRadius * 1.00) {\\\\tiny1.00};\n", "\n", " \\\\draw [color=red!80, thick] (LR1) \\\\foreach \\\\i in {2,...,__COUNT__}{-- (LR\\\\i)} --cycle;\n", " \\\\draw [color=blue!80, thick] (GB1) \\\\foreach \\\\i in {2,...,__COUNT__}{-- (GB\\\\i)} --cycle;\n", " \\\\draw [color=cyan!80, thick] (KNN1) \\\\foreach \\\\i in {2,...,__COUNT__}{-- (KNN\\\\i)} --cycle;\n", " \\\\draw [color=black!50, thick] (GAN1) \\\\foreach \\\\i in {2,...,__COUNT__}{-- (GAN\\\\i)} --cycle;\n", " \\\\draw [color=black!25, thin] (025x1) \\\\foreach \\\\i in {2,...,__COUNT__}{-- (025x\\\\i)} --cycle;\n", " \\\\draw [color=black!25, thin] (050x1) \\\\foreach \\\\i in {2,...,__COUNT__}{-- (050x\\\\i)} --cycle;\n", " \\\\draw [color=black!25, thin] (075x1) \\\\foreach \\\\i in {2,...,__COUNT__}{-- (075x\\\\i)} --cycle;\n", " \\\\draw [color=black!50, thin] (100x1) \\\\foreach \\\\i in {2,...,__COUNT__}{-- (100x\\\\i)} --cycle;\n", "\\\\end{tikzpicture}\n", "'''.replace(\"__ANGLE__\", angle).replace(\"__COUNT__\", str(len(data.keys())))" ] }, { "cell_type": "code", "execution_count": 26, "id": "74cfc4ba", "metadata": {}, "outputs": [], "source": [ "def getRadarData(gan, score):\n", " radarData = {}\n", " for d in dataNames:\n", " d = cleanupName(d)\n", " radarData[d] = [getValueOf(gan, d, a, f1Score) for a in algs]\n", " return radarData" ] }, { "cell_type": "code", "execution_count": 27, "id": "31b39078", "metadata": {}, "outputs": [], "source": [ "with open(\"documentation/paper/images/radarPlot.tex\", \"w\") as f:\n", " f.write(\"\\\\subsection{f-score}\\n\")\n", " #f.write(\"\\\\newcommand{\\\\pAngle}[3]{(0.25 + (#1 * 360 / #2): \\\\radarRadius * #3)}\")\n", " f.write(\"\\\\newcommand{\\\\radarRadius}{3.0cm}\")\n", " fl = False\n", " for gan in gans:\n", " if fl:\n", " f.write(\"\\\\hfill\")\n", " fl = False\n", " else:\n", " f.write(\"\\n\\n\")\n", " fl = True\n", " f.write(latexRadarPicture(getRadarData(gan, f1Score), gan))\n", " \n", " f.write(\"\\n\\n\\\\subsection{kappa-score}\\n\")\n", " for gan in gans:\n", " if fl:\n", " f.write(\"\\\\hfill\")\n", " fl = False\n", " else:\n", " f.write(\"\\n\\n\")\n", " fl = True\n", " f.write(latexRadarPicture(getRadarData(gan, kScore), gan))" ] }, { "cell_type": "markdown", "id": "b11b5a9a", "metadata": {}, "source": [ "# Radar per Algo / GAN" ] }, { "cell_type": "code", "execution_count": 28, "id": "3d407d30", "metadata": {}, "outputs": [], "source": [ "def latexRadarPicture(data, title=\"?\", rowTitles=None, colors=None):\n", " lData = \"\"\n", " keys = list(data.keys())\n", " for k in keys:\n", " if lData != \"\":\n", " lData += \",\\n \"\n", " lData += \"{\" + k.replace(\"_\", \"-\") + \"}\"\n", " \n", " angle = \"90 - \\\\i * 360 / __COUNT__\"\n", " \n", " if colors is None:\n", " colors = [\"red!80\", \"blue!80\", \"cyan!80\", \"black!80\", \"black!30\", \"red!40\"]\n", " \n", " tex = '''\n", "\\\\begin{tikzpicture}\n", " \\\\coordinate (origin) at (0, 0);\n", " \\\\node (title) at (0, 5) {''' + title + '''};\n", "\n", " \\\\foreach[count=\\\\i] \\\\axisTitle in {''' + lData + '''}{\n", " \\\\coordinate (025x\\\\i) at (__ANGLE__: \\\\radarRadius * 0.25);\n", " \\\\coordinate (050x\\\\i) at (__ANGLE__: \\\\radarRadius * 0.50);\n", " \\\\coordinate (075x\\\\i) at (__ANGLE__: \\\\radarRadius * 0.75);\n", " \\\\coordinate (100x\\\\i) at (__ANGLE__: \\\\radarRadius * 1.00);\n", " \\\\draw [color=black!50] (origin) -- (100x\\\\i);\n", " \\\\node (title) [text width=2cm, text centered] at (__ANGLE__: \\\\radarRadius * 1.3) {\\\\tiny\\\\axisTitle};\n", " }\n", "\n", " \\\\node (title) at (90: \\\\radarRadius * 0.25) {\\\\tiny0.25};\n", " \\\\node (title) at (90: \\\\radarRadius * 0.50) {\\\\tiny0.50};\n", " \\\\node (title) at (90: \\\\radarRadius * 0.75) {\\\\tiny0.75};\n", " \\\\node (title) at (90: \\\\radarRadius * 1.00) {\\\\tiny1.00};\n", "\n", " \\\\draw [color=black!25, thin] (025x1) \\\\foreach \\\\i in {2,...,__COUNT__}{-- (025x\\\\i)} --cycle;\n", " \\\\draw [color=black!25, thin] (050x1) \\\\foreach \\\\i in {2,...,__COUNT__}{-- (050x\\\\i)} --cycle;\n", " \\\\draw [color=black!25, thin] (075x1) \\\\foreach \\\\i in {2,...,__COUNT__}{-- (075x\\\\i)} --cycle;\n", " \\\\draw [color=black!50, thin] (100x1) \\\\foreach \\\\i in {2,...,__COUNT__}{-- (100x\\\\i)} --cycle;\n", "\n", "'''\n", "\n", " if rowTitles is not None:\n", " y = 4\n", " x = -4\n", " for (n, t) in enumerate(rowTitles):\n", " if x < 0:\n", " tex += \"\\\\node [color=\" + colors[n] + \"] (rowTitle) at (\" + str(x) + \", \" + str(y) + \") {\\\\tiny \" + t + \"};\"\n", " else:\n", " tex += \"\\\\node [color=\" + colors[n] + \"] (rowTitle) at (\" + str(x) + \", \" + str(y) + \") {\\\\tiny \" + t + \"};\"\n", " y -= 0.25\n", "\n", " x *= -1\n", " \n", " for n in range(len(data[keys[0]])):\n", " lData = \"\"\n", " for k in keys:\n", " if lData != \"\":\n", " lData += \",\"\n", " x = data[k][n]\n", " if x is None or x < 0:\n", " lData += \"0.00\"\n", " else:\n", " lData += f\"{x:0.3f}\"\n", "\n", " tex += '''\\\\foreach[count=\\\\i] \\\\axisValue in {''' + lData + '''}{\n", " \\\\coordinate (ROWx__ROW__x\\\\i) at (__ANGLE__: \\\\radarRadius * \\\\axisValue);\n", " }\n", " \n", " \\\\draw [color=__COLOR__, thick] (ROWx__ROW__x1) \\\\foreach \\\\i in {2,...,__COUNT__}{-- (ROWx__ROW__x\\\\i)} --cycle;\n", " '''.replace(\"__ROW__\", str(n)).replace(\"__COLOR__\", colors[n])\n", "\n", " tex += \"\\\\end{tikzpicture}\"\n", " \n", " return tex.replace(\"__ANGLE__\", angle).replace(\"__COUNT__\", str(len(data.keys())))" ] }, { "cell_type": "code", "execution_count": 29, "id": "eb1453f8", "metadata": {}, "outputs": [], "source": [ "def getRadarAlgData(alg, score):\n", " radarData = {}\n", " for d in dataNames:\n", " d = cleanupName(d)\n", " radarData[d] = [getValueOf(gan, d, alg, f1Score) for gan in gans]\n", " return radarData" ] }, { "cell_type": "code", "execution_count": 30, "id": "cf4c3d46", "metadata": {}, "outputs": [], "source": [ "gans = [gans[0], gans[-1]] + gans[1:-1] \n", "\n", "with open(\"documentation/paper/images/radarPlotAlg.tex\", \"w\") as f:\n", " f.write(\"\\\\subsection{f-score}\\n\")\n", " #f.write(\"\\\\newcommand{\\\\pAngle}[3]{(0.25 + (#1 * 360 / #2): \\\\radarRadius * #3)}\")\n", " #f.write(\"\\\\newcommand{\\\\radarRadius}{3.0cm}\")\n", " fl = False\n", " for a in algs:\n", " if fl:\n", " f.write(\"\\\\hfill\")\n", " fl = False\n", " else:\n", " f.write(\"\\n\\n\")\n", " fl = True\n", " f.write(latexRadarPicture(getRadarAlgData(a, f1Score), a, gans))\n", " \n", " f.write(\"\\n\\n\\\\subsection{kappa-score}\\n\")\n", " for a in algs:\n", " if fl:\n", " f.write(\"\\\\hfill\")\n", " fl = False\n", " else:\n", " f.write(\"\\n\\n\")\n", " fl = True\n", " f.write(latexRadarPicture(getRadarAlgData(a, kScore), a, gans))" ] }, { "cell_type": "markdown", "id": "6dc1357f", "metadata": { "scrolled": false }, "source": [ "for a in algs:\n", " showDiagnose(a, f1Score)\n", " showDiagnose(a, kScore)\n", " break\n", " \n", "#showDiagnoseAverage(f1Score)\n", "#showDiagnoseAverage(kScore)\n", "#\n", "#for t in testSets:\n", "# showDiagnoseDataset(cleanupName(t))\n", "#\n", "#showDiagnoseDataset(\"Average\")" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "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.7" } }, "nbformat": 4, "nbformat_minor": 5 }