Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save lmcinnes/24ed5c22c80125be5133811d677eae7b to your computer and use it in GitHub Desktop.
Save lmcinnes/24ed5c22c80125be5133811d677eae7b to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"id": "e4e429df",
"metadata": {},
"source": [
"# Clustering evaluation on high dimensional data\n",
"\n",
"The goal of this notebook is to provide a basic template walkthrough of obtaining and preparing a number of (simple) high dimensional datasets that can reasonably used to clustering evaluation. The datasets chosen have associated class labels that *should* be meaningful in terms of how the data clusters, and thus we can use label based clustering evaluation such as ARI and AMI to determine how well different clustering approaches are performing.\n",
"\n",
"The primary purpose of this notebook is to provide a set of baseline datasets that clustering algorithm developers can try their algorithms out on. Performing reasinably well on these datasets is a necessary but not sufficient condition of a good clustering algorithm."
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "84a03c0f",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\t\t\t<script type=\"text/javascript\">\n",
"\t\t\t<!--\n",
"\t\t\t\t\n",
"\t\t\t{\n",
"\t\t\t\tvar element = document.getElementById('NetworKit_script');\n",
"\t\t\t\tif (element) {\n",
"\t\t\t\t\telement.parentNode.removeChild(element);\n",
"\t\t\t\t}\n",
"\t\t\t\telement = document.createElement('script');\n",
"\t\t\t\telement.type = 'text/javascript';\n",
"\t\t\t\telement.innerHTML = 'function NetworKit_pageEmbed(id) { var i, j; var elements; elements = document.getElementById(id).getElementsByClassName(\"Plot\"); for (i=0; i<elements.length; i++) { elements[i].id = id + \"_Plot_\" + i; var data = elements[i].getAttribute(\"data-image\").split(\"|\"); elements[i].removeAttribute(\"data-image\"); var content = \"<div class=\\\\\"Image\\\\\" id=\\\\\"\" + elements[i].id + \"_Image\\\\\" />\"; elements[i].innerHTML = content; elements[i].setAttribute(\"data-image-index\", 0); elements[i].setAttribute(\"data-image-length\", data.length); for (j=0; j<data.length; j++) { elements[i].setAttribute(\"data-image-\" + j, data[j]); } NetworKit_plotUpdate(elements[i]); elements[i].onclick = function (e) { NetworKit_overlayShow((e.target) ? e.target : e.srcElement); } } elements = document.getElementById(id).getElementsByClassName(\"HeatCell\"); for (i=0; i<elements.length; i++) { var data = parseFloat(elements[i].getAttribute(\"data-heat\")); var color = \"#00FF00\"; if (data <= 1 && data > 0) { color = \"hsla(0, 100%, 75%, \" + (data) + \")\"; } else if (data <= 0 && data >= -1) { color = \"hsla(240, 100%, 75%, \" + (-data) + \")\"; } elements[i].style.backgroundColor = color; } elements = document.getElementById(id).getElementsByClassName(\"Details\"); for (i=0; i<elements.length; i++) { elements[i].setAttribute(\"data-title\", \"-\"); NetworKit_toggleDetails(elements[i]); elements[i].onclick = function (e) { NetworKit_toggleDetails((e.target) ? e.target : e.srcElement); } } elements = document.getElementById(id).getElementsByClassName(\"MathValue\"); for (i=elements.length-1; i>=0; i--) { value = elements[i].innerHTML.trim(); if (value === \"nan\") { elements[i].parentNode.innerHTML = \"\" } } elements = document.getElementById(id).getElementsByClassName(\"SubCategory\"); for (i=elements.length-1; i>=0; i--) { value = elements[i].innerHTML.trim(); if (value === \"\") { elements[i].parentNode.removeChild(elements[i]) } } elements = document.getElementById(id).getElementsByClassName(\"Category\"); for (i=elements.length-1; i>=0; i--) { value = elements[i].innerHTML.trim(); if (value === \"\") { elements[i].parentNode.removeChild(elements[i]) } } var isFirefox = false; try { isFirefox = typeof InstallTrigger !== \"undefined\"; } catch (e) {} if (!isFirefox) { alert(\"Currently the function\\'s output is only fully supported by Firefox.\"); } } function NetworKit_plotUpdate(source) { var index = source.getAttribute(\"data-image-index\"); var data = source.getAttribute(\"data-image-\" + index); var image = document.getElementById(source.id + \"_Image\"); image.style.backgroundImage = \"url(\" + data + \")\"; } function NetworKit_showElement(id, show) { var element = document.getElementById(id); element.style.display = (show) ? \"block\" : \"none\"; } function NetworKit_overlayShow(source) { NetworKit_overlayUpdate(source); NetworKit_showElement(\"NetworKit_Overlay\", true); } function NetworKit_overlayUpdate(source) { document.getElementById(\"NetworKit_Overlay_Title\").innerHTML = source.title; var index = source.getAttribute(\"data-image-index\"); var data = source.getAttribute(\"data-image-\" + index); var image = document.getElementById(\"NetworKit_Overlay_Image\"); image.setAttribute(\"data-id\", source.id); image.style.backgroundImage = \"url(\" + data + \")\"; var link = document.getElementById(\"NetworKit_Overlay_Toolbar_Bottom_Save\"); link.href = data; link.download = source.title + \".svg\"; } function NetworKit_overlayImageShift(delta) { var image = document.getElementById(\"NetworKit_Overlay_Image\"); var source = document.getElementById(image.getAttribute(\"data-id\")); var index = parseInt(source.getAttribute(\"data-image-index\")); var length = parseInt(source.getAttribute(\"data-image-length\")); var index = (index+delta) % length; if (index < 0) { index = length + index; } source.setAttribute(\"data-image-index\", index); NetworKit_overlayUpdate(source); } function NetworKit_toggleDetails(source) { var childs = source.children; var show = false; if (source.getAttribute(\"data-title\") == \"-\") { source.setAttribute(\"data-title\", \"+\"); show = false; } else { source.setAttribute(\"data-title\", \"-\"); show = true; } for (i=0; i<childs.length; i++) { if (show) { childs[i].style.display = \"block\"; } else { childs[i].style.display = \"none\"; } } }';\n",
"\t\t\t\telement.setAttribute('id', 'NetworKit_script');\n",
"\t\t\t\tdocument.head.appendChild(element);\n",
"\t\t\t}\n",
"\t\t\n",
"\t\t\t\t\n",
"\t\t\t{\n",
"\t\t\t\tvar element = document.getElementById('NetworKit_style');\n",
"\t\t\t\tif (element) {\n",
"\t\t\t\t\telement.parentNode.removeChild(element);\n",
"\t\t\t\t}\n",
"\t\t\t\telement = document.createElement('style');\n",
"\t\t\t\telement.type = 'text/css';\n",
"\t\t\t\telement.innerHTML = '.NetworKit_Page { font-family: Arial, Helvetica, sans-serif; font-size: 14px; } .NetworKit_Page .Value:before { font-family: Arial, Helvetica, sans-serif; font-size: 1.05em; content: attr(data-title) \":\"; margin-left: -2.5em; padding-right: 0.5em; } .NetworKit_Page .Details .Value:before { display: block; } .NetworKit_Page .Value { font-family: monospace; white-space: pre; padding-left: 2.5em; white-space: -moz-pre-wrap !important; white-space: -pre-wrap; white-space: -o-pre-wrap; white-space: pre-wrap; word-wrap: break-word; tab-size: 4; -moz-tab-size: 4; } .NetworKit_Page .Category { clear: both; padding-left: 1em; margin-bottom: 1.5em; } .NetworKit_Page .Category:before { content: attr(data-title); font-size: 1.75em; display: block; margin-left: -0.8em; margin-bottom: 0.5em; } .NetworKit_Page .SubCategory { margin-bottom: 1.5em; padding-left: 1em; } .NetworKit_Page .SubCategory:before { font-size: 1.6em; display: block; margin-left: -0.8em; margin-bottom: 0.5em; } .NetworKit_Page .SubCategory[data-title]:before { content: attr(data-title); } .NetworKit_Page .Block { display: block; } .NetworKit_Page .Block:after { content: \".\"; visibility: hidden; display: block; height: 0; clear: both; } .NetworKit_Page .Block .Thumbnail_Overview, .NetworKit_Page .Block .Thumbnail_ScatterPlot { width: 260px; float: left; } .NetworKit_Page .Block .Thumbnail_Overview img, .NetworKit_Page .Block .Thumbnail_ScatterPlot img { width: 260px; } .NetworKit_Page .Block .Thumbnail_Overview:before, .NetworKit_Page .Block .Thumbnail_ScatterPlot:before { display: block; text-align: center; font-weight: bold; } .NetworKit_Page .Block .Thumbnail_Overview:before { content: attr(data-title); } .NetworKit_Page .HeatCell { font-family: \"Courier New\", Courier, monospace; cursor: pointer; } .NetworKit_Page .HeatCell, .NetworKit_Page .HeatCellName { display: inline; padding: 0.1em; margin-right: 2px; background-color: #FFFFFF } .NetworKit_Page .HeatCellName { margin-left: 0.25em; } .NetworKit_Page .HeatCell:before { content: attr(data-heat); display: inline-block; color: #000000; width: 4em; text-align: center; } .NetworKit_Page .Measure { clear: both; } .NetworKit_Page .Measure .Details { cursor: pointer; } .NetworKit_Page .Measure .Details:before { content: \"[\" attr(data-title) \"]\"; display: block; } .NetworKit_Page .Measure .Details .Value { border-left: 1px dotted black; margin-left: 0.4em; padding-left: 3.5em; pointer-events: none; } .NetworKit_Page .Measure .Details .Spacer:before { content: \".\"; opacity: 0.0; pointer-events: none; } .NetworKit_Page .Measure .Plot { width: 440px; height: 440px; cursor: pointer; float: left; margin-left: -0.9em; margin-right: 20px; } .NetworKit_Page .Measure .Plot .Image { background-repeat: no-repeat; background-position: center center; background-size: contain; height: 100%; pointer-events: none; } .NetworKit_Page .Measure .Stat { width: 500px; float: left; } .NetworKit_Page .Measure .Stat .Group { padding-left: 1.25em; margin-bottom: 0.75em; } .NetworKit_Page .Measure .Stat .Group .Title { font-size: 1.1em; display: block; margin-bottom: 0.3em; margin-left: -0.75em; border-right-style: dotted; border-right-width: 1px; border-bottom-style: dotted; border-bottom-width: 1px; background-color: #D0D0D0; padding-left: 0.2em; } .NetworKit_Page .Measure .Stat .Group .List { -webkit-column-count: 3; -moz-column-count: 3; column-count: 3; } .NetworKit_Page .Measure .Stat .Group .List .Entry { position: relative; line-height: 1.75em; } .NetworKit_Page .Measure .Stat .Group .List .Entry[data-tooltip]:before { position: absolute; left: 0; top: -40px; background-color: #808080; color: #ffffff; height: 30px; line-height: 30px; border-radius: 5px; padding: 0 15px; content: attr(data-tooltip); white-space: nowrap; display: none; } .NetworKit_Page .Measure .Stat .Group .List .Entry[data-tooltip]:after { position: absolute; left: 15px; top: -10px; border-top: 7px solid #808080; border-left: 7px solid transparent; border-right: 7px solid transparent; content: \"\"; display: none; } .NetworKit_Page .Measure .Stat .Group .List .Entry[data-tooltip]:hover:after, .NetworKit_Page .Measure .Stat .Group .List .Entry[data-tooltip]:hover:before { display: block; } .NetworKit_Page .Measure .Stat .Group .List .Entry .MathValue { font-family: \"Courier New\", Courier, monospace; } .NetworKit_Page .Measure:after { content: \".\"; visibility: hidden; display: block; height: 0; clear: both; } .NetworKit_Page .PartitionPie { clear: both; } .NetworKit_Page .PartitionPie img { width: 600px; } #NetworKit_Overlay { left: 0px; top: 0px; display: none; position: absolute; width: 100%; height: 100%; background-color: rgba(0,0,0,0.6); z-index: 1000; } #NetworKit_Overlay_Title { position: absolute; color: white; transform: rotate(-90deg); width: 32em; height: 32em; padding-right: 0.5em; padding-top: 0.5em; text-align: right; font-size: 40px; } #NetworKit_Overlay .button { background: white; cursor: pointer; } #NetworKit_Overlay .button:before { size: 13px; display: inline-block; text-align: center; margin-top: 0.5em; margin-bottom: 0.5em; width: 1.5em; height: 1.5em; } #NetworKit_Overlay .icon-close:before { content: \"X\"; } #NetworKit_Overlay .icon-previous:before { content: \"P\"; } #NetworKit_Overlay .icon-next:before { content: \"N\"; } #NetworKit_Overlay .icon-save:before { content: \"S\"; } #NetworKit_Overlay_Toolbar_Top, #NetworKit_Overlay_Toolbar_Bottom { position: absolute; width: 40px; right: 13px; text-align: right; z-index: 1100; } #NetworKit_Overlay_Toolbar_Top { top: 0.5em; } #NetworKit_Overlay_Toolbar_Bottom { Bottom: 0.5em; } #NetworKit_Overlay_ImageContainer { position: absolute; top: 5%; left: 5%; height: 90%; width: 90%; background-repeat: no-repeat; background-position: center center; background-size: contain; } #NetworKit_Overlay_Image { height: 100%; width: 100%; background-repeat: no-repeat; background-position: center center; background-size: contain; }';\n",
"\t\t\t\telement.setAttribute('id', 'NetworKit_style');\n",
"\t\t\t\tdocument.head.appendChild(element);\n",
"\t\t\t}\n",
"\t\t\n",
"\t\t\t\t\n",
"\t\t\t{\n",
"\t\t\t\tvar element = document.getElementById('NetworKit_Overlay');\n",
"\t\t\t\tif (element) {\n",
"\t\t\t\t\telement.parentNode.removeChild(element);\n",
"\t\t\t\t}\n",
"\t\t\t\telement = document.createElement('div');\n",
"\t\t\t\telement.innerHTML = '<div id=\"NetworKit_Overlay_Toolbar_Top\"><div class=\"button icon-close\" id=\"NetworKit_Overlay_Close\" /></div><div id=\"NetworKit_Overlay_Title\" /> <div id=\"NetworKit_Overlay_ImageContainer\"> <div id=\"NetworKit_Overlay_Image\" /> </div> <div id=\"NetworKit_Overlay_Toolbar_Bottom\"> <div class=\"button icon-previous\" onclick=\"NetworKit_overlayImageShift(-1)\" /> <div class=\"button icon-next\" onclick=\"NetworKit_overlayImageShift(1)\" /> <a id=\"NetworKit_Overlay_Toolbar_Bottom_Save\"><div class=\"button icon-save\" /></a> </div>';\n",
"\t\t\t\telement.setAttribute('id', 'NetworKit_Overlay');\n",
"\t\t\t\tdocument.body.appendChild(element);\n",
"\t\t\t\tdocument.getElementById('NetworKit_Overlay_Close').onclick = function (e) {\n",
"\t\t\t\t\tdocument.getElementById('NetworKit_Overlay').style.display = 'none';\n",
"\t\t\t\t}\n",
"\t\t\t}\n",
"\t\t\n",
"\t\t\t-->\n",
"\t\t\t</script>\n",
"\t\t"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"from sklearn.datasets import fetch_openml\n",
"from sklearn.datasets import load_digits\n",
"from sklearn.metrics import adjusted_rand_score, adjusted_mutual_info_score, silhouette_score\n",
"from sklearn.decomposition import PCA\n",
"from sklearn import cluster\n",
"\n",
"import numpy as np\n",
"import pandas as pd\n",
"import requests\n",
"import zipfile\n",
"import imageio\n",
"import os\n",
"from PIL import Image\n",
"from glob import glob\n",
"\n",
"import matplotlib.pyplot as plt\n",
"import seaborn as sns\n",
"\n",
"import hdbscan\n",
"import umap\n",
"from sklearn.neighbors import KNeighborsTransformer\n",
"import pynndescent\n",
"\n",
"import networkx as nx\n",
"import cdlib.algorithms as cd\n",
"\n",
"sns.set()"
]
},
{
"cell_type": "markdown",
"id": "5ab73773",
"metadata": {},
"source": [
"# MNIST, USPS and Pendigits are easy\n",
"\n",
"We can use the sklearn API to fetch data for the Pendigits, MNIST and USPS datasets.\n",
"\n",
"Of these datasets pendigits is the smallest, with only 1797 samples, and is only 64 dimensional. This makes a good first dataset to test things out on -- the dataset is small enough that practically anything should be able to run on this efficiently.\n",
"\n",
"USPS provides a slightly more challenging dataset, with almost 10,000 samples and 256 dimensions, but is still samall enough to be tractable for even naive clustering implementations.\n",
"\n",
"MNIST provides a good basic scaling test with 70,000 samples in 784 dimensions. In practice this is not a very large dataset compared to many that people want to cluster, although the dimensionality may provide some challenges."
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "88fe553d",
"metadata": {},
"outputs": [],
"source": [
"digits = load_digits()\n",
"mnist = fetch_openml(\"MNIST_784\")\n",
"usps = fetch_openml(\"USPS\")"
]
},
{
"cell_type": "markdown",
"id": "76bc2443",
"metadata": {},
"source": [
"# Buildings and COIL are harder\n",
"\n",
"The buildings and COIL-29 datasets provide some slightly more challenging image based problems, with more complex images to be dealt with. Both are still small in number of samples, so should be easily tractable. COIL *should* be relatively easy to cluster since the different classes should provide fairly tight and distinct clusters (being 72 images of the same object from different angles for each class). The buildings dataset, which has colour images from many angles and different lighting conditions, should be a much more challenging problem to cluster if using simple euclidean distance on the flattened vectors."
]
},
{
"cell_type": "markdown",
"id": "35a2c7ca",
"metadata": {},
"source": [
"### COIL-20"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "9be3cf03",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"CPU times: user 20 µs, sys: 14 µs, total: 34 µs\n",
"Wall time: 37.9 µs\n"
]
}
],
"source": [
"%%time\n",
"if not os.path.isfile('coil20.zip'):\n",
" results = requests.get('http://www.cs.columbia.edu/CAVE/databases/SLAM_coil-20_coil-100/coil-20/coil-20-proc.zip')\n",
" with open(\"coil20.zip\", \"wb\") as code:\n",
" code.write(results.content)"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "0090d226",
"metadata": {},
"outputs": [],
"source": [
"import re\n",
"images_zip = zipfile.ZipFile('coil20.zip')\n",
"mylist = images_zip.namelist()\n",
"r = re.compile(\".*\\.png$\")\n",
"filelist = list(filter(r.match, mylist))"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "a689d2e8",
"metadata": {},
"outputs": [],
"source": [
"if not os.path.isfile('coil-20-proc/obj10__1.png'):\n",
" !unzip coil20.zip"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "492310b4",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"CPU times: user 1.01 s, sys: 45.7 ms, total: 1.06 s\n",
"Wall time: 4.93 s\n"
]
}
],
"source": [
"%%time\n",
"coil_feature_vectors = []\n",
"for filename in filelist:\n",
" im = imageio.imread(filename)\n",
" coil_feature_vectors.append(im.flatten())\n",
"coil_20_data = np.asarray(coil_feature_vectors)\n",
"coil_20_target = pd.Series(filelist).str.extract(\"obj([0-9]+)\", expand=False).values.astype(np.int32)"
]
},
{
"cell_type": "markdown",
"id": "f340778c",
"metadata": {},
"source": [
"## Buildings"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "7a02ef67",
"metadata": {},
"outputs": [],
"source": [
"if not os.path.isfile('buildings.rar'):\n",
" results = requests.get('http://eprints.lincoln.ac.uk/id/eprint/16079/1/dataset.rar')\n",
" with open('buildings.rar', \"wb\") as code:\n",
" code.write(results.content)"
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "463e58ff",
"metadata": {},
"outputs": [],
"source": [
"if not os.path.isfile('sheffield_buildings/Dataset/Dataset/1/S1-01.jpeg'):\n",
" !rar x buildings.rar ./sheffield_buildings"
]
},
{
"cell_type": "code",
"execution_count": 9,
"id": "c334ea93",
"metadata": {},
"outputs": [],
"source": [
"buildings_data = []\n",
"buildings_target = []\n",
"for i in range(1, 41):\n",
" directory = f\"sheffield_buildings/Dataset/{i}\"\n",
" images = np.vstack([np.asarray(Image.open(filename).resize((96, 96))).flatten() for filename in glob(f\"{directory}/*\")])\n",
" labels = np.full(len(glob(f\"{directory}/*\")), i, dtype=np.int32)\n",
" buildings_data.append(images)\n",
" buildings_target.append(labels)\n",
"buildings_data = np.vstack(buildings_data)\n",
"buildings_target = np.hstack(buildings_target)"
]
},
{
"cell_type": "markdown",
"id": "db372ef7",
"metadata": {},
"source": [
"# Clustering metric eval\n",
"\n",
"To make things easier later we will write some short functions to evaluate clusterings (with some special handling of singleton clusters or noise points for clusterign algorithms that support such things), and to plot the results for easy comparison."
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "c6a4cbec",
"metadata": {},
"outputs": [],
"source": [
"def eval_clusters(cluster_labels, true_labels, raw_data, cluster_method=\"None\", min_cluster_size=5):\n",
" unique_labels = np.unique(cluster_labels)\n",
" cluster_sizes, size_ids = np.histogram(cluster_labels, bins=unique_labels)\n",
" if np.any(cluster_sizes == 1): # Has singleton clusters -- call them noise\n",
" singleton_clusters = size_ids[:-1][cluster_sizes <= min_cluster_size]\n",
" for c in singleton_clusters:\n",
" cluster_labels[cluster_labels == c] = -1\n",
" if np.any(cluster_labels < 0): # Has noise points\n",
" clustered_points = (cluster_labels >= 0)\n",
" ari = adjusted_rand_score(true_labels[clustered_points], cluster_labels[clustered_points])\n",
" ami = adjusted_mutual_info_score(true_labels[clustered_points], cluster_labels[clustered_points])\n",
" sil = silhouette_score(raw_data[clustered_points], cluster_labels[clustered_points])\n",
" pct_clustered = (np.sum(clustered_points) / cluster_labels.shape[0])\n",
" print(f\"ARI: {ari:.4f}\\nAMI: {ami:.4f}\\nSilhouette: {sil:.4f}\\nPct clustered: {pct_clustered * 100:.2f}%\")\n",
" else:\n",
" ari = adjusted_rand_score(true_labels, cluster_labels)\n",
" ami = adjusted_mutual_info_score(true_labels, cluster_labels)\n",
" sil = silhouette_score(raw_data, cluster_labels)\n",
" print(f\"ARI: {ari:.4f}\\nAMI: {ami:.4f}\\nSilhouette: {sil:.4f}\")\n",
" pct_clustered = 1.0\n",
" \n",
" return {\"Method\": cluster_method, \"ARI\": ari, \"AMI\": ami, \"Silhouette\": sil, \"Pct Clustered\": pct_clustered}"
]
},
{
"cell_type": "code",
"execution_count": 11,
"id": "f5a555f4",
"metadata": {},
"outputs": [],
"source": [
"def plot_scores(results_dataframe, score_types=(\"ARI\", \"AMI\"), colors=list(sns.color_palette()), width=0.75):\n",
" fig, axs = plt.subplots(1, len(score_types), figsize=(8 * len(score_types), 8))\n",
" x_ticklabels = results_dataframe.Method.unique()\n",
" x_positions = np.arange(len(x_ticklabels), dtype=np.float32) - width / 2\n",
" dim_red_types = results_dataframe[\"Dim Reduction\"].unique()\n",
" bar_width = width / len(dim_red_types)\n",
" for offset_idx, dim_red in enumerate(dim_red_types):\n",
" color = colors[offset_idx]\n",
" for i, score_type in enumerate(score_types):\n",
" sub_dataframe = results_dataframe[\n",
" (results_dataframe[\"Score Type\"] == score_type) &\n",
" (results_dataframe[\"Dim Reduction\"] == dim_red)\n",
" ]\n",
" axs[i].bar(\n",
" x=x_positions,\n",
" height=sub_dataframe[\"Score\"],\n",
" width=bar_width,\n",
" align=\"edge\",\n",
" color=[(*color, v) for v in sub_dataframe[\"Pct Clustered\"]],\n",
" label=dim_red if i ==0 else None,\n",
" )\n",
" axs[i].set_xlabel(\"Cluster Method\")\n",
" axs[i].set_xticks(np.arange(len(x_ticklabels)))\n",
" axs[i].set_xticklabels(x_ticklabels)\n",
" axs[i].set_ylabel(f\"{score_type} Score\")\n",
" axs[i].set_title(score_type, fontsize=20)\n",
" axs[i].grid(visible=False, axis=\"x\")\n",
" axs[i].set_ylim([0, 1.05])\n",
" x_positions += bar_width\n",
" \n",
" if len(dim_red_types) > 1:\n",
" fig.legend(loc=\"center right\", bbox_to_anchor=(1.125, 0.5), borderaxespad=0.0, fontsize=20)\n",
" \n",
" fig.tight_layout()"
]
},
{
"cell_type": "markdown",
"id": "354bd894",
"metadata": {},
"source": [
"# Pendigits clustering scores"
]
},
{
"cell_type": "code",
"execution_count": 12,
"id": "de41bf77",
"metadata": {},
"outputs": [],
"source": [
"raw_pendigits = digits.data.astype(np.float32)"
]
},
{
"cell_type": "code",
"execution_count": 13,
"id": "44678502",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"CPU times: user 4.82 s, sys: 241 ms, total: 5.06 s\n",
"Wall time: 1.36 s\n"
]
}
],
"source": [
"%%time\n",
"km_labels = cluster.KMeans(n_clusters=10).fit_predict(raw_pendigits)\n",
"cl_labels = cluster.AgglomerativeClustering(n_clusters=10, linkage=\"complete\").fit_predict(raw_pendigits)\n",
"sl_labels = cluster.AgglomerativeClustering(n_clusters=160, linkage=\"single\").fit_predict(raw_pendigits)\n",
"db_labels = cluster.DBSCAN(eps=20.0).fit_predict(raw_pendigits)\n",
"hd_labels = hdbscan.HDBSCAN(min_samples=5, min_cluster_size=100).fit_predict(raw_pendigits)"
]
},
{
"cell_type": "code",
"execution_count": 14,
"id": "d2b0de9e",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"ARI: 0.6650\n",
"AMI: 0.7407\n",
"Silhouette: 0.1824\n",
"ARI: 0.4287\n",
"AMI: 0.6092\n",
"Silhouette: 0.1193\n",
"ARI: 0.5700\n",
"AMI: 0.8105\n",
"Silhouette: 0.0833\n",
"Pct clustered: 90.37%\n",
"ARI: 0.8633\n",
"AMI: 0.8990\n",
"Silhouette: 0.1927\n",
"Pct clustered: 74.18%\n",
"ARI: 0.7579\n",
"AMI: 0.9034\n",
"Silhouette: 0.2050\n",
"Pct clustered: 75.18%\n"
]
}
],
"source": [
"pendigits_raw_results = pd.DataFrame(\n",
" [\n",
" eval_clusters(km_labels, digits.target, raw_pendigits, cluster_method=\"K-Means\"),\n",
" eval_clusters(cl_labels, digits.target, raw_pendigits, cluster_method=\"Complete\\nLinkage\"),\n",
" eval_clusters(sl_labels, digits.target, raw_pendigits, cluster_method=\"Single\\nLinkage\"),\n",
" eval_clusters(db_labels, digits.target, raw_pendigits, cluster_method=\"DBSCAN\"),\n",
" eval_clusters(hd_labels, digits.target, raw_pendigits, cluster_method=\"HDBSCAN\"),\n",
" ]\n",
")\n",
"pendigits_raw_results_long = pendigits_raw_results.melt([\"Method\", \"Pct Clustered\"], var_name=\"Score Type\", value_name=\"Score\")\n",
"pendigits_raw_results_long[\"Dim Reduction\"] = \"None\""
]
},
{
"cell_type": "code",
"execution_count": 15,
"id": "c1c29edd",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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zJw5Mz169Ch3KQAADdagv8Y0OsD/1bZNqxw++v5yl9GsjTtnnywodxHAau24444ZOXJkhg8fno022qjehz4ceOCBZawMAGDlGhToaHQAgJbqmWeeySabbJKnnnqq3vKKigp9DgDQbDUo0NHoAAAt1c0331zuEgAA1liDAh2NDgDQkr3zzjt55JFHMmfOnHTp0iV77LFHPvWpT5W7LACAlaps6MB33nknEyZMyFVXXZUJEybknXfeacq6AABK4tlnn82AAQNy66235vnnn8+tt96aAQMG5Nlnny13aQAAK9WgM3SeffbZHHvssdliiy2y8cYb55FHHsl5552Xq666Ktttt11T1wgA0GTOO++8jB49OoMGDapbdt999+UnP/lJ7rjjjjJWBgCwcg0KdDQ6AEBL9dJLL2Wfffapt2zvvffO6NGjy1QRAMDqNeiSq5U1OrNmzWqSogAASuXTn/507r333nrLHnjggWy66aZlqggAYPUadIbOR43OkCFD6pZpdACAluD73/9+Ro0alZtvvjkbb7xxXnvttbz88su58sory10aAMBKNSjQ0egAAC3V9ttvn4cffji//e1vM3fu3Oyxxx7Zfffds95665W7NACAlWpQoKPRAQBaqjlz5qRt27YZOnRo3bJ33nmn7iPMAQCaowbdQ2fOnDlJkqFDh2bkyJEZOnRoKioq6pYDABTV8ccfnzfeeKPesjfeeCMnnHBCmSoCAFi9BgU6Gh0AoKV66aWX0rNnz3rLevbsmRdffLFMFQEArF6DP+VKowMAtEQbbLBBXn755XrLXn75ZZeWAwDNWoMCHY0OANBSHXDAATnxxBPzyCOP5H//938zZcqUnHTSSTnooIPKXRoAwEo16KbIHzU6J598cjbddNPMmjUrF198sUYHACi8Y445Jq1atcqYMWPyxhtvZKONNspBBx2UI488stylAQCsVIMCHY0OANBSVVZW5uijj87RRx9d7lIAABqsQYGORgcAaGlef/31VFZWZqONNkqSLF68OFdeeWVeeOGFbLfddjnqqKNSVVVV5ioBAFZslffQef311+t9utXixYvz85//PMcdd1yuvvrq1NTUNHmBAABN4cwzz8y0adPqHv/oRz/Kvffem+7du+eOO+7IxRdfXMbqAABWbZWBjkYHAGipnnvuuey2225Jkvfeey/33XdfLrroopx22mm5/PLLc++995a5QgCAlVtloKPRAQBaqurq6qyzzjpJkmnTpqVdu3b53Oc+lyTp0aNH/vWvf5WzPACAVVploKPRAQBaqm7duuXJJ59MkkyZMiU77bRT3br58+dn7bXXLldpAACrtcqbIn/U6Oy0004aHQCgRTnhhBPyzW9+M5tuumlefPHF3HzzzXXrfvOb32TrrbcuY3UAAKu2ykBHowMAtFT9+/fPnXfemX/84x/57Gc/m0033bRu3RZbbJFtt922fMUBAKzGKgMdjQ4A0JJtttlm2WyzzZZbvsMOO5ShGgCAhltloJNodAAAAACam1XeFBkAAACA5kegAwAAAFAwAh0AAACAglntPXQAAFqiESNGpKKiYpVjbrnllhJVAwCwZlYZ6Gh0AICW6qCDDip3CQAAH9sqAx2NDgDQUg0fPrzcJQAAfGyrDHRW1+hUV1c3ajEAAKUyYcKE1Y4ZNmxYk9cBAPBxfKx76CxdujS33nprrr322vzud79r7JoAAJrc6aefnk9/+tPp1KlTamtrl1tfUVEh0AEAmq1VBjovvvhizjzzzDz33HPp3r17xowZk5kzZ+YnP/lJunTpktNOO61UdQIANKojjjgiDz74YNq1a5dhw4alf//+ad26dbnLAgBokFUGOueee266d++eUaNGZdKkSTn++OPTtm3bjBkzJrvuumupagQAaHRnnnlmTj/99Pz+97/PhAkTct5556Vv374ZNmxY+vTpU+7yAABWaZWBzt/+9rf8/ve/T+vWrfOFL3whO+ywQx555JFstNFGpaoPAKDJVFVVpW/fvunbt28WLlyYyy+/PF/96ldz3XXXZeeddy53eQAAK7XKQKe6urru1ON11lkn7du3F+YAAC3KggULcu+992bChAmZP39+jj/++PTq1avcZQEArNIqA52lS5fm4osvrnv8/vvv13ucJN/61reapjIAgCb0yCOP5K677sozzzyTfv365bvf/W522GGHcpcFANAgqwx0hgwZkjfeeKPu8aBBg+o9BgAoquOOOy6bb755hgwZkrZt2+axxx7LY489Vm+MN64AgOZqlYHO+eefv8ovXrZsWaMWAwBQKsOGDUtFRUXefvvtcpcCALDGVhnorMzzzz+fCRMm5J577lnunSwAgCK44IILVrneG1cAQHPW4EBn/vz5ueeeezJhwoQ899xz2WGH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Pz3vvvtuOnTokDFjxmSLLbbIyJEjc9JJJ2XrrbdOTU1NfvSjH+Xxxx9PkowcOTKHHHJIKcoDAPhY9DgAQDmULNABAAAAoHGU5JIrAAAAABqPQAcAAACgYAQ6AAAAAAUj0AEAAAAoGIEOAAAAQMEIdEqgX79+eeGFF5IkixcvzlFHHZUzzjgjNTU1dWOOOOKIbL311nn77bfrlj3xxBPp2bNnxowZU+qSW4zq6upcfPHF2XvvvTNo0KDss88+ueCCC1JdXd3k+/73eV+VG264IfPmzWvyeorg/vvvz7BhwzJ06NAMHDgwp556apJk6NChef/99/+jbTd0Pj5J+vXrl4EDB2a//fbLgAEDctxxx+WZZ55Jktx5553p06dPhg4dmqFDh2b48OGZOnVqkqS2tjaXXHJJBg0alP322y/77rtvrr/++rrtvvnmm/ne976XPffcM4MHD86wYcPy61//ut6+v/Wtb2WXXXZZ7mexZ8+eOfroo5dbtmjRoqZ4CcpiRd+L+++/f5588smMHTs2u+yyS4YNG5a99947BxxwQG666aZ6x4uePXtmyJAhdT8nP//5z+vWPfHEEznooIMydOjQ7LPPPvnqV7+aZcuWJflw3m688cYMGjQo++67bwYOHJgf/OAHeffdd+u+/ne/+1169uyZyZMn16vv9NNPz9Zbb53XX3+93rJx48Y16mtDMelzykefUyz6nNLR45SHHqf0WpW7gE+SBQsW5Jhjjknv3r1z5plnpqKiot76z3zmM7n33ntz2GGHJUnuuuuu9O7duxylthhnnHFGlixZkjvuuCPrrrtuqqurc+edd2bp0qVZa621yl1ekuSmm27Krrvumo4dO5a7lLKaO3duzjnnnNx1113p2rVramtr89xzzyVJJk6cWObqWq5LLrkkW265ZZLkoYceyjHHHJNrr702SbLrrrvmkksuSfLhQfBHP/pR7r///jzwwAOZOnVq7rzzzrRp0yZLly7NrFmzknz4x9zhhx+e/fffPxdccEEqKyvz7rvv5r777qvb59tvv52pU6dm8803zyOPPJK99tqrXk0vvvhinnrqqey4446leAmanWHDhuW0005Lkrzyyiv57ne/m1mzZuUHP/hB3Zhbb7017dq1y+LFizNo0KD069cvvXv3zkknnZSbbropW221VZJk+vTpdceaiy66KH/84x9z4403plOnTlm2bFkmT56cd955Jx06dEiS3HHHHdl5551z++23p3///vXq6ty5c8aOHZvzzz+/FC8DBaTPKT19TnHoc0pPj9P86HEan0CnRObNm5fvfe972WOPPfKtb31rhWOGDx+eiRMn5rDDDsuiRYvyzDPPZN99983SpUvrxlxzzTV58MEHU1NTky5duuTHP/5xOnfunKlTp+aiiy7KkiVLUlNTk1GjRmXQoEFJPnxX7HOf+1z+/Oc/Z+7cudlnn33yne98J0ly6aWXZtKkSWnTpk0qKipy00031X3TF91LL72UyZMn53e/+13WXXfdJMlaa62VQw45JDU1NRkzZkx+//vfJ0m+9KUv5Tvf+U6qqqpy+umnp3Xr1nnppZfyyiuvZMCAAdljjz0yduzYvPHGG/na176Wr33ta0k+TKEHDRqUZ555JnPnzs3Xvva1HH744cvVMnfu3PzkJz/J66+/niVLlmTQoEEZNWpUrrjiisydOzcnnXRS2rRpkwsvvDCbbbZZfv7zn+ePf/xjqqurs+WWW+bss89Ou3btSvfilcFbb72VVq1aZb311kuSVFRUpFevXkk+TOufeeaZtGvXLv369cvQoUPzhz/8IW+++Wa+8Y1v1L3mf/rTn3LOOeckSXbaaaf85je/yVVXXVV3MP/Iyubjk26vvfbKX//611x77bXp27dvvXULFizIpz71qSTJnDlzsv7666d169ZJktatW+czn/lMkmTSpElZb731cuyxx9Z9bYcOHfKVr3yl7vHdd9+d3XffPV/84hdzxx13LNfsnHjiifnZz36WW2+9tSmeZqFsuummOffcc7PffvvlW9/6Vtq3b19v/eLFi/PBBx+kffv2WbRoUd5777106tSpbv1nP/vZJMmiRYty/fXXZ8KECXXrKysr6732//rXvzJ16tTcf//9GTRoUN5888107ty5bv1XvvKVjBs3Lv/7v/9bN9/wEX1O6elzikWfU156nOZHj9M4BDol8u1vfzsjRoxYaZOTfPhN3bp168yYMSN//vOf079//7Rq1aqu0Zk4cWJmzZqVX//616msrMwvf/nLXHDBBbnwwgvz2c9+Nr/85S9TVVWVt956K/vvv3+++MUv1v1ymj17dm655ZYsWrQo/fv3z4EHHpj1118/1157baZOnZq2bdtm4cKFadu2bUlej1KYPn16Pv3pT9e9Bv/utttuyz/+8Y/ceeedSZKRI0fmtttuy4gRI5Ik//znP3PjjTempqYm/fr1y4IFCzJu3Li8+eabGThwYA488MC6xuOtt97KLbfckrfeeivDhg1Lnz596pLjj5x22mk5/vjj84UvfCFLly7N17/+9Wy99dY57rjjMn78+HrvIFx++eVp3759br/99iTJT3/601x99dU5+eSTm+y1ag622mqrbLPNNunbt2922mmnbL/99hk6dGjWX3/95ca+//77ue222/Lqq69myJAhGT58eNZaa62ccsop+dnPfpY+ffrk4Ycfzs0337zCfa1sPnbbbbemfprN3uc///lMmTIlffv2zR/+8IcMHTo07733XubPn5+rrroqSbLvvvvmV7/6Vfbaa6/06dMnO++8cwYNGpRWrVrl73//e7bZZptV7uPOO+/Maaedlu222y7nnXde5syZky5dutSt32uvvXLLLbdk8uTJy72D0lJ89MfNR1566aWVju3Ro0fatm2bmTNn1r22HzWPL7/8cg499NBsscUWSZKDDz44e+21V3bcccdsv/32GTJkSLp27ZoZM2akdevWdeNWZOLEidljjz3SqVOnDBgwIBMmTMjIkSPr1q+zzjo59thj8/Of/zyXXXbZf/L0aYH0OaWnzykWfU756XFKQ49TWgKdEtl9991z33335dBDD82GG2640nHDhg3LXXfdlb/85S/54Q9/mAcffLBu3ZQpU/K3v/0tw4cPT5LU1NTUvSMzf/78fP/738/LL7+cqqqqvPPOO5k5c2a23XbbJMnAgQNTWVmZ9u3bp0ePHpk1a1Y23XTTbL755vnud7+bL33pS+nbt2/d9lq6qVOnZvjw4XXp+/7775/JkyfXNTr9+/evW7f55ptn9913T2VlZbp06ZIOHTrkjTfeSI8ePZIkBx54YJKkU6dO6du3b5566ql6jc57772Xp556KvPnz69btmjRosyYMWOFB9YpU6Zk4cKFdXO/dOnS5RqnlqiysjKXX355Xnjhhfzxj3/M5MmTc+211+aee+5Zbuy+++6bJOnWrVvdfFRXV6dt27bp06dPkmTAgAErfBd2Tefjk6a2trbu3/9+OvKTTz6ZU045JQ8++GA23HDD3Hvvvfnzn/+cp59+OldeeWXuvvvuXHvttfW+fkWmT5+ed999NzvvvHMqKioyYMCATJw4Mcccc0y9caeeemrOPffc9OvXr/GfZDPw73/cJB/+DloTH52O/O677+ZrX/taXWN41lln5cgjj8wTTzyRRx99NFdddVXuuOOO1c5L8mETesYZZyT58EyKM888s16zk3zYTF1//fX5y1/+skb10vLpc5oXfU7zo88pPz1OaehxSkugUyJHH310HnnkkRxxxBEZNWpUbrjhhiTJkCFD6t0ca5999smgQYPSqVOnbLnllvUandra2hx33HF1B9Z/d/bZZ6dfv3659NJLU1FRkb333jtLliypW//vKWlVVVVqampSVVWVX//613nmmWfyxBNPZP/9988vfvGLFnNQ/exnP5uXX34577zzznLvXtXW1i53bf+/P/6/r9eKXr8VWdF2ly1bloqKitx+++0Nup69trY2o0ePzi677LLasS3RlltumS233DKHHXZY9t133zz11FPLjVnZfPzf135F1nQ+PmmmTZuW//qv/1pu+U477ZQPPvgg//znP7PNNtukVatW6dOnT/r06ZMDDjggu+22W95+++187nOfyx133LHS7d9+++159913s+eeeyb5sJFv167dcs3OLrvskk6dOuXuu+9u3CdYQC+++GLef//9Fb7z1KFDh+y66655/PHH697p23TTTbPpppvmoIMOqjv2HHzwwVmyZElmzpyZzTfffLntTJs2LTNmzMiZZ55Zt2zu3Ll55plnsv3229ctW2uttXLiiSfmwgsvzMYbb9wEz5ai0ueUnj6nmPQ55aPHaX70OP85n3JVQscee2yGDx+eK6+8Mtdcc00mTpy43J3O27Vrl+9973t1N4v6d/369csvf/nLvPPOO0k+/CXx0c3UFixYkE022SQVFRV5/PHH8/LLL6+2noULF2b+/PnZcccdc9JJJ2XLLbfMP//5z0Z4ps1D9+7d069fv5x11llZuHBhkg/f7bvxxhuz00475a677kp1dXWqq6szYcKEj91Y3HXXXUk+fPfw0UcfXe4mZ+uuu2522GGHXH311XXLZs+enTfffDPJh3O+YMGCunX9+vXLDTfcUPdpBwsXLsyMGTM+Vm1FMmfOnDz77LN1j994443Mnz8/3bp1a9DXb7HFFnnvvffy9NNPJ0kmT55c7872H1ndfHySTZ48Ob/61a9y5JFHLrfu+eefz6JFi9KtW7f87W9/y6uvvlq37u9//3s+9alPpUOHDhk0aFDmz5+fX/ziF3XvmLz77ru58cYbs3Tp0tx77725/fbbM2XKlEyZMiWPPfZYKioq8qc//Wm5fZ566qkZO3Zs0z3hAnj11Vdz5pln5tBDD13hmQVLly7Ns88+m+7du2fRokV57LHH6r3ur776arp165Z27drl61//es4666y6T5upra3N3XffnVmzZuWOO+7I0UcfXTcvU6ZMyYknnrjCxnXIkCF5++23V/hHCJ9s+pzS0ucUiz6nvPQ4zY8ep3E4Q6fERo0aldra2hxxxBG56aab6l1T+ZGPTrP8v4YNG5a333677sZotbW1OfTQQ7PVVlvl1FNPzTnnnJNrrrkmPXv2TM+ePVdby8KFC3PiiSfm/fffT21tbT772c8ud+Ouorvgggty2WWX5YADDshaa62VZcuWZffdd8/JJ5+c1157re607i9+8Ys5+OCDP9Y+unbtmhEjRuTNN9/Mscceu8LX/n/+539y/vnnZ8iQIUk+bG7OPffcdO7cOV/96lfz/e9/P23bts2FF16YY445JpdeemkOPPDAVFRUpKKiIieccELdqc8t1QcffJCxY8fmtddeS9u2bbNs2bJ8+9vfrrvh2eq0bt06F154Yc4+++y0bds2O++8czp16rTcDdaSVc/HJ81JJ52U1q1bZ/HixenRo0euvvrqbLvttnnxxRfrri+vra1NbW1tzj///GywwQb5+9//nnPOOScLFy5M69ats/baa+eyyy5LZWVl1llnndx888356U9/mj333DPt2rVLq1atMmLEiEyePDmbbbZZunfvXq+GwYMH54477qg7jfwjW2+9dXr37l2vsfokmDBhQqZOnZrFixdn3XXXzZAhQ3LEEUfUG/OVr3wllZWVWbJkSXbccccceuihWbp0aW655Zb8+Mc/Tps2bVJTU5MhQ4ZkwIABSZJTTjklN9xwQ922amtr06dPn+yyyy6577778qtf/arePgYPHpz99tuv3jtayYeXDZx88smf+BtssmL6nNLS5xSHPqf09DjNjx6n8VXUNuSiM2CF+vXrlyuvvHK5TxegPBYuXFiX8D/xxBM5/fTTM2XKlFRWOhkRANaUPqd50ecA/5czdIAW46GHHsoNN9yQ2trauneyNDkAQEugzwH+L2foAAAAABSMSJdPnH79+uWFF16ot2zkyJGZNWvWar/2iCOOyCOPPNJUpX2imAcAaFyOrc2HuQBKwSVXkOSaa64pdwnEPABAY3NsbT7MBdDYnKEDqf8uyhFHHJExY8bk0EMPzZ577pn/+Z//WeHX3HvvvTnggAPyxhtv5J577slBBx2UYcOGZdiwYZk6dWrduD/96U8ZMmRIhgwZkp/85CfZY4896vb14osv5uijj84BBxyQ/fbbb4Ufn/dJYh4AoHE5tjYf5gJobM7QgRWYPXt2brnllixatCj9+/fPgQceWO9jCK+55po8/vjjueGGG9K+fft88YtfzODBg1NRUZEXX3wxX//61/Poo49m6dKlOeWUU/Kzn/0sffr0ycMPP5ybb745yYcfX/md73wnP/3pT9OjR48sXLgwBxxwQLbddtsW/9GdDWUeAKBxObY2H+YC+E8JdGAFBg4cmMrKyrRv3z49evTIrFmz6g6wY8eOzcYbb5yrr746rVu3TpK88sorOfXUUzNnzpy0atUqb731Vt58883Mmzcvbdu2TZ8+fZIkAwYMSIcOHZIkL730UmbMmJFTTjmlbr/V1dV58cUXHWD/H/MAAI3LsbX5MBfAf0qgAyvQpk2bun9XVVWlpqam7vG2226bxx9/PK+//nrdQfeUU07J6aefnv79+2fZsmX5/Oc/nyVLliRJKioqVriP2trarL/++pk4cWLTPZGCMw8A0LgcW5sPcwH8p9xDB9bQl770pZx99tk55phj8s9//jNJsmDBgnTr1i1Jcvvtt2fp0qVJki222CLvvfdenn766STJ5MmT8+677yZJNt9887Rt2zYTJkyo2/aMGTOycOHCEj6b4jIPANC4HFubD3MBNIQzdPhEOvLII1NVVVX3eNGiRWv09bvsskvOP//8HHfccbn44otzxhln5Pjjj0+XLl2y4447Zr311kuStG7dOhdeeGHOPvvstG3bNjvvvHM6deqU9u3bp1WrVrnyyitz3nnn5dprr82yZcvSsWPHXHTRRY34TJs38wAAjcuxtfkwF0BTq6itra0tdxHQki1cuDDrrrtukuSJJ57I6aefnilTpqSy0glypWQeAKBxObY2H+YCPpmcoQNN7KGHHsoNN9yQ2traundQHFxLzzwAQONybG0+zAV8MjlDBwAAAKBgxLYAAAAABSPQAQAAACgYgQ4AAABAwQh0gI9l7Nix+c53vlPuMkrqiCOOyPjx4xtlW6effnp+/vOfN8q2AIDGo8f5z+hxoHQEOsBK3XPPPdl///2z3Xbb5Ytf/GKOPvro/OlPf2q07b/66qvp2bNnPvjgg0bf5vDhw+stnz9/fj73uc+lX79+DdrOJ7GZA4BPCj2OHgdaAoEOsELXX399zjvvvIwaNSqPP/54HnnkkYwYMSK/+c1vyl1anVU1Se+9915eeOGFuseTJk3KJptsUoqyAIBmTI8DtBQCHWA5CxYsyCWXXJKzzjore+21V9ZZZ52stdZa6devX0477bTlxj/55JP58pe/XG9Zv3798oc//CFJ8te//jX7779/tt9+++y66645//zzkySHH354kuQLX/hCtttuuzz77LNJkttvvz377LNPvvCFL+Soo47Ka6+9Vrfdnj175pZbbslee+2Vvfbaa6XPYejQobnrrrvqHk+YMCHDhg2rN2bOnDk58cQTs/POO6dfv3656aabkiSPPvporrrqqtx///3Zbrvtst9++9V9zWuvvZavfOUr2W677fKNb3wj8+fPr1v3m9/8JoMGDUqfPn1yxBFHZMaMGXXrpk+fnuHDh2e77bbLt7/97SxZsmSltQMATUOPo8eBlkSgAyzn2WefzZIlSzJgwIBG2d65556br371q3nmmWfy8MMPZ5999kmSjBs3Lknyxz/+Mc8++2y22267TJ48OVdddVUuvfTSTJ06NTvssENOPfXUetubPHlyfv3rX+e+++5b6T7322+/3HfffampqcmMGTOyaNGifP7zn69bv2zZshx33HHp2bNnHn300dx444258cYb8/vf/z5f/vKXc+yxx2afffbJs88+m7vvvrvu6yZNmpTzzz8/U6dOTXV1da677rokycyZM3Pqqafm+9//fqZOnZovf/nLGTVqVJYuXZqlS5fmm9/8ZoYOHZqnnnoqAwcOzEMPPdQory0A0HB6HD0OtCQCHWA5b7/9dtZff/20atWqUbbXqlWrzJo1K/Pnz0+7du2y7bbbrnTsrbfemmOOOSY9evRIq1atMmrUqPzjH/+o9w7WMccck/XWWy9t27Zd6XY22mijbL755vnDH/6Qu+66a7l3rqZNm5b58+fnhBNOSOvWrbPpppvm4IMPXmUDlST7779/Nt9887Rt2zYDBw7MP/7xjyTJfffdl9133z277bZb1lprrRx11FF5//338+yzz+Yvf/lLqqur87WvfS1rrbVWBg4cmK233nr1LxwA0Kj0OCunx4HiaZzfZECLst566+Vf//pXPvjgg0ZpeM4999xccskl2WeffdKtW7eccMIJ2WOPPVY49vXXX895552XMWPG1C2rra3NnDlz6q4P79q1a4P2O2zYsNx111159tlnM27cuLz88st161577bXMnTs3ffr0qVtWU1NT7/GKdO7cue7fa6+9dt57770kydy5c7PxxhvXrausrEzXrl0zZ86cVFVVpUuXLqmoqKhb/+9jAYDS0OOsnB4HikegAyxnu+22S5s2bTJ58uQMHDhwtePXXnvtvP/++3WPa2pq6l133b179/zsZz/LsmXL8tBDD+Wkk07Kk08+We/g/5GuXbtm1KhR9a7p/r9W9HUrstdee+VHP/pRevfunU022aRes9O1a9d069ZtpacFN3QfH9lwww3r3aCwtrY2s2fPrmty5syZk9ra2rrtvv7669l0003XaB8AwH9Gj6PHgZbEJVfActq3b5+TTjopP/rRjzJ58uQsXrw41dXV+d3vfpf//u//Xm785ptvniVLluS3v/1tqqurc8UVV2Tp0qV16ydOnJj58+ensrIyHTp0SJJUVVVlgw02SGVlZV555ZW6sV/5yldy9dVX55///GeSD29eeP/993+s57HOOuvkxhtvzLnnnrvcum222Sbrrrturr766rz//vupqanJCy+8kL/+9a9Jko4dO+a1117LsmXLGrSvffbZJ7/73e/qXXfeunXrbLfddtl2223TqlWr3HTTTfnggw/y0EMPZdq0aR/rOQEAH58eR48DLYkzdIAVOvLII9OxY8dcfvnl+c53vpN27dqld+/eGTVq1HJj27dvn9GjR+cHP/hBampqcvTRR2ejjTaqW//73/8+F1xwQd5///1svPHG+fnPf542bdokSUaNGpVDDz00H3zwQX7xi19kwIABWbRoUU455ZS89tprad++fXbddde6mwyuqZVdx11VVZUrrrgiY8aMyZ577pmlS5dm8803z7e//e0kycCBA3P33Xdnp512Srdu3ep9msSKbLHFFvnpT3+aH//4x5kzZ0569eqVK6+8Mq1bt06SjB07Nj/84Q9z0UUXZffdd2+0mzECAGtGj6PHgZaiora2trbcRQAAAADQcC65AgAAACgYgQ4AAABAwQh0AAAAAApGoAMAAABQMAIdAAAAgIIR6AAAAAAUjEAHAAAAoGAEOgAAAAAFI9ABAAAAKJj/DxKs1gIRbj4VAAAAAElFTkSuQmCC\n",
"text/plain": [
"<Figure size 1152x576 with 2 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plot_scores(pendigits_raw_results_long)"
]
},
{
"cell_type": "code",
"execution_count": 16,
"id": "3006e403",
"metadata": {},
"outputs": [],
"source": [
"pca_pendigits = PCA(n_components=16).fit_transform(raw_pendigits)"
]
},
{
"cell_type": "code",
"execution_count": 17,
"id": "b9d1187d",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"CPU times: user 3.77 s, sys: 125 ms, total: 3.89 s\n",
"Wall time: 714 ms\n"
]
}
],
"source": [
"%%time\n",
"km_pca_labels = cluster.KMeans(n_clusters=10).fit_predict(pca_pendigits)\n",
"cl_pca_labels = cluster.AgglomerativeClustering(n_clusters=10, linkage=\"complete\").fit_predict(pca_pendigits)\n",
"sl_pca_labels = cluster.AgglomerativeClustering(n_clusters=160, linkage=\"single\").fit_predict(pca_pendigits)\n",
"db_pca_labels = cluster.DBSCAN(eps=15.0).fit_predict(pca_pendigits)\n",
"hd_pca_labels = hdbscan.HDBSCAN(min_samples=5, min_cluster_size=100).fit_predict(pca_pendigits)"
]
},
{
"cell_type": "code",
"execution_count": 18,
"id": "0ac69dce",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"ARI: 0.6610\n",
"AMI: 0.7329\n",
"Silhouette: 0.1818\n",
"ARI: 0.4145\n",
"AMI: 0.6045\n",
"Silhouette: 0.1260\n",
"ARI: 0.5198\n",
"AMI: 0.7979\n",
"Silhouette: 0.0868\n",
"Pct clustered: 89.59%\n",
"ARI: 0.8321\n",
"AMI: 0.8981\n",
"Silhouette: 0.1375\n",
"Pct clustered: 78.07%\n",
"ARI: 0.8785\n",
"AMI: 0.9377\n",
"Silhouette: 0.2059\n",
"Pct clustered: 72.73%\n"
]
}
],
"source": [
"pendigits_pca_results = pd.DataFrame(\n",
" [\n",
" eval_clusters(km_pca_labels, digits.target, raw_pendigits, cluster_method=\"K-Means\"),\n",
" eval_clusters(cl_pca_labels, digits.target, raw_pendigits, cluster_method=\"Complete\\nLinkage\"),\n",
" eval_clusters(sl_pca_labels, digits.target, raw_pendigits, cluster_method=\"Single\\nLinkage\"),\n",
" eval_clusters(db_pca_labels, digits.target, raw_pendigits, cluster_method=\"DBSCAN\"),\n",
" eval_clusters(hd_pca_labels, digits.target, raw_pendigits, cluster_method=\"HDBSCAN\"),\n",
" ]\n",
")\n",
"pendigits_pca_results_long = pendigits_pca_results.melt([\"Method\", \"Pct Clustered\"], var_name=\"Score Type\", value_name=\"Score\")\n",
"pendigits_pca_results_long[\"Dim Reduction\"] = \"PCA\""
]
},
{
"cell_type": "code",
"execution_count": 19,
"id": "bb1155ea",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAABREAAAI0CAYAAACKxG4UAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAAsTAAALEwEAmpwYAABUU0lEQVR4nO3deZyVdd0//tcsLIrgAogQKoqJhJompZmlIggKCO5JWpmiaGqplZrmVi7c3ZaJu5liWBqioKhppGUa7laWqd244MKiTMqmDAzz+8Ov82sCLgGZMwd4Ph8PHzLn+pzrel/nMzPnPa9zLRX19fX1AQAAAABYhsrmLgAAAAAAKG9CRAAAAACgkBARAAAAACgkRAQAAAAACgkRAQAAAIBCQkQAAAAAoJAQEQAAAAAoJEQEytZVV12VHj16pEePHnnppZeWOub2229vGPPhf9tuu2323HPPnHrqqXn++eeX+rxRo0alR48eGTVqVFPuAgBAIyva3xx++OHLXNfrr7+ebbbZpmHsf1vW4wCwMoSIQFmqr6/PbbfdloqKiiTJ2LFjC8dvs802OeGEE3LCCSfkK1/5Sjp06JCJEyfm4IMPzlNPPVWKkgEACq1of1NdXZ0nnnhimWHj2LFjU19fn+rq6lVeKwD8NyEiUJYefvjhvP7669l///3ToUOH3HHHHamtrV3m+J49e+bEE0/MiSeemDPOOCNjx47NoYcemtra2lx66aWlKxwAYBlWtL/ZY489kiw9bKyrq8vtt9+e7bbbLu3bt2+qkgGggRARKEsfNssHH3xwBg8enH//+9+ZNGnSCq3joIMOSpL8/e9/X+X1AQCsqBXtb7baaqvsuOOOGT9+fBYuXNho2R/+8IfMnDkzhxxySJPWDAAfEiICZeftt9/OAw88kG7duuUzn/lMDjjggCTJrbfeulLrc4oPANDcVra/Ofjgg1NTU5Pf//73jR4fO3Zs1l133ey7775NVjMA/CchIlB2br/99ixcuLChud56663Tq1evPPbYY3n11VeXez2/+c1vkiQ77bRTk9QJALC8Vra/2XfffbPeeus1OqV5xowZeeihhzJw4MCst956TV47ACRCRKDM1NfXZ+zYsamsrMzQoUMbHt9///0bli3NP//5z4waNSqjRo3KRRddlAMPPDBjx47NxhtvnNNOO61E1QMALGll+5skWWed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yy23TJcuXfLggw/mwgsvzDXXXJMdd9xxlRULAFBqF154Yc4555wMHDiw4bF77rknP/rRjzJu3LhmrAwAoPnV1dWlqmq54iNWc1VV1YXXvFyu7wLNNQCwpnrllVeyzz77NHqsf//+Oeecc5qpIgCA8uIaiGuHj5rn5TqdeVnN9dSpU1e+MgCAMrD55pvn7rvvbvTYb3/722y66abNVBEAAJSf5ToS8cPmevDgwQ2Paa4BgDXB97///YwYMSK//OUv06VLl7zxxht59dVXc/XVVzd3aQAAUDaWK0TUXAMAa6rPfOYz+d3vfpc//OEPmTlzZvbcc8/svvvu2WCDDZq7NAAAKBvLFSJqrgGANdWMGTPSunXrDBkypOGxd999NzNmzEinTp2asTIAgPK3zrqt0rpV+d545f0Fi/Le/AUfez277PKZJMkmm2ySW2+9I61atVpizNChAzN9+rQ8/PDjqa4u39dkZS3XHmmuAYA11fHHH58LL7ww66+/fsNj06dPz1lnnZWxY8c2Y2UAAOWvdavqDD51QnOXsUx3XTJklYSIH5o+fXpuvfVX+epXj1xl61xdLNeNVY4//vhMnz690WPTp0/PCSec0CRFAQCUyiuvvJIePXo0eqxHjx556aWXmqkiAADKUbt27dKu3foZPfqGvPPOv5u7nJJbriMRNdcAwJpqo402yquvvprNN9+84bFXX33VZVsAAGikVavW+cpXjsill16Sn//82nznO6ct93MnTbo/t912a/71r39l0aKF6dp10+y994AcdtjhadmyZaOxQ4cOTJLccsttue66qzNp0u9SUzMrnTp1yn77HZAjjvhaKioqltjG3//+bG6++ab89a9/yezZ72ajjdpn112/kKOOOjYdO3b8eDuf5TwS8cPm+j9prgGANcGBBx6YE088MQ8++GD+7//+Lw888EBOOumkHHzwwc1dGgAAZeaggw5J165dM378uEyd+upHPyHJVVeNyllnnZ5XXnk5e+89IAcddEjq6+tz1VWX51vf+mYWLVq4xHPq6hblpJO+mQcffCCf//yu2W+/oVmwYEGuvPKyXH/9tUuMnzhxQo499huZPPmR7LRT7xx66LD07Pmp3Hnn+Bx55Fcyffq0j73vy3Uk4ofN9cknn5xNN900U6dOzc9+9jPNNQCw2jvmmGNSXV2dkSNHZvr06dlkk01y8MEH58gj177r3AAAUKy6ukWOP/6kfP/738sVV1yWkSMvKRz/7LN/zejRN6RTp03yi1/clPbtOyRJjjvuxJx22ql55JE/ZcyYm/L1rx/V6HlvvfVWttpq61x22ZVp3bp1kuSoo47NIYcMzS233Jyvf/0bqa5ukSSZOvXVXHzxBencuXOuvPLn2XjjjRvW8+STj+ekk47PT3/6vx9Z60fu+/IM0lwDAGuqysrKHH300Tn66KObuxQAAFYDffr0zXbbbZ8//vHB/OUvz2SHHXZc5ti77rozSXLkkUc1BIhJUl1dnW9965RMnvxI7rxz/BIhYpKccsp3GwLE5IMzhb/0pT1yzz0T8+qrr6Z7962SJLffPjaLFi3KySd/t1GAmCS9e38uX/zi7nn44Ycyb968tGnTZqX3e7lCRM01ALCmefPNN1NZWZlNNtkkSfLee+/l6quvzosvvpgdd9wxRx11VKqqqpq5SgAAytFJJ52c4cOPzGWX/TTXXz96qdcoTJIXXvhnkmSnnT67xLLNNts8G2+8cd58843MmTMnbdu2bVi23nrrZdNNN1viORtv3ClJMmfO7IbHnn32b0mSp59+Ks89948lnlNTU5O6urq89tqr2WabT63AXjZWGCJqrgGANdWZZ56ZYcOGNfQ5559/fp544on069cv48aNy9y5c3PKKac0c5UAAJSj7bb7dPr06ZsHHpiUSZPuT79+/Zc6bt68uUmSDh2WfmOT9u07ZPr06Zk7979DxLZLHf9hDldXt7jhsXfffTdJcvPNNxXWPH/+e4XLP0phiKi5BgDWVM8//3y+8IUvJEnmz5+fe+65JzfffHO23XbbHHTQQTnmmGP0OQAALNPxx5+Yhx76Q6666vLssUefpY5p02a9JMmsWW+na9dNl1g+a9bbSZYdGi6P9db7YBu///1DDdtrCoV3Z15ac33ppZfmtNNOy5VXXpm77767yQoDAGhKCxcuzLrrrpskefbZZ9OmTZtsu+22SZLu3bvn3//+d3OWBwBAmevaddMceODBefPNN/Kb39yy1DFbb71Nkg9ONf5vr702NTNnzkyXLp9odBTiitp22+2SJH/5yzMrvY7lURgiaq4BgDVV165d89hjjyVJHnjggey8884Ny2pqarLOOus0V2kAAKwmvvGNY9K2bduMHn193ntvydOFBw8ekiS54YafN8rR6urqMmrUpVm8eHHDmJV10EGHprq6OpdeekmmTn11ieULFy7MX/7y9MfaRvIRpzN/2FzvvPPOmmugrNUvWpiOHVf+k5umUFe7IDXv1jZ3GcAynHDCCfnmN7+ZTTfdNC+99FJ++ctfNiz7/e9/n+22264ZqwMAYHWw/vrr52tf+0Yuv/xnS12+/fafzuGHfy1jxozOsGEHp0+fvdK69Tp59NE/Z8qU/8unP71DDj/8ax+rhm7dtsiZZ56TCy44L4cddnB22eXz2WyzzbNo0aLMmDE9f/nLM9lwww1z6623f6ztFIaImmtgdVFR3SIvX1ped5Df4ts/TyJEhHLVt2/f3H777fnnP/+ZT33qU9l00///GjVbbrlldthhh+YrDgCA1cYhhxyWcePGZtq0N5e6/IQTvpUePbbJ2LG35t57786iRYvyiU90zbHHHp9hw45IixYtPnYN++wzMJ/85Nb51a/G5Omnn8jjjz+addZZJx06dEyfPnulb9+9P/Y2CkNEzTUAsCbbbLPNstlmmy3x+E477dQM1QAArH7eX7Aod13y8U7HbUrvL1i0Stbz6KPLPh24ZcuWueOOiYXP79ev/zLv4Pzfxo9f9j1Ihg8fkeHDRyx12VZbfTJnn33ecm1jZRSGiInmGgAAAICle2/+grw3f0Fzl0EJFN5YBQAAAABAiAgAAAAAFBIiAgAAAACFPvKaiAAAa6Jhw4aloqKicMzNN99comoAAKC8FYaImmsAYE118MEHN3cJAACw2igMETXXAMCaav/992/uEgAAYLVRGCJ+VHO9cOHCVVoMAECpjB8//iPHDB06tMnrAACA1cFKXROxtrY2t9xyS66//vr88Y9/XNU1AQA0udNPPz2bb755OnTokPr6+iWWV1RUCBEBAOD/KQwRX3rppZx55pl5/vnn061bt4wcOTIvv/xyfvSjH6VTp0457bTTSlUnAMAqdcQRR+S+++5LmzZtMnTo0PTt2zctW7Zs7rIAAKAsFYaIF1xwQbp165YRI0Zk4sSJOf7449O6deuMHDkyu+66a6lqBABY5c4888ycfvrp+dOf/pTx48fnwgsvzB577JGhQ4emd+/ezV0eAACUlcIQ8e9//3v+9Kc/pWXLlvnsZz+bnXbaKQ8++GA22WSTUtUHANBkqqqqsscee2SPPfbI3Llzc+WVV+arX/1qfvGLX2SXXXZp7vIAAKBsFIaICxcubDitZ911103btm0FiADAGmXOnDm5++67M378+NTU1OT4449Pz549m7ssAAAoK4UhYm1tbX72s581fP3+++83+jpJvvWtbzVNZQAATejBBx/MHXfckaeffjp9+vTJd7/73ey0007NXRYAAJSlwhBx8ODBmT59esPXAwcObPQ1AMDq6rjjjssWW2yRwYMHp3Xr1nn44Yfz8MMPNxrjw1IAgGLt2lSnqmWr5i5jmepqF2T2vEUfez277PKZRl9XVlambdt22WqrrTJ48NAMGLDvUp/3yisv57bbfpOnn34yM2bMyIIF72eDDTbI1ltvkz326JP+/fdJq1ZLf/1uuOHnueaaK5Mkt956ezbfvNvH3o+PozBEvOiiiwqfvHjx4lVaDABAqQwdOjQVFRV55513mrsUAIDVVlXLVnnpggObu4xl2vLMcckqCBE/dNRRxyRJFi1alKlTX81DD/0hTz31ZJ5//p/59rdPbTT2+uuvzfXXX5vFixdn2223y777Dsq6666TmpqaPP30U7nwwvNz++1jc+ONNy+xnfr6+tx114RUVFSkvr4+EybckZNOOnmV7cfKKAwRl+WFF17I+PHjc9dddy3xiT0AwOrg4osvLlzuw1IAAP7b8OEjGn39xBOP5aSTjs+tt/4qhxxyWLp06ZIkufHG63PddVenU6dNcsEFI7Ptttstsa6HH34ov/rVmKVu57HHJufNN9/IwIGDM3nyn3PPPXfluONOSIsWLVb9Ti2nyuUdWFNTk9GjR2f//ffP0KFD8+yzz+bMM89sytoAAEruhRdeyMiRI/OlL32puUsBAKDMffazO2fzzbulvr4+//znP5Ikb775Zn7+82tSXV2dn/zksqUGiEmy225fyqWXXr7UZRMm3JEkGTLkgPTvv0/eeeed/OEPDzTNTiynj7w78wMPPJA77rgjDz/8cDbbbLMMHDgwb775Zn72s5+lffv2paoTAKDJ1NTU5K677sr48ePz/PPPZ6eddvJhKQAAy6W+vj5JUlFRkSS5++4JWbRoUfr165/u3bcqfG7Lli2XeGzWrFn505/+mM022zzbb//ptGnTJr/+9ZhMmHB7+vXrv+p3YDkVhohf+MIXUlFRkQMOOCAnnnhievXqlST59a9/XZLiAACaig9LAQD4uB5//LFMnfpqKioq0rPnp5Ik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DMjYsWOzePHi1NTUZNKkSenfv38pSgQAWGF6HAAA1hYlOZ05SaZMmZLTTz89s2fPTrt27TJy5MhsueWWGT58eE466aRst912qaury/nnn59HHnkkSTJ8+PAceuihpSgPAGCl6HEAAFgblCxEBAAAAABWTyU5nRkAAAAAWH0JEQEAAACAQkJEAAAAAKCQEBEAAAAAKCREBAAAAAAKCRFLoE+fPnnxxReTJO+9916OOuqonHHGGamrq2sYc8QRR2S77bbLO++80/DYo48+mh49emTkyJGlLnmNsXDhwvzsZz9L//79M3DgwOyzzz65+OKLs3Dhwibf9n/Oe5Ebb7wxs2bNavJ6Vgf33ntvhg4dmiFDhmTAgAE59dRTkyRDhgzJ+++//7HWvbzzsTbp06dPBgwYkP322y/9+vXLcccdl6effjpJcvvtt6d3794ZMmRIhgwZkv333z+TJ09OktTX1+eyyy7LwIEDs99++2XffffNDTfc0LDet956K9/73vey1157ZdCgQRk6dGh+85vfNNr2t771rXz+859f4mexR48eOfroo5d4bN68eU3xEjSLpX0vHnDAAXnssccyatSofP7zn8/QoUPTv3//HHjggbnpppsavV/06NEjgwcPbvg5+elPf9qw7NFHH83BBx+cIUOGZJ999slXv/rVLF68OMkH8zZ69OgMHDgw++67bwYMGJCzzjors2fPbnj+H//4x/To0SOTJk1qVN/pp5+e7bbbLm+++Wajx8aMGbNKXxtWT/qc5qPPWb3oc0pHj9M89Diw5qtu7gLWJnPmzMkxxxyTXr165cwzz0xFRUWj5VtttVXuvvvufOUrX0mS3HHHHenVq1dzlLrGOOOMM7JgwYKMGzcu6623XhYuXJjbb789tbW1adGiRXOXlyS56aabsuuuu6Z9+/bNXUqzmjlzZs4777zccccd6dy5c+rr6/P8888nSSZMmNDM1a25Lrvssmy99dZJkvvvvz/HHHNMrr/++iTJrrvumssuuyzJB43X+eefn3vvvTe//e1vM3ny5Nx+++1p1apVamtrM3Xq1CQfBAiHH354DjjggFx88cWprKzM7Nmzc8899zRs85133snkyZOzxRZb5MEHH8zee+/dqKaXXnopjz/+eD73uc+V4iUoO0OHDs1pp52WJHnttdfy3e9+N1OnTs1ZZ53VMOaWW25JmzZt8t5772XgwIHp06dPevXqlZNOOik33XRTttlmmyTJc8891/Bec+mll+aJJ57I6NGj06FDhyxevDiTJk3Ku+++m3bt2iVJxo0bl1122SW33XZb+vbt26iujh07ZtSoUbnoootK8TKwGtLnlJ4+Z/Whzyk9PU750ePA6k+IWCKzZs3K9773vey555751re+tdQx+++/fyZMmJCvfOUrmTdvXp5++unsu+++qa2tbRhz3XXX5b777ktdXV06deqUH/7wh+nYsWMmT56cSy+9NAsWLEhdXV1GjBiRgQMHJvng0/9tt902f/nLXzJz5szss88++c53vpMkufzyyzNx4sS0atUqFRUVuemmmxp+0a7uXnnllUyaNCl//OMfs9566yVJWrRokUMPPTR1dXUZOXJk/vSnPyVJvvjFL+Y73/lOqqqqcvrpp6dly5Z55ZVX8tprr6Vfv37Zc889M2rUqEyfPj1f+9rX8rWvfS3JB5+2DRw4ME8//XRmzpyZr33tazn88MOXqGXmzJn50Y9+lDfffDMLFizIwIEDM2LEiFx11VWZOXNmTjrppLRq1SqXXHJJNttss/z0pz/NE088kYULF2brrbfOueeemzZt2pTuxWsGb7/9dqqrq7PBBhskSSoqKtKzZ88kH3wq+fTTT6dNmzbp06dPhgwZkj//+c9566238o1vfKPhNX/yySdz3nnnJUl23nnn/P73v88111zT0EB+aFnzsbbbe++987e//S3XX3999thjj0bL5syZk/XXXz9JMmPGjGy44YZp2bJlkqRly5bZaqutkiQTJ07MBhtskGOPPbbhue3atcuXv/zlhq/vvPPO7L777tltt90ybty4JRrsE088MT/5yU9yyy23NMVurlY23XTTXHDBBdlvv/3yrW99K23btm20/L333suiRYvStm3bzJs3L/Pnz0+HDh0aln/qU59KksybNy833HBDxo8f37C8srKy0Wv/73//O5MnT869996bgQMH5q233krHjh0bln/5y1/OmDFj8n//938N8w0f0ueUnj5n9aLPaV56nPKjx4HVkxCxRL797W9n2LBhy2yskw9+kbZs2TJTpkzJX/7yl/Tt2zfV1dUNzfWECRMyderU/OY3v0llZWV+9atf5eKLL84ll1yST33qU/nVr36VqqqqvP322znggAOy2267NbwhTps2LTfffHPmzZuXvn375qCDDsqGG26Y66+/PpMnT07r1q0zd+7ctG7duiSvRyk899xz2XzzzRteg/9066235p///Gduv/32JMnw4cNz6623ZtiwYUmSf/3rXxk9enTq6urSp0+fzJkzJ2PGjMlbb72VAQMG5KCDDmpodt9+++3cfPPNefvttzN06ND07t274ROyD5122mk5/vjj89nPfja1tbX5+te/nu222y7HHXdcxo4d2+iT0iuvvDJt27bNbbfdliT58Y9/nGuvvTYnn3xyk71W5WCbbbbJ9ttvnz322CM777xzPvOZz2TIkCHZcMMNlxj7/vvv59Zbb83rr7+ewYMHZ//990+LFi1yyimn5Cc/+Ul69+6d3/3ud/nlL3+51G0taz6+8IUvNPVulr1Pf/rTeeCBB7LHHnvkz3/+c4YMGZL58+enpqYm11xzTZJk3333za9//evsvffe6d27d3bZZZcMHDgw1dXV+cc//pHtt9++cBu33357TjvttOy444658MILM2PGjHTq1Klh+d57752bb745kyZNWuKT4jXFh39Qf+iVV15Z5tju3bundevWefnllxte2w//YHn11Vdz2GGHZcstt0ySHHLIIdl7773zuc99Lp/5zGcyePDgdO7cOVOmTEnLli0bxi3NhAkTsueee6ZDhw7p169fxo8fn+HDhzcsX3fddXPsscfmpz/9aa644oqPs/usgfQ5pafPWb3oc5qfHqc09DiwZhMilsjuu++ee+65J4cddlg23njjZY4bOnRo7rjjjvz1r3/ND37wg9x3330Nyx544IH8/e9/z/77758kqaura/jkuaamJt///vfz6quvpqqqKu+++25efvnl7LDDDkmSAQMGpLKyMm3btk337t0zderUbLrpptliiy3y3e9+N1/84hezxx57NKxvTTd58uTsv//+DZ8yHnDAAZk0aVJDc923b9+GZVtssUV23333VFZWplOnTmnXrl2mT5+e7t27J0kOOuigJEmHDh2yxx575PHHH2/UXM+fPz+PP/54ampqGh6bN29epkyZstRm7oEHHsjcuXMb5r62tnaJZn1NVFlZmSuvvDIvvvhinnjiiUyaNCnXX3997rrrriXG7rvvvkmSrl27NszHwoUL07p16/Tu3TtJ0q9fv6UebbKi87G2qa+vb/j3f57q89hjj+WUU07Jfffdl4033jh33313/vKXv+Spp57K1VdfnTvvvDPXX399o+cvzXPPPZfZs2dnl112SUVFRfr165cJEybkmGOOaTTu1FNPzQUXXJA+ffqs+p0sA//5B3Xywe+gFfHhqT6zZ8/O1772tYY/Rs4+++wceeSRefTRR/PQQw/lmmuuybhx4z5yXpIP/vA544wzknxwxNiZZ57ZqMFOPmjgb7jhhvz1r39doXpZ8+lzyos+p/zoc5qfHqc09DiwZhMilsjRRx+dBx98MEcccURGjBiRG2+8MUkyePDgRhfY3WeffTJw4MB06NAhW2+9daPmur6+Pscdd1xDM/efzj333PTp0yeXX355Kioq0r9//yxYsKBh+X9+GlRVVZW6urpUVVXlN7/5TZ5++uk8+uijOeCAA/Lzn/98jWnkPvWpT+XVV1/Nu+++u8Sn9PX19Utcq+k/v/7v12tpr9/SLG29ixcvTkVFRW677bbluj5RfX19zjnnnHz+85//yLFroq233jpbb711vvKVr2TffffN448/vsSYZc3Hf7/2S7Oi87G2efbZZ/PJT35yicd33nnnLFq0KP/617+y/fbbp7q6Or17907v3r1z4IEH5gtf+ELeeeedbLvtthk3btwy13/bbbdl9uzZ2WuvvZJ88MdjmzZtlmiwP//5z6dDhw658847V+0OroZeeumlvP/++0v9hL1du3bZdddd88gjjzQc0bDppptm0003zcEHH9zw3nPIIYdkwYIFefnll7PFFlsssZ5nn302U6ZMyZlnntnw2MyZM/P000/nM5/5TMNjLVq0yIknnphLLrkkXbp0aYK9ZXWlzyk9fc7qSZ/TfPQ45UePA6sfd2cuoWOPPTb7779/rr766lx33XWZMGHCEnfoatOmTb73ve81XHD2P/Xp0ye/+tWv8u677yb54I3pwwsyz5kzJ5/4xCdSUVGRRx55JK+++upH1jN37tzU1NTkc5/7XE466aRsvfXW+de//rUK9rQ8dOvWLX369MnZZ5+duXPnJvngqIbRo0dn5513zh133JGFCxdm4cKFGT9+/Eo3s3fccUeSD46SeOihh5a4UPJ6662XnXbaKddee23DY9OmTctbb72V5IM5nzNnTsOyPn365MYbb2y4S9/cuXMzZcqUlaptdTJjxow888wzDV9Pnz49NTU16dq163I9f8stt8z8+fPz1FNPJUkmTZrU6I5sH/qo+VibTZo0Kb/+9a9z5JFHLrHshRdeyLx589K1a9f8/e9/z+uvv96w7B//+EfWX3/9tGvXLgMHDkxNTU1+/vOfN3wyPHv27IwePTq1tbW5++67c9ttt+WBBx7IAw88kIcffjgVFRV58sknl9jmqaeemlGjRjXdDq8GXn/99Zx55pk57LDDlnoEVW1tbZ555pl069Yt8+bNy8MPP9zodX/99dfTtWvXtGnTJl//+tdz9tlnN9wltb6+PnfeeWemTp2acePG5eijj26YlwceeCAnnnjiUv9YGjx4cN55552l/uHL2k2fU1r6nNWLPqd56XHKjx4HVk+ORCyxESNGpL6+PkcccURuuummRtfI+NCHpzD8t6FDh+add95puLhyfX19DjvssGyzzTY59dRTc9555+W6665Ljx490qNHj4+sZe7cuTnxxBPz/vvvp76+Pp/61KeWuPjv6u7iiy/OFVdckQMPPDAtWrTI4sWLs/vuu+fkk0/OG2+80XDK1G677ZZDDjlkpbbRuXPnDBs2LG+99VaOPfbYpb72//u//5uLLroogwcPTvJBQ33BBRekY8eO+epXv5rvf//7ad26dS655JIcc8wxufzyy3PQQQeloqIiFRUVOeGEExpOK1pTLVq0KKNGjcobb7yR1q1bZ/Hixfn2t7/dcNHkj9KyZctccsklOffcc9O6devssssu6dChwxIXaU6K52Ntc9JJJ6Vly5Z577330r1791x77bXZYYcd8tJLLzVcL6i+vj719fW56KKLstFGG+Uf//hHzjvvvMydOzctW7bMOuuskyuuuCKVlZVZd91188tf/jI//vGPs9dee6VNmzaprq7OsGHDMmnSpGy22Wbp1q1boxoGDRqUcePGNZyi9aHtttsuvXr1atTMrw3Gjx+fyZMn57333st6662XwYMH54gjjmg05stf/nIqKyuzYMGCfO5zn8thhx2W2tra3HzzzfnhD3+YVq1apa6uLoMHD06/fv2SJKecckpuvPHGhnXV19end+/e+fznP5977rknv/71rxttY9CgQdlvv/0afXKffHBK3sknn7zWX6SfpdPnlJY+Z/Whzyk9PU750ePA6q+ifnkuIgAsVZ8+fXL11VcvcVc8msfcuXMbPsl89NFHc/rpp+eBBx5IZaWDrgFgRelzyos+B4Dm5khEYI1x//3358Ybb0x9fX3DJ/YaawBgTaDPAaC5ORIRAAAAACjkoyvWOn369MmLL77Y6LHhw4dn6tSpH/ncI444Ig8++GBTlbZWMQ8AsGp5by0f5gKANZHTmSHJdddd19wlEPMAAKua99byYS4AWN05EhHS+NPiI444IiNHjsxhhx2WvfbaK//7v/+71OfcfffdOfDAAzN9+vTcddddOfjggzN06NAMHTo0kydPbhj35JNPZvDgwRk8eHB+9KMfZc8992zY1ksvvZSjjz46Bx54YPbbb7+MGzeu6Xe2jJkHAFi1vLeWD3MBwOrOkYiwFNOmTcvNN9+cefPmpW/fvjnooIPSrVu3huXXXXddHnnkkdx4441p27ZtdttttwwaNCgVFRV56aWX8vWvfz0PPfRQamtrc8opp+QnP/lJevfund/97nf55S9/mSRZtGhRvvOd7+THP/5xunfvnrlz5+bAAw/MDjvskO7duzfTnpcX8wAAq5b31vJhLgBY3QgRYSkGDBiQysrKtG3bNt27d8/UqVMbmrpRo0alS5cuufbaa9OyZcskyWuvvZZTTz01M2bMSHV1dd5+++289dZbmTVrVlq3bp3evXsnSfr165d27dolSV555ZVMmTIlp5xySsN2Fy5cmJdeeklT9/+YBwBYtby3lg9zAcDqRogIS9GqVauGf1dVVaWurq7h6x122CGPPPJI3nzzzYZG75RTTsnpp5+evn37ZvHixfn0pz+dBQsWJEkqKiqWuo36+vpsuOGGmTBhQtPtyGrOPADAquW9tXyYCwBWN66JCCvoi1/8Ys4999wcc8wx+de//pUkmTNnTrp27Zokue2221JbW5sk2XLLLTN//vw89dRTSZJJkyZl9uzZSZItttgirVu3zvjx4xvWPWXKlMydO7eEe7P6Mg8AsGp5by0f5gKAcuRIRNZKRx55ZKqqqhq+njdv3go9//Of/3wuuuiiHHfccfnZz36WM844I8cff3w6deqUz33uc9lggw2SJC1btswll1ySc889N61bt84uu+ySDh06pG3btqmurs7VV1+dCy+8MNdff30WL16c9u3b59JLL12Fe1rezAMArFreW8uHuQBgTVNRX19f39xFwJps7ty5WW+99ZIkjz76aE4//fQ88MADqax0IHApmQcAWLW8t5YPcwFAKTgSEZrY/fffnxtvvDH19fUNnxRr6ErPPADAquW9tXyYCwBKwZGIAAAAAEAhH08BAAAAAIWEiAAAAABAISEiAAAAAFBIiAislFGjRuU73/lOc5dRUkcccUTGjh27StZ1+umn56c//ekqWRcAsOrocT4ePQ7AmkuICCzTXXfdlQMOOCA77rhjdttttxx99NF58sknV9n6X3/99fTo0SOLFi1a5evcf//9Gz1eU1OTbbfdNn369Fmu9ayNf0AAwNpCj6PHAWDFCRGBpbrhhhty4YUXZsSIEXnkkUfy4IMPZtiwYfn973/f3KU1KGrM58+fnxdffLHh64kTJ+YTn/hEKcoCAMqYHgcAVo4QEVjCnDlzctlll+Xss8/O3nvvnXXXXTctWrRInz59ctpppy0x/rHHHsuXvvSlRo/16dMnf/7zn5Mkf/vb33LAAQfkM5/5THbddddcdNFFSZLDDz88SfLZz342O+64Y5555pkkyW233ZZ99tknn/3sZ3PUUUfljTfeaFhvjx49cvPNN2fvvffO3nvvvcx9GDJkSO64446Gr8ePH5+hQ4c2GjNjxoyceOKJ2WWXXdKnT5/cdNNNSZKHHnoo11xzTe69997suOOO2W+//Rqe88Ybb+TLX/5ydtxxx3zjG99ITU1Nw7Lf//73GThwYHr37p0jjjgiU6ZMaVj23HPPZf/998+OO+6Yb3/721mwYMEyawcAmoYeR48DwMoTIgJLeOaZZ7JgwYL069dvlazvggsuyFe/+tU8/fTT+d3vfpd99tknSTJmzJgkyRNPPJFnnnkmO+64YyZNmpRrrrkml19+eSZPnpyddtopp556aqP1TZo0Kb/5zW9yzz33LHOb++23X+65557U1dVlypQpmTdvXj796U83LF+8eHGOO+649OjRIw899FBGjx6d0aNH509/+lO+9KUv5dhjj80+++yTZ555JnfeeWfD8yZOnJiLLrookydPzsKFC/OLX/wiSfLyyy/n1FNPzfe///1Mnjw5X/rSlzJixIjU1tamtrY23/zmNzNkyJA8/vjjGTBgQO6///5V8toCAMtPj6PHAWDlCRGBJbzzzjvZcMMNU11dvUrWV11dnalTp6ampiZt2rTJDjvssMyxt9xyS4455ph079491dXVGTFiRP75z382+qT+mGOOyQYbbJDWrVsvcz2bbLJJtthii/z5z3/OHXfcscQn9M8++2xqampywgknpGXLltl0001zyCGHFDbtSXLAAQdkiy22SOvWrTNgwID885//TJLcc8892X333fOFL3whLVq0yFFHHZX3338/zzzzTP76179m4cKF+drXvpYWLVpkwIAB2W677T76hQMAVik9zrLpcQD4KKvm3RNYo2ywwQb597//nUWLFq2SJvuCCy7IZZddln322Sddu3bNCSeckD333HOpY998881ceOGFGTlyZMNj9fX1mTFjRsP1fjp37rxc2x06dGjuuOOOPPPMMxkzZkxeffXVhmVvvPFGZs6cmd69ezc8VldX1+jrpenYsWPDv9dZZ53Mnz8/STJz5sx06dKlYVllZWU6d+6cGTNmpKqqKp06dUpFRUXD8v8cCwCUhh5n2fQ4AHwUISKwhB133DGtWrXKpEmTMmDAgI8cv8466+T9999v+Lqurq7RdXS6deuWn/zkJ1m8eHHuv//+nHTSSXnssccaNZwf6ty5c0aMGNHoGj3/bWnPW5q99947559/fnr16pVPfOITjRrszp07p2vXrss85WZ5t/GhjTfeuNFFzuvr6zNt2rSGxnrGjBmpr69vWO+bb76ZTTfddIW2AQB8PHocPQ4AK8/pzMAS2rZtm5NOOinnn39+Jk2alPfeey8LFy7MH//4x/zP//zPEuO32GKLLFiwIH/4wx+ycOHCXHXVVamtrW1YPmHChNTU1KSysjLt2rVLklRVVWWjjTZKZWVlXnvttYaxX/7yl3PttdfmX//6V5IPLoB+7733rtR+rLvuuhk9enQuuOCCJZZtv/32WW+99XLttdfm/fffT11dXV588cX87W9/S5K0b98+b7zxRhYvXrxc29pnn33yxz/+sdF1hFq2bJkdd9wxO+ywQ6qrq3PTTTdl0aJFuf/++/Pss8+u1D4BACtPj6PHAWDlORIRWKojjzwy7du3z5VXXpnvfOc7adOmTXr16pURI0YsMbZt27Y555xzctZZZ6Wuri5HH310Ntlkk4blf/rTn3LxxRfn/fffT5cuXfLTn/40rVq1SpKMGDEihx12WBYtWpSf//zn6devX+bNm5dTTjklb7zxRtq2bZtdd9214ULlK2pZ1+WpqqrKVVddlZEjR2avvfZKbW1ttthii3z7299OkgwYMCB33nlndt5553Tt2rXRXRCXZsstt8yPf/zj/PCHP8yMGTPSs2fPXH311WnZsmWSZNSoUfnBD36QSy+9NLvvvvsqu6A7ALBi9Dh6HABWTkV9fX19cxcBAAAAAJQvpzMDAAAAAIWEiAAAAABAISEiAAAAAFBIiAgAAAAAFBIiAgAAAACFhIgAAAAAQCEhIgAAAABQSIgIAAAAABQSIgIAAAAAhf4/CloNMVWO0NsAAAAASUVORK5CYII=\n",
"text/plain": [
"<Figure size 1152x576 with 2 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plot_scores(pd.concat([pendigits_raw_results_long, pendigits_pca_results_long]))"
]
},
{
"cell_type": "code",
"execution_count": 20,
"id": "7ed13ce0",
"metadata": {},
"outputs": [],
"source": [
"umap_pendigits = umap.UMAP(n_components=4, min_dist=1e-8, random_state=0).fit_transform(raw_pendigits)"
]
},
{
"cell_type": "code",
"execution_count": 21,
"id": "672c33fb",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"CPU times: user 2.17 s, sys: 52.3 ms, total: 2.22 s\n",
"Wall time: 394 ms\n"
]
}
],
"source": [
"%%time\n",
"km_umap_labels = cluster.KMeans(n_clusters=10).fit_predict(umap_pendigits)\n",
"cl_umap_labels = cluster.AgglomerativeClustering(n_clusters=10, linkage=\"complete\").fit_predict(umap_pendigits)\n",
"sl_umap_labels = cluster.AgglomerativeClustering(n_clusters=20, linkage=\"single\").fit_predict(umap_pendigits)\n",
"db_umap_labels = cluster.DBSCAN(eps=0.5).fit_predict(umap_pendigits)\n",
"hd_umap_labels = hdbscan.HDBSCAN(min_samples=5, min_cluster_size=100).fit_predict(umap_pendigits)"
]
},
{
"cell_type": "code",
"execution_count": 22,
"id": "cb953751",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"ARI: 0.8207\n",
"AMI: 0.9015\n",
"Silhouette: 0.1602\n",
"ARI: 0.8344\n",
"AMI: 0.9020\n",
"Silhouette: 0.1726\n",
"ARI: 0.8920\n",
"AMI: 0.9176\n",
"Silhouette: 0.1446\n",
"Pct clustered: 99.94%\n",
"ARI: 0.9196\n",
"AMI: 0.9331\n",
"Silhouette: 0.1543\n",
"ARI: 0.9373\n",
"AMI: 0.9454\n",
"Silhouette: 0.1690\n",
"Pct clustered: 97.94%\n"
]
}
],
"source": [
"pendigits_umap_results = pd.DataFrame(\n",
" [\n",
" eval_clusters(km_umap_labels, digits.target, raw_pendigits, cluster_method=\"K-Means\"),\n",
" eval_clusters(cl_umap_labels, digits.target, raw_pendigits, cluster_method=\"Complete\\nLinkage\"),\n",
" eval_clusters(sl_umap_labels, digits.target, raw_pendigits, cluster_method=\"Single\\nLinkage\"),\n",
" eval_clusters(db_umap_labels, digits.target, raw_pendigits, cluster_method=\"DBSCAN\"),\n",
" eval_clusters(hd_umap_labels, digits.target, raw_pendigits, cluster_method=\"HDBSCAN\"),\n",
" ]\n",
")\n",
"pendigits_umap_results_long = pendigits_umap_results.melt([\"Method\", \"Pct Clustered\"], var_name=\"Score Type\", value_name=\"Score\")\n",
"pendigits_umap_results_long[\"Dim Reduction\"] = \"UMAP\""
]
},
{
"cell_type": "code",
"execution_count": 23,
"id": "8d2fd783",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAABREAAAI0CAYAAACKxG4UAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAAsTAAALEwEAmpwYAABaCUlEQVR4nO3debhVZdk/8O8ZOKAIooAIOaCYSKhpUppZGqGggOCcpJUpiqaWWqlZTqVGveaAOWYOYaWIzFhGmqSh5lBppvY6oYKgEMqgDIfz+8PX84uABSh7n8Ph87kur8uz17Ofde/9sM++z3fvtVZFXV1dXQAAAAAAVqKyoQsAAAAAABo3ISIAAAAAUEiICAAAAAAUEiICAAAAAIWEiAAAAABAISEiAAAAAFBIiAgAAAAAFBIiAo3WNddck65du6Zr16554YUXVjjmrrvuqh/z/n877rhjPv/5z+eMM87IM888s8L7DRs2LF27ds2wYcNK+RAAAJaxpv3NUUcdtdK5Xn311eywww71Y//bym4HgA9CiAg0SnV1dbnzzjtTUVGRJBkxYkTh+B122CEnn3xyTj755HzpS19Ku3btMn78+Bx22GF57LHHylEyAEChNe1vqqur85e//GWlYeOIESNSV1eX6urqtV4rAPw3ISLQKD3wwAN59dVXc9BBB6Vdu3YZNWpUFi1atNLx3bp1yymnnJJTTjklZ599dkaMGJEjjjgiixYtyuWXX16+wgEAVmJN+5t99tknyYrDxtra2tx1113Zaaed0rZt21KVDAD1hIhAo/R+s3zYYYelf//++fe//51Jkyat0RyHHnpokuSpp55a6/UBAKypNe1vtttuu+y6664ZPXp0Fi9evMy2P/7xj5k5c2YOP/zwktYMAO8TIgKNzptvvpl77703nTt3zic+8YkcfPDBSZLbb7/9A83nEB8AoKF90P7msMMOy+zZs/OHP/xhmdtHjBiRDTfcMAcccEDJagaA/yREBBqdu+66K4sXL65vrrfffvt07949Dz/8cF5++eXVnueOO+5Ikuy2224lqRMAYHV90P7mgAMOyEYbbbTMIc0zZszI5MmT07dv32y00UYlrx0AEiEi0MjU1dVlxIgRqayszMCBA+tvP+igg+q3rcg///nPDBs2LMOGDcsll1ySQw45JCNGjMhmm22WM888s0zVAwAs74P2N0mywQYbpF+/fnnwwQfz6quvJknuvPPO1NbWOpQZgLISIgKNykMPPZSpU6dmzz33TIcOHepv79evX5o1a5ZRo0Ytd06gJHnmmWdy1VVX5aqrrsrNN9+cp556Kp06dcrtt9+ebbbZppwPAQBgGR+0v3nf4YcfXn9l56VLl2bkyJHp2rVrdt5553KUDwBJhIhAI/P+eYHeP9TnfZtsskl69uyZN998c7lzAiXvfZL/7LPP5plnnsmDDz6Y0047LdOnT8+QIUPyzjvvlKV2AIAV+aD9zfu6d++e7t2756677srkyZPz2muv+RYiAGUnRAQajdmzZ9dfofD0009P165dl/nvd7/7XZL/f67DFamoqEi7du0yZMiQHHPMMXn22Wdz+eWXl6N8AIDlrI3+Jnnv24gzZszIeeedlxYtWuTAAw8see0A8J9cshRoNN4/lKd79+7p1q3bCsfce++9+fOf/5xXXnklW265ZeF8X//61zN69OjcdtttOeqoo1Y5HgBgbVtb/U2/fv0ydOjQvP766xk4cGBat25dyrIBYDlCRKDReP+k4ueff/5Kz/Fz+eWX55prrsmdd96Z0047rXC+jTbaKIMHD87QoUNz1VVXZejQoWu9ZgCAImurv9loo41yww03ZM6cOenevXvJ6gWAlXE4M9AoPPzww3nxxRez/fbbF54k/NBDD01FRUVGjhyZJUuWrHLeQYMGpX379hk7dmz+93//d22WDABQaG33Nz169EivXr3SsWPHUpQLAIWEiECj8P55gA477LDCcVtssUX23HPPvPHGG7nvvvtWOW+LFi1ywgknZOnSpbniiivWSq0AAKujVP0NADSEirq6urqGLgIAAAAAaLx8ExEAAAAAKCREBAAAAAAKCREBAAAAgEJCRAAAAACgkBARAAAAACgkRAQAAAAAClU3dAFr27//PT9Ll9Y1dBkAQJlUVlZkk01aNnQZZaHPAYD1x/rU47BuaHIh4tKldZprAKBJ0ucAANBQHM4MAAAAABQSIgIAAAAAhYSIAAAAAEAhISIAAAAAUEiICAAAAAAUEiICAAAAAIWEiAAAAABAISEiAAAAAFBIiAgAAAAAFBIiAgAAAACFhIgAAAAAQCEhIgAAAABQSIgIAAAAABQSIgIAAAAAhYSIAAAAAEAhISIAAAAAUKgsIeLQoUPTs2fPdO3aNc8999wKx9TW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2WGHj63Bo1y11b4qguYaAGiKnnjiiZxwwgnZdttt06lTp9x33325+OKLc91112XXXVf+STMAAOuHnXb6eHr27JV7752USZPuyb779l7huPnz5yVJ2rVb8YVN2rZtl9dffz3z5v13iNhqheOrqqqSJLW1S+tve+utt5Ikt912a2HNCxas/QuVrlaIqLkGAJqqiy++OOedd1769u1bf9vEiRPzwx/+MCNHjmzAygAAaCxOOumUTJ78x1xzzVXZZ5+eKxzTsuVGSZJZs97MFltsudz2WbPeTLLy0HB1bLTRe/v4wx8m1++vXCpXZ9D7zfVvfvOb/PSnP81vfvObnH/++fnhD39Y6voAAErqpZdeyv7777/Mbb17987UqVMbqCIAABqbLbbYMoccclimTXstd9zxmxWO2X77HZK8d6jxf3vllamZOXNmOnX6yDLfQlxTO+64U5Lkr3994gPP8UGtVoiouQYAmqqtt946EyZMWOa23/72t9lyy+U/PQYAYP31ta8dn1atWuWWW27MO+8sf7hw//4DkiQ33fTz/Pvf/66/vba2NsOGXZ6lS5fWj/mgDj30iFRXV+fyyy/N1KkvL7d98eLF+etfH/9Q+1iZ1Tqc+f3mun///vW3aa4BgKbgu9/9boYMGZJf/vKX6dSpU1577bW8/PLLufbaaxu6NAAAGpGNN944X/nK13LVVVescPvOO388Rx31lQwffksGDTosPXt+IS1abJCHHvpznn/+f/Pxj++So476yoeqoXPnbXLOOefloosuyJFHHpY99vh0ttpq6yxZsiQzZryev/71iWyyySa5/fa7PtR+VmS1QkTNNQDQVH3iE5/I73//+/zxj3/MzJkz8/nPfz5777132rRp09ClAQA0Ku8uXJJxl364b9KV0rsLl5R8H4cffmRGjhyR6dOnrXD7ySd/I1277pARI27P3XdPyJIlS/KRj2yRE044KYMGHZ1mzZp96Br2379vPvrR7fOrXw3P44//JY888lA22GCDtGvXPj17fiG9eu33ofexIqsVImquAYCmasaMGWnRokUGDPj/DfFbb72VGTNmpEOHDg1YGQBA4/LOgoV5Z8HChi6j5B56aOWHA9fU1GTUqPGF9993394rvYLzfxs9esJKtw0ePCSDBw9Z4bbttvtozj33gtXax9qyWudEnDFjRpJkwIABGTx4cAYMGJCKior62wEA1lUnnXRSXn/99WVue/3113PyySc3UEUAAND4rFaIqLkGAJqql156KV27dl3mtq5du+aFF15ooIoAAKDxWe2rM2uuAYCmaNNNN83LLy97ZbuXX37ZaVsAAOA/rFaIqLkGAJqqQw45JKecckruu+++/O///m/uvffenHrqqTnssMMaujQAAGg0VuvCKu8316eddlq23HLLTJ06NVdccYXmGgBY5x1//PGprq7O0KFD8/rrr2fzzTfPYYcdlmOOOaahSwMAgEZjtUJEzTUA0FRVVlbmuOOOy3HHHdfQpQAAQKO1WiGi5hoAaGqmTZuWysrKbL755kmSd955J9dee22ee+657Lrrrjn22GNTVVXVwFUCAEDjUHhOxGnTpi1zVeZ33nknl112WU488cRcf/31qa2tLXmBAAClcM455+TJJ5+s//nCCy/MhAkT0rlz54wcOTJXXHFFA1YHAACNS2GIqLkGAJqqZ555Jp/5zGeSJAsWLMjEiRNz+eWX58wzz8zVV1+dCRMmNHCFAADQeBSGiJprAKCpWrx4cTbccMMkyZNPPpmWLVtmxx13TJJ06dIl//73vxuyPAAAaFQKQ0TNNQDQVG2xxRZ5+OGHkyT33ntvdt999/pts2fPzgYbbNBQpQEAQKNTeGGV95vr3XffXXMNlFXdksVp375VQ5cBNGEnn3xyvv71r2fLLbfMCy+8kF/+8pf12/7whz9kp512asDqAACgcSkMETXXQEOpqG6WFy8v7RXht/nmz0s6P9C49erVK3fddVf++c9/5mMf+1i23HLL+m3bbrttdtlll4YrDgAAGpnCEFFzDQA0ZVtttVW22mqr5W7fbbfdGqAaAIDGrXXL6lTVNG/oMlaqdtHCvD1/SUOX0WQVhoiJ5hoAAACApKqmeV646JCGLmOltj1nZLIWQsQ99vjEMj9XVlamVavW2W677dK//8D06XPACu/30ksv5s4778jjjz+aGTNmZOHCd9OmTZtsv/0O2Wefnunde/80b77iEPamm36e6667Okly++13ZeutO3/ox7G2rTJEBAAAAID1zbHHHp8kWbJkSaZOfTmTJ/8xjz32aJ555p/55jfPWGbsjTdenxtvvD5Lly7NjjvulAMO6JcNN9wgs2fPzuOPP5aLL74wd901IjfffNty+6mrq8u4cWNSUVGRurq6jBkzKqeeelpZHuOaECICAAAAwH8ZPHjIMj//5S8P59RTT8rtt/8qhx9+ZDp16pQkufnmG3PDDdemQ4fNc9FFQ7PjjstfQ+SBBybnV78avsL9PPzwlEyb9lr69u2fKVP+nIkTx+XEE09Os2bN1v6D+hAqG7oAAAAAAGjsPvnJ3bP11p1TV1eXf/7zH0mSadOm5ec/vy7V1dX56U+vXGGAmCR77fW5XH75VSvcNmbMqCTJgAEHp3fv/TNnzpz88Y/3luZBfAi+iQgArJcGDRqUioqKwjG33bb84SYAAKy/6urqkqS+j5wwYUyWLFmSffftnS5dtiu8b01NzXK3zZo1K3/60/3Zaquts/POH0/Lli3z618Pz5gxd2XffXuv/QfwIRSGiJprAKCpOuywwxq6BAAA1iGPPPJwpk59ORUVFenW7WNJkr/97a9Jkh49PvWB5pwwYWyWLFmSvn37J0m6dNkuXbvukMceezSvvDI1W265/MWOG0phiKi5BgCaqoMOOqihSwAAoBG74YZrkyx7YZW6urp88YtfSseO750P8c0330ySbLbZZms8f11dXcaOHZXKysrsv3+/+tv79j0wzz7744wdOzpf//qpa+GRrB2FIeKqmuvFixev1WIAAMpl9OjRqxwzcODAktcBAEDjdOON1yd579DlVq1a5eMf3zX9+w/I/vv3rR/z34c3r4lHH30kr776avbY49PLhJC9e/fJsGGXZcKEcTnhhBNTXd04LrDygc6JuGjRovzmN7/JjTfemPvvv39t1wQAUHJnnXVWtt5667Rr166++ftPFRUVQkQAgPXYQw89vsox7du3z8svv5SZM2eu8fyjR9+V5L1vHv6njTduk732+lzuu+8PmTz5/vTs2WuN5y6FwhDxhRdeyDnnnJNnnnkmnTt3ztChQ/Piiy/mhz/8YTp06JAzzzyzXHUCAKxVRx99dH73u9+lZcuWGThwYHr16rXCk10DAMDKfPzju+TRR/+SRx99JAceOHC17/fvf/87kyf/MUny/e+fne9//+wVjhs9+q51I0S86KKL0rlz5wwZMiTjx4/PSSedlBYtWmTo0KHZc889y1UjAMBad8455+Sss87Kn/70p4wePToXX3xx9tlnnwwcODA9evRo6PIAAFgH9O07ILfcclPuu+8PefHFF7LNNtuudOyiRYvqP7SeOHFcFi9enB126JaPfrTrCsc/8MD9+ctfHs60aa+lU6ePlKT+NVEYIj711FP505/+lJqamnzyk5/Mbrvtlvvuuy+bb755ueoDACiZqqqq7LPPPtlnn30yb968XH311fnyl7+cX/ziF9ljjz0aujwAABq5Tp065bjjTsi11/4sp59+ai6++Mf1V27+T1OmPJjhw2/Jz3723nkWx44dnST59rfPTvfuO65w7uuuuzo33fTzjBkzKieeeHLJHsPqKgwRFy9eXJ+QbrjhhmnVqpUAEQBoUubOnZsJEyZk9OjRmT17dk466aR069atocsCAGAd8dWvHpva2trceOP1OeaYo7LTTh9Pt24fywYbbJDZs2fnr399PK+8MrU+XHzssUfz8ssvpUuX7VYaICZJ//4Dc/PNN2bChLEZPHhIqqs/0KVN1prCvS9atChXXHFF/c/vvvvuMj8nyTe+8Y3SVAYAUEL33XdfRo0alccffzw9e/bMt7/97ey2224NXRYAQKNVu2hhtj1nZEOXsVK1ixY22L6PPfb49OzZKyNHjsjjjz+a8ePHZtGihdl44zb56Ee3z9FHfzV9+hyQJBkzZlSS5MADDyqcs1OnTvnkJ3fPI488lAcemJx99ulZ8sdRpDBE7N+/f15//fX6n/v27bvMzwAA66oTTzwx22yzTfr3758WLVrkgQceyAMPPLDMGB+WAgD8f2/PX5LMX9LQZZTc6lyVeUW22WbbfOtbq74I8YUXXpQLL7xotea88sqrP1AtpVAYIl5yySWFd166dOlaLQYAoFwGDhyYioqKzJkzp6FLAQCARu8DHUz97LPPZvTo0Rk3btxyn9gDAKwLfvSjHxVu92EpAAD8f6sdIs6ePTvjxo3L6NGj88wzz2S33XbLOeecU8raAADKzoelAACwvFVenfnee+/NqFGj8sADD2SrrbZK3759M23atFxxxRVp27ZtueoEACgZH5YCAECxwhDxM5/5TCoqKnLwwQfnlFNOSffu3ZMkv/71r8tSHABAqfiwFAAAVl9hiNi1a9c89thj+dvf/patt946W2yxRTbeeONy1QYAUDI+LAUAgNVXWbTxl7/8ZX7/+9/nM5/5TH7xi1/kM5/5TIYMGZIFCxZkyZKmf0lvAKDp6tq1a+bOnZu//e1vefLJJ/PWW281dEkAANBoFYaISfKRj3wkX//613PPPffk5ptvTvv2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eeWV6du3bw488MAccMABuemmm+rnfeONN/Kd73wnX/jCF9KvX78MHDgwd9xxxzL7/sY3vpFPf/rTy70Wu3btmuOOO2652+bPn1+Kp6BBrOjf4sEHH5yHH344w4YNy6c//ekMHDgwvXv3ziGHHJJbb711mfeLrl27pn///vWvk8suu6x+20MPPZTDDjssAwYMyP77758vf/nLWbp0aZL31u2WW25J3759c8ABB6RPnz753ve+l7fffrv+/vfff3+6du2aSZMmLVPfWWedlZ122inTpk1b5rbhw4ev1eeGdZM+p+Hoc9Yt+pzy0eM0DD0ONH3VDV3A+mTu3Lk5/vjj071795xzzjmpqKhYZvt2222XCRMm5Etf+lKSZNSoUenevXtDlNpknH322Vm4cGFGjhyZjTbaKIsXL85dd92VRYsWpVmzZg1dXpLk1ltvzZ577pm2bds2dCkNaubMmbngggsyatSodOzYMXV1dXnmmWeSJGPGjGng6pquK6+8Mttvv32S5J577snxxx+fG2+8MUmy55575sorr0zyXuN14YUX5u67785vf/vbTJkyJXfddVeaN2+eRYsWZerUqUneCxCOOuqoHHzwwfnRj36UysrKvP3225k4cWL9PufMmZMpU6Zkm222yX333Zf99ttvmZpeeOGFPPLII/nUpz5Vjqeg0Rk4cGDOPPPMJMkrr7ySb3/725k6dWq+973v1Y/5zW9+k5YtW+add95J375907Nnz3Tv3j2nnnpqbr311uywww5Jkqeffrr+vebyyy/PX/7yl9xyyy1p165dli5dmkmTJuWtt95K69atkyQjR47MHnvskTvvvDO9evVapq727dtn2LBhueSSS8rxNLAO0ueUnz5n3aHPKT89TuOjx4F1nxCxTGbNmpXvfOc7+fznP59vfOMbKxxz0EEHZcyYMfnSl76U+fPn5/HHH88BBxyQRYsW1Y+54YYb8rvf/S61tbXp0KFDfvCDH6R9+/aZMmVKLr/88ixcuDC1tbUZMmRI+vbtm+S9T/933HHH/PWvf83MmTOz//7751vf+laS5Kqrrsr48ePTvHnzVFRU5NZbb63/Rbuue+mllzJp0qTcf//92WijjZIkzZo1yxFHHJHa2toMHTo0f/rTn5Ikn/3sZ/Otb30rVVVVOeuss1JTU5OXXnopr7zySvbdd998/vOfz7Bhw/L666/nK1/5Sr7yla8kee/Ttr59++bxxx/PzJkz85WvfCVHHXXUcrXMnDkzP/zhDzNt2rQsXLgwffv2zZAhQ3LNNddk5syZOfXUU9O8efNceuml2WqrrXLZZZflL3/5SxYvXpztt98+559/flq2bFm+J68BvPnmm6murk6bNm2SJBUVFenWrVuS9z6VfPzxx9OyZcv07NkzAwYMyJ///Oe88cYb+drXvlb/nD/66KO54IILkiS77757/vCHP+S6666rbyDft7L1WN/tt99++fvf/54bb7wx++yzzzLb5s6dm4033jhJMmPGjGyyySapqalJktTU1GS77bZLkowfPz5t2rTJCSecUH/f1q1b54tf/GL9z2PHjs3ee++dvfbaKyNHjlyuwT7llFPy05/+NL/5zW9K8TDXKVtuuWUuuuiiHHjggfnGN76RVq1aLbP9nXfeyZIlS9KqVavMnz8/CxYsSLt27eq3f+xjH0uSzJ8/PzfddFNGjx5dv72ysnKZ5/7f//53pkyZkrvvvjt9+/bNG2+8kfbt29dv/+IXv5jhw4fnf//3f+vXG96nzyk/fc66RZ/TsPQ4jY8eB9ZNQsQy+eY3v5lBgwattLFO3vtFWlNTk+effz5//etf06tXr1RXV9c312PGjMnUqVNzxx13pLKyMr/61a/yox/9KJdeemk+9rGP5Ve/+lWqqqry5ptv5uCDD85ee+1V/4Y4ffr03HbbbZk/f3569eqVQw89NJtsskluvPHGTJkyJS1atMi8efPSokWLsjwf5fD0009n6623rn8O/tPtt9+ef/7zn7nrrruSJIMHD87tt9+eQYMGJUn+9a9/5ZZbbkltbW169uyZuXPnZvjw4XnjjTfSp0+fHHroofXN7ptvvpnbbrstb775ZgYOHJgePXrUf0L2vjPPPDMnnXRSPvnJT2bRokX56le/mp122iknnnhiRowYscwnpVdffXVatWqVO++8M0nyk5/8JNdff31OO+20kj1XjcEOO+yQnXfeOfvss0923333fOITn8iAAQOyySabLDf23Xffze23355XX301/fv3z0EHHZRmzZrl9NNPz09/+tP06NEjv//97/PLX/5yhfta2Xp85jOfKfXDbPQ+/vGP5957780+++yTP//5zxkwYEAWLFiQ2bNn57rrrkuSHHDAAfn1r3+d/fbbLz169Mgee+yRvn37prq6Ov/4xz+y8847F+7jrrvuyplnnpldd901F198cWbMmJEOHTrUb99vv/1y2223ZdKkSct9UtxUvP8H9fteeumllY7t0qVLWrRokRdffLH+uX3/D5aXX345Rx55ZLbddtskyeGHH5799tsvn/rUp/KJT3wi/fv3T8eOHfP888+npqamftyKjBkzJp///OfTrl277Lvvvhk9enQGDx5cv33DDTfMCSeckMsuuyw/+9nPPszDpwnS55SfPmfdos9peHqc8tDjQNMmRCyTvffeOxMnTsyRRx6ZzTbbbKXjBg4cmFGjRuVvf/tbvv/97+d3v/td/bZ77703Tz31VA466KAkSW1tbf0nz7Nnz853v/vdvPzyy6mqqspbb72VF198MbvsskuSpE+fPqmsrEyrVq3SpUuXTJ06NVtuuWW22WabfPvb385nP/vZ7LPPPvXzNXVTpkzJQQcdVP8p48EHH5xJkybVN9e9evWq37bNNttk7733TmVlZTp06JDWrVvn9ddfT5cuXZIkhx56aJKkXbt22WefffLII48s01wvWLAgjzzySGbPnl1/2/z58/P888+vsJm79957M2/evPq1X7Ro0XLNelNUWVmZq6++Os8991z+8pe/ZNKkSbnxxhszbty45cYecMABSZItttiifj0WL16cFi1apEePHkmSfffdd4XfNlnT9Vjf1NXV1f//fx7q8/DDD+f000/P7373u2y22WaZMGFC/vrXv+axxx7Ltddem7Fjx+bGG29c5v4r8vTTT+ftt9/OHnvskYqKiuy7774ZM2ZMjj/++GXGnXHGGbnooovSs2fPtf8gG4H//IM6ee930Jp4/1Cft99+O1/5ylfq/xg599xzc8wxx+Shhx7K5MmTc91112XkyJGrXJfkvT98zj777CTvfWPsnHPOWabBTt5r4G+66ab87W9/W6N6afr0OY2LPqfx0ec0PD1OeehxoGkTIpbJcccdl/vuuy9HH310hgwZkptvvjlJ0r9//2VOsLv//vunb9++adeuXbbffvtlmuu6urqceOKJ9c3cfzr//PPTs2fPXHXVVamoqEjv3r2zcOHC+u3/+WlQVVVVamtrU1VVlTvuuCOPP/54HnrooRx88MH5+c9/3mQauY997GN5+eWX89Zbby33KX1dXd1y52r6z5//+/la0fO3Iiuad+nSpamoqMidd965Wucnqqury3nnnZdPf/rTqxzbFG2//fbZfvvt86UvfSkHHHBAHnnkkeXGrGw9/vu5X5E1XY/1zZNPPpmPfvSjy92+++67Z8mSJfnXv/6VnXfeOdXV1enRo0d69OiRQw45JJ/5zGcyZ86c7Ljjjhk5cuRK57/zzjvz9ttv5wtf+EKS9/54bNmy5XIN9qc//em0a9cuY8eOXbsPcB30wgsv5N13313hJ+ytW7fOnnvumQcffLD+Gw1bbrllttxyyxx22GH17z2HH354Fi5cmBdffDHbbLPNcvM8+eSTef7553POOefU3zZz5sw8/vjj+cQnPlF/W7NmzXLKKafk0ksvTadOnUrwaFlX6XPKT5+zbtLnNBw9TuOjx4F1j6szl9EJJ5yQgw46KNdee21uuOGGjBkzZrkrdLVs2TLf+c536k84+5969uyZX/3qV3nrrbeSvPfG9P4JmefOnZuPfOQjqaioyIMPPpiXX355lfXMmzcvs2fPzqc+9amceuqp2X777fOvf/1rLTzSxqFz587p2bNnzj333MybNy/Je99quOWWW7L77rtn1KhRWbx4cRYvXpzRo0d/4GZ21KhRSd77lsTkyZOXO1HyRhttlN122y3XX399/W3Tp0/PG2+8keS9NZ87d279tp49e+bmm2+uv0rfvHnz8vzzz3+g2tYlM2bMyBNPPFH/8+uvv57Zs2dniy22WK37b7vttlmwYEEee+yxJMmkSZOWuSLb+1a1HuuzSZMm5de//nWOOeaY5bY9++yzmT9/frbYYos89dRTefXVV+u3/eMf/8jGG2+c1q1bp2/fvpk9e3Z+/vOf138y/Pbbb+eWW27JokWLMmHChNx555259957c++99+aBBx5IRUVFHn300eX2ecYZZ2TYsGGle8DrgFdffTXnnHNOjjzyyBV+g2rRokV54okn0rlz58yfPz8PPPDAMs/7q6++mi222CItW7bMV7/61Zx77rn1V0mtq6vL2LFjM3Xq1IwcOTLHHXdc/brce++9OeWUU1b4x1L//v0zZ86cFf7hy/pNn1Ne+px1iz6nYelxGh89DqybfBOxzIYMGZK6urocffTRufXWW5c5R8b73j+E4b8NHDgwc+bMqT+5cl1dXY488sjssMMOOeOMM3LBBRfkhhtuSNeuXdO1a9dV1jJv3ryccsopeffdd1NXV5ePfexjy538d133ox/9KD/72c9yyCGHpFmzZlm6dGn23nvvnHbaaXnttdfqD5naa6+9cvjhh3+gfXTs2DGDBg3KG2+8kRNOOGGFz/3//M//5JJLLkn//v2TvNdQX3TRRWnfvn2+/OUv57vf/W5atGiRSy+9NMcff3yuuuqqHHrooamoqEhFRUVOPvnk+sOKmqolS5Zk2LBhee2119KiRYssXbo03/zmN+tPmrwqNTU1ufTSS3P++eenRYsW2WOPPdKuXbvlTtKcFK/H+ubUU09NTU1N3nnnnXTp0iXXX399dtlll7zwwgv15wuqq6tLXV1dLrnkkmy66ab5xz/+kQsuuCDz5s1LTU1NNthgg/zsZz9LZWVlNtxww/zyl7/MT37yk3zhC19Iy5YtU11dnUGDBmXSpEnZaqut0rlz52Vq6NevX0aOHFl/iNb7dtppp3Tv3n2ZZn59MHr06EyZMiXvvPNONtpoo/Tv3z9HH330MmO++MUvprKyMgsXLsynPvWpHHnkkVm0aFFuu+22/OAHP0jz5s1TW1ub/v37Z999902SnH766bn55pvr56qrq0uPHj3y6U9/OhMnTsyvf/3rZfbRr1+/HHjggct8cp+8d0jeaaedtt6fpJ8V0+eUlz5n3aHPKT89TuOjx4F1X0Xd6pxEAFihnj175tprr13uqng0jHnz5tV/kvnQQw/lrLPOyr333pvKSl+6BoA1pc9pXPQ5ADQ030QEmox77rknN998c+rq6uo/sddYAwBNgT4HgIbmm4gAAAAAQCEfXbHe6dmzZ5577rllbhs8eHCmTp26yvseffTRue+++0pV2nrFOgDA2uW9tfGwFgA0RQ5nhiQ33HBDQ5dArAMArG3eWxsPawHAus43ESHLflp89NFHZ+jQoTnyyCPzhS98If/zP/+zwvtMmDAhhxxySF5//fWMGzcuhx12WAYOHJiBAwdmypQp9eMeffTR9O/fP/37988Pf/jDfP7zn6/f1wsvvJDjjjsuhxxySA488MCMHDmy9A+2EbMOALB2eW9tPKwFAOs630SEFZg+fXpuu+22zJ8/P7169cqhhx6azp0712+/4YYb8uCDD+bmm29Oq1atstdee6Vfv36pqKjICy+8kK9+9auZPHlyFi1alNNPPz0//elP06NHj/z+97/PL3/5yyTJkiVL8q1vfSs/+clP0qVLl8ybNy+HHHJIdtlll3Tp0qWBHnnjYh0AYO3y3tp4WAsA1jVCRFiBPn36pLKyMq1atUqXLl0yderU+qZu2LBh6dSpU66//vrU1NQkSV555ZWcccYZmTFjRqqrq/Pmm2/mjTfeyKxZs9KiRYv06NEjSbLvvvumdevWSZKXXnopzz//fE4//fT6/S5evDgvvPCCpu7/WAcAWLu8tzYe1gKAdY0QEVagefPm9f9fVVWV2tra+p932WWXPPjgg5k2bVp9o3f66afnrLPOSq9evbJ06dJ8/OMfz8KFC5MkFRUVK9xHXV1dNtlkk4wZM6Z0D2QdZx0AYO3y3tp4WAsA1jXOiQhr6LOf/WzOP//8HH/88fnXv/6VJJk7d2622GKLJMmdd96ZRYsWJUm23XbbLFiwII899liSZNKkSXn77beTJNtss01atGiR0aNH18/9/PPPZ968eWV8NOsu6wAAa5f31sbDWgDQGPkmIuulY445JlVVVfU/z58/f43u/+lPfzqXXHJJTjzxxFxxxRU5++yzc9JJJ6VDhw751Kc+lTZt2iRJampqcumll+b8889PixYtsscee6Rdu3Zp1apVqqurc+211+biiy/OjTfemKVLl6Zt27a5/PLL1+IjbdysAwCsXd5bGw9rAUBTU1FXV1fX0EVAUzZv3rxstNFGSZKHHnooZ511Vu69995UVvoicDlZBwBYu7y3Nh7WAoBy8E1EKLF77rknN998c+rq6uo/KdbQlZ91AIC1y3tr42EtACgH30QEAAAAAAr5eAoAAAAAKCREBAAAAAAKCREBAAAAgEJCROADGTZsWL71rW81dBlldfTRR2fEiBFrZa6zzjorl1122VqZCwBYe/Q4H44eB6DpEiICKzVu3LgcfPDB2XXXXbPXXnvluOOOy6OPPrrW5n/11VfTtWvXLFmyZK3PedBBBy1z++zZs7PjjjumZ8+eqzXP+vgHBACsL/Q4ehwA1pwQEVihm266KRdffHGGDBmSBx98MPfdd18GDRqUP/zhDw1dWr2ixnzBggV57rnn6n8eP358PvKRj5SjLACgEdPjAMAHI0QEljN37txceeWVOffcc7Pffvtlww03TLNmzdKzZ8+ceeaZy41/+OGH87nPfW6Z23r27Jk///nPSZK///3vOfjgg/OJT3wie+65Zy655JIkyVFHHZUk+eQnP5ldd901TzzxRJLkzjvvzP77759PfvKTOfbYY/Paa6/Vz9u1a9fcdttt2W+//bLffvut9DEMGDAgo0aNqv959OjRGThw4DJjZsyYkVNOOSV77LFHevbsmVtvvTVJMnny5Fx33XW5++67s+uuu+bAAw+sv89rr72WL37xi9l1113zta99LbNnz67f9oc//CF9+/ZNjx49cvTRR+f555+v3/b000/noIMOyq677ppvfvObWbhw4UprBwBKQ4+jxwHggxMiAst54oknsnDhwuy7775rZb6LLrooX/7yl/P444/n97//ffbff/8kyfDhw5Mkf/nLX/LEE09k1113zaRJk3LdddflqquuypQpU7LbbrvljDPOWGa+SZMm5Y477sjEiRNXus8DDzwwEydOTG1tbZ5//vnMnz8/H//4x+u3L126NCeeeGK6du2ayZMn55Zbbsktt9ySP/3pT/nc5z6XE044Ifvvv3+eeOKJjB07tv5+48ePzyWXXJIpU6Zk8eLF+cUvfpEkefHFF3PGGWfku9/9bqZMmZLPfe5zGTJkSBYtWpRFixbl61//egYMGJBHHnkkffr0yT333LNWnlsAYPXpcfQ4AHxwQkRgOXPmzMkmm2yS6urqtTJfdXV1pk6dmtmzZ6dly5bZZZddVjr2N7/5TY4//vh06dIl1dXVGTJkSP75z38u80n98ccfnzZt2qRFixYrnWfzzTfPNttskz//+c8ZNWrUcp/QP/nkk5k9e3ZOPvnk1NTUZMstt8zhhx9e2LQnycEHH5xtttkmLVq0SJ8+ffLPf/4zSTJx4sTsvffe+cxnPpNmzZrl2GOPzbvvvpsnnngif/vb37J48eJ85StfSbNmzdKnT5/stNNOq37iAIC1So+zcnocAFZl7bx7Ak1KmzZt8u9//ztLlixZK032RRddlCuvvDL7779/tthii5x88sn5/Oc/v8Kx06ZNy8UXX5yhQ4fW31ZXV5cZM2bUn++nY8eOq7XfgQMHZtSoUXniiScyfPjwvPzyy/XbXnvttcycOTM9evSov622tnaZn1ekffv29f+/wQYbZMGCBUmSmTNnplOnTvXbKisr07Fjx8yYMSNVVVXp0KFDKioq6rf/51gAoDz0OCunxwFgVYSIwHJ23XXXNG/ePJMmTUqfPn1WOX6DDTbIu+++W/9zbW3tMufR6dy5c376059m6dKlueeee3Lqqafm4YcfXqbhfF/Hjh0zZMiQZc7R899WdL8V2W+//XLhhReme/fu+chHPrJMg92xY8dsscUWKz3kZnX38b7NNttsmZOc19XVZfr06fWN9YwZM1JXV1c/77Rp07Lllluu0T4AgA9Hj6PHAeCDczgzsJxWrVrl1FNPzYUXXphJkyblnXfeyeLFi3P//ffnxz/+8XLjt9lmmyxcuDB//OMfs3jx4lxzzTVZtGhR/fYxY8Zk9uzZqaysTOvWrZMkVVVV2XTTTVNZWZlXXnmlfuwXv/jFXH/99fnXv/6V5L0ToN99990f6HFsuOGGueWWW3LRRRctt23nnXfORhttlOuvvz7vvvtuamtr89xzz+Xvf/97kqRt27Z57bXXsnTp0tXa1/7775/7779/mfMI1dTUZNddd80uu+yS6urq3HrrrVmyZEnuueeePPnkkx/oMQEAH5weR48DwAfnm4jACh1zzDFp27Ztrr766nzrW99Ky5Yt07179wwZMmS5sa1atcp5552X733ve6mtrc1xxx2XzTffvH77n/70p/zoRz/Ku+++m06dOuWyyy5L8+bNkyRDhgzJkUcemSVLluTnP/959t1338yfPz+nn356XnvttbRq1Sp77rln/YnK19TKzstTVVWVa665JkOHDs0XvvCFLFq0KNtss02++c1vJkn69OmTsWPHZvfdd88WW2yxzFUQV2TbbbfNT37yk/zgBz/IjBkz0q1bt1x77bWpqalJkgwbNizf//73c/nll2fvvfdeayd0BwDWjB5HjwPAB1NRV1dX19BFAAAAAACNl8OZAQAAAIBCQkQAAAAAoJAQEQAAAAAoJEQEAAAAAAoJEQEAAACAQkJEAAAAAKCQEBEAAAAAKCREBAAAAAAKCREBAAAAgEL/D03TC2nVd81+AAAAAElFTkSuQmCC\n",
"text/plain": [
"<Figure size 1152x576 with 2 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plot_scores(pd.concat([pendigits_raw_results_long, pendigits_pca_results_long, pendigits_umap_results_long]))"
]
},
{
"cell_type": "code",
"execution_count": 24,
"id": "c0fc4770",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAB5kAAAI0CAYAAAAnep4gAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAAsTAAALEwEAmpwYAAB1iUlEQVR4nOzdeZyVdd0//tcsDCiCKCCCorgkIribS1oigSiL4F6kd4vivmRlapRoqYX3zzJ3MzW3UpF9UcuVNHfS7FbLWwVcWBQUURSGYX5/eDNficWjcGaYw/P5ePiQua7P+XzeZy6GeZ/rdc51ldXW1tYGAAAAAAAAAApQ3tAFAAAAAAAAANB4CJkBAAAAAAAAKJiQGQAAAAAAAICCCZkBAAAAAAAAKJiQGQAAAAAAAICCCZkBAAAAAAAAKJiQGQAAAABgLTNy5Mh07tw5I0eOXGp7jx490qNHj4LGAgBrLyEzsEa7+uqr07lz53Tu3DmvvvrqcscseaHz6f+6deuW/fbbLz/84Q/z0ksvLfdxl19+eTp37pzLL7+8mE8BAGC5Pm+fc9RRR61wrjfeeCPbbrtt3dj/tKLtAEBpqampyZ133pmjjjoqu+++e7p27Zq99tor/fv3z5AhQ3L//fc3dIkN6oknnljpuSBhOgAUrrKhCwBYkdra2tx1110pKytLbW1thg8fnrPOOmuF47fddtv07NkzSfLBBx9k8uTJGT9+fP785z/nD3/4Q3bdddf6Kh0AYKU+b59TWVmZp556Kq+++mq23HLLZfYPHz48tbW1qayszKJFi4pZOgCwhqqpqcnxxx+fv/71r2nZsmX23XffbLzxxpk7d26mTZuW8ePH59VXX83Xv/71JEmvXr2y4447ZqONNmrgygGAxkjIDKyxHnnkkbzxxhs55JBDMmnSpIwaNSpnnHFGqqqqlju+S5cuOfXUU5fadu655+aOO+7IpZdemltuuaU+ygYA+Eyft8/p3r177rvvvuWG0TU1NRk5cmS23377zJo1KzNnzqyPpwAArGHGjx+fv/71r9l2221z6623pkWLFkvt/+ijj/Lcc8/Vfd2iRYtlxgAAFMrlsoE11vDhw5Mkhx9+ePr37593330399133+ea47DDDkuS/POf/1zt9QEAfFGft8/Zeuuts/POO2f06NGprq5eat9DDz2UWbNm5YgjjihqzQDAmu3vf/97kuTggw9ebni8zjrrZM8996z7+oteGvrxxx/P0UcfnZ133jm77LJLjjvuuLzyyivLHTtr1qycf/756dGjR7p165Y999wzp5xyynLP0yy5rdkTTzyxzL433ngjnTt3ztlnn73Mvo8++ijXXnttBgwYkJ122ik777xzjjzyyIwfP36pcWeffXb+67/+K0lyxRVXLHXbtSeeeCJHH310zjnnnCTJOeecs9T+N954o26eRYsW5bbbbssRRxyRXXbZJTvuuGMGDhyYW2+9NYsXLy78GwkAjZxPMgNrpHfeeScPPPBAOnXqlF122SXrrbdebrzxxtxxxx3p06fP556vstI/dwDAmuGL9jmHH354fvKTn+T+++/PAQccULd9+PDhWXfdddOnT59cccUV9fEUAIA1UKtWrZIkU6ZMKdoaDz30UO6///589atfzTe+8Y288sorefjhh/P8889nwoQJ2XDDDevGvv766xk0aFBmzZqVPffcM3379s306dNzzz335KGHHsrll1+e/fbbb5Xqef/99/Ptb387L7zwQrp27ZpDDz00ixcvziOPPJIf/vCHefnll3PGGWckSd0t1kaNGpXdd989u+++e908m2yySV04f//99+frX/96unTpUre/ZcuWSZLq6uqccMIJeeSRR7LFFlukX79+adq0aZ544on84he/yHPPPZf//u//XqXnBACNhdQFWCONHDky1dXVOeSQQ5Ik22yzTbp27ZonnngiU6dOzeabb17QPHfeeWeSuB8zALDG+KJ9Tp8+fXLRRRdl+PDhdSHzzJkzM2nSpBxyyCFZb7316u05AABrnv333z+///3vc/vtt+fDDz9Mr1690rVr12yyySarbY377rsv119/ffbaa6+6bZdcckl+97vfZcSIERk8eHDd9vPOOy+zZs3K97///Zx44ol12wcNGpSjjjoqZ599dh544IE0b978C9dz0UUX5YUXXsiPfvSjpdZesGBBTjrppFx77bU54IAD0qVLl/Ts2TMtWrSoC5n/85Zrm266aZLk/vvvT8+ePet6tU+75ppr8sgjj+Soo47KT37yk1RUVCT55PYlP/vZzzJixIj07t27LtAGgFLmctnAGqe2tjbDhw9PeXl5Bg4cWLf94IMPrtu3PC+++GIuv/zyXH755fnlL3+ZQw89NMOHD89GG220zL0LAQAawhftc5JPLnHZr1+/PProo3WXbLzrrrtSU1PjUtkAQLbbbrtcfPHFadOmTcaOHZtTTz01PXr0yB577JGTTz45DzzwwCqv0adPn6UC5iR1fcjzzz9ft23GjBl55JFH0qFDhxx77LFLjd9ll13St2/fvPfee/nLX/7yhWt59913M3bs2HTr1m2pgDlJmjZtmjPPPDO1tbUZN27cF17j0xYvXpxbb701bdu2zTnnnFMXMCdJRUVFzj777JSVla229QBgTeeTzMAa5/HHH8+0adOyzz77pF27dnXb+/Xrl2HDhmXUqFE5/fTT06RJk6Ue99JLL+Wll15aaluHDh1y2223pUOHDvVSOwDAynzRPmeJI444IrfffnvuuuuunHbaaRkxYkQ6d+6cHXbYob6eAgCwBuvTp0969eqVJ554Is8880xefPHFPPPMM7nvvvty3333ZeDAgfnVr36VsrKyLzR/t27dltnWvn37JMncuXPrtr3wwgtJPrmy3PL6mj333DNjx47NCy+8sNQb7z6P559/PjU1NSkrK8vll1++zP5FixYlSV599dUvNP9/eu211/Lee++lU6dOufrqq5c7plmzZqttPQBY0wmZgTXOHXfckSTLXJZogw02SI8ePXLvvfcucy/C5JNPAP3qV79KbW1tZs+enbvuuiuXXnppTjjhhNxxxx1ZZ5116u05AAAszxftc5bo2rVrunbtmpEjR2annXbKm2++mZ/97GdFrxsAaDyaNGmSffbZJ/vss0+STy7lfO+992bIkCEZPXp0evXq9YUv57zk3sSfVln5ySnmxYsX122bN29ekqRt27bLnWfJ9iXjvoj33nsvySdh86c/Rf2fPvzwwy+8xvLWmzJlSq644oqirwcAazohM7BGmTNnTu67774kyQ9+8IP84Ac/WO64O++8c4UnX8vKytKmTZuccMIJmTt3bm644YZceumlOeecc4pWNwDAZ1kdfU7yyaeZhw4dmqFDh6ZZs2Y56KCDilIvAFAaKioq0qdPn/z73//O1Vdfnccff7zo9wxu0aJFkuSdd95Z7v633347SbLeeuvVbVvy6eqampplxi8vjF6yxne+8516OeezZL1evXqtNGQGgLWFkBlYo4waNSrV1dXp2rVrunTpstwxDzzwQP72t7/l9ddfT8eOHVc638knn5zRo0fntttuy1FHHfWZ4wEAimV19TlLLq09Y8aMDBw4cLmfKAIA+E/NmzdPktTW1hZ9re222y5J8swzz2TRokV1n3Ze4oknnkjyyVVallh//fWTJNOnT19mvn/+85/LbNthhx1SXl6ep59+uuC6ltxHeXlBdpKUl5evcP+WW26Zli1b5tlnn011dfUKb28CAGsLITOwRhk+fHiS5LzzzlvhvQUvvfTSXH311bnrrrtyxhlnrHS+9dZbL4MHD86wYcNyxRVXZNiwYau9ZgCAQqyuPme99dbLddddl/fee2+pE7MAwNpt/Pjx2WCDDbLXXnvVhaVLvP3223W9yG677Vb0WjbeeOPsvffeefTRR3PTTTflmGOOqdv33HPPZfz48Vl//fWX+kT1kv5o5MiRGTBgQF0wPX369Fx55ZXLrNG6dev0798/Y8aMyZVXXpnjjz9+mTB72rRpKSsrq3vzXqtWrermXJ4NNthghfsrKytz1FFH5aqrrsoFF1yQc845J82aNVtqzKxZs/L+++9n6623Xun3BwBKgZAZWGM88cQTee2117LNNtus8MRrkhx22GG55pprMmLEiJx66qmfOe+gQYNyww03ZOzYsRk8eLBGHwCod6u7z6mPk8MAQOPy3HPP5eabb07btm2zyy67ZNNNN02SvPHGG3n44Yfz8ccf5+tf//pKb8uxOp1//vn55je/mYsvvjiPPvpounXrlunTp+eee+5JeXl5LrrooqUul73jjjvmy1/+cp566qkcfvjh2XPPPfPOO+/kwQcfzD777LPc4Pfcc8/N1KlTc9lll2Xs2LHZZZdd0qZNm8yaNSuvvPJKnn/++fz617+uC5m32GKLtGvXLhMmTEiTJk3Svn37lJWVZcCAAdlkk02y0047ZZ111slNN92UuXPnpnXr1kmSo48+Oi1atMhJJ52Ul156KbfffnsefPDB7LnnnmnXrl1mz56dqVOnZvLkyTnjjDOcewJgrSBkBtYYd955Z5Lk8MMPX+m4TTfdNF/5ylfy6KOP5sEHH/zMeZs1a5bjjz8+F1xwQX7729/m8ssvXy31AgAUqlh9DgDAEt/73vfSqVOn/O1vf8u//vWvPPLII1m4cGFatWqV3XffPf369Uv//v3r7n1cbB07dsyIESNy1VVXZdKkSXnyySfTvHnzfPWrX80JJ5yw3DfeXXXVVbn44otz//3355ZbbkmnTp1y5pln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W22dJBk5cngWLVqUM844c6mAOUl22233fPWr++aRRyblww8/TPPmzVfpuf+ngkJmJ10BgLXB3Llz8+CDD2bmzJlp165d9ttvv6y//voNXRYAwCo55ZRTcvLJJ6djx4559dVXlzrPc//992f77bdvwOoAAKBxOe20MzJ48Hdz2WW/yfXX37TceyQnyb/+9WKSZNddv7zMvs022zwbbbRR3nrrzcybNy8tWrSo27feeuulY8fNlnnMRhu1S5LMm/d+3bbnn/9HkmTy5Gfywgv/s8xj5syZk5qamrz++tRsu+12n+NZfraCQubESVcAoLT9/e9/z/HHH58tt9wyHTp0yIMPPpiLLroo1157bXbeecXvSAQAWNP17NkzI0eOzIsvvpjtttsuHTt2rNu35ZZbZqeddmq44gAAoJHZfvsd06NHzzzwwH25774/p1ev3ssd9+GHHyRJ2rRpu9z9rVu3yYwZM/LBB/8ZMrdY7viKiookSU3N4rptc+fOTZLcdtvNK615/vyPVrr/iygoZHbSFQAodRdddFGGDh2avn371m2bOHFiLrjggowYMaIBKwMAWHWbbbZZNtts2U9D7Lrrrg1QDQAANG4nnXRqJk16KFdffUW6d++x3DHNm6+XJJk9+51sumnHZfbPnv1OkhWHyoVYb71P1rj//kl169WX8kIGLTnpevvtt+fXv/51br/99px33nm54IILil0fAEC9mDJlSg488MCltvXu3TvTpk1roIoAAAAAgDXRppt2zKGHHp633nozd955+3LHbLPNtkk+uZT1f3r99WmZNWtWOnTYZKlPMX9e3bp9cuubZ5/9+xee44sqKGR20hUAKHWbb755JkyYsNS2e+65Z6nLSQIAAAAAJMn3vndcWrRokZtuuj4ffbTs5aj79x+QJLnxxt/n3XffrdteU1OTyy+/NIsXL64b80UddtiRqayszKWXXpJp06Yus7+6ujrPPjt5ldZYkYIul73kpGv//v3rtjnpCgCUkp/85Cc54YQTcsstt6RDhw558803M3Xq1FxzzTUNXRoAAAAAsIZZf/318+1vfy9XXPHb5e7fYYcdc9RR386tt96UQYMOT48eX0+zZuvk8cf/llde+d/suONOOeqob69SDZ06bZEhQ4bmwgvPzze/eXj23HOvbLbZ5lm0aFFmzpyRZ5/9ezbYYIPcccfIVVpneQoKmZ10BQBK3S677JK//OUveeihhzJr1qzst99+2XfffdOqVauGLg0AYLWprq7Oc889l1mzZqVPnz6ZP39+kmTddddt4MoAAGhsPl6wKOMuWbVP4hbTxwsWFX2NI474ZkaMGJ7p099a7v5TTjk9nTtvm+HD78jdd0/IokWLsskmm+b440/KoEFHp0mTJqtcw4EH9s2XvrRN/vjHWzN58lN58snHs84666RNm7bp0ePr6dlz/1VeY3kKCpmddAUASt3MmTPTrFmzDBjw/xrjuXPnZubMmWnXrl0DVgYAsHr861//yoknnpiqqqrMnDkzffr0yVNPPZVRo0bl0ksvbejyAABoZD6avyAfzV/Q0GUU3eOPr/hy01VVVRk1avxKH9+rV+/06tW7oLVGj56wwn2DB5+QwYNPWO6+rbf+Us499/yC1lhdCron88yZM5MkAwYMyODBgzNgwICUlZXVbQcAaOxOOumkzJgxY6ltM2bMyCmnnNJAFQEArF7nnXdeTjvttNxzzz2prPzkcwdf/vKX88wzzzRwZQAAQGNTUMjspCsAUOqmTJmSzp07L7Wtc+fOefXVVxuoIgCA1et///d/667aUlZWluSTy2QvWFD6nz4BAABWr4JCZiddAYBSt+GGG2bq1KlLbZs6darbgwAAJWOTTTbJP//5z6W2/eMf/8hmm23WQBUBAACNVUEhs5OuAECpO/TQQ3PqqafmwQcfzP/+7//mgQceyGmnnZbDDz+8oUsDAFgtTj/99Bx//PG57LLLUl1dnWuvvTann356vv/97zd0aQAAQCNTWcigJSddzzjjjHTs2DHTpk3Lb3/7WyddAYCScdxxx6WysjLDhg3LjBkzsvHGG+fwww/Pd7/73YYuDQBgtdhvv/1y3XXXZfjw4fnyl7+cN998M5dffnm6devW0KUBAACNTEEhs5OuAECpKy8vz7HHHptjjz22oUsBACiKu+++OwceeGC6du261PZ77rknBxxwQANVBQAANEYFhcxOugIApeqtt95KeXl5Nt544yTJRx99lGuuuSb//ve/s/POO+eYY45JRUVFA1cJALDqhgwZkgMPPHCZ7eeee66QGQAA+FxWGjI76QoAlLohQ4Zk0KBBdf3Oz3/+8zz11FPp1atXRowYkQ8++CA/+MEPGrhKAIAv7vXXX0+S1NbW1v350/uqqqoaoiwAAKARW2nI7KQrAFDqXnrppey9995Jkvnz52fixIm57bbb0q1btxx22GE57rjj9DsAQKPWq1evlJWVpba2Nr169VpqX5s2bXLKKac0UGUAAEBjtdKQ2UlXAKDUVVdXZ911102SPP/882nevHm6deuWJNlqq63y7rvvNmR5AACr7KWXXkqSHHXUUbn11lsbuBoAAKAUlK9sp5OuAECp23TTTfPEE08kSR544IHssccedfvmzJmTddZZp6FKAwBYrbbddtvlbr/wwgvruRIAAKCxW+knmZecdN1jjz2cdAXqXe2i6rRt26KhywBK3CmnnJKTTz45HTt2zKuvvppbbrmlbt/999+f7bffvgGrAwBYfUaOHJmf/vSny2wfO3ZshgwZ0gAVAQAAjdVKQ2YnXYGGVFbZJK9demxR19ji+78v6vzAmq9nz54ZOXJkXnzxxWy33Xbp2LFj3b4tt9wyO+20U8MVBwCwGtx1111Jkpqamro/L/H666+nVatWDVAVAADQmK00ZHbSFQBYG2y22WbZbLPNltm+6667NkA1AACr15gxY5J8clu0JX9OkrKysrRp0ybDhg1rqNIAAGjEWjavTEVV04YuY4VqFi7I+x8uaugyStZKQ+bESVcAAACAxmzJlel+85vf5IwzzmjgagAAKBUVVU3z6oWHNnQZK7TlkBHJagiZ99xzl6W+Li8vT4sWLbP11lunf/+BOeCAPst93JQpr+Wuu+7M5MlPZ+bMmVmw4OO0atUq22yzbbp375HevQ9M06bLD+lvvPH3ufbaq5Ikd9wxMptv3mmVn8fq9pkhMwAAAACN3xlnnJF33303Dz/8cN55550ce+yxmTlzZmpra7Pxxhs3dHkAALBGO+aY45IkixYtyrRpUzNp0kN55pmn89JLL+b73//hUmOvv/53uf7632Xx4sXp1m379OnTL+uuu07mzJmTyZOfyUUX/TwjRw7PH/5w2zLr1NbWZty4MSkrK0ttbW3GjBmV005b894sKmQGAAAAWAs8+eSTOfXUU9OtW7dMnjw5xx57bKZOnZobbrgh11xzTUOXBwAAa7TBg09Y6uunnnoip512Uu6444854ohvpkOHDkmSP/zh+lx33TVp127jXHjhsHTrtv0ycz3yyKT88Y+3LnedJ554LG+99Wb69u2fxx77WyZOHJcTTzwlTZo0Wf1PahWUN3QBAAAAABTfRRddlEsvvTTXX399Kis/+dzBjjvumH/84x8NXBkAADQ+X/7yHtl8806pra3Niy/+T5Lkrbfeyu9/f20qKyvz619fttyAOUn22edrufTSK5a7b8yYUUmSAQMOSe/eB+a9997LQw89UJwnsQp8khkAWKsNGjQoZWVlKx1z223LXrYGAKCxefPNN7PXXnslSV3/06RJk9TU1DRkWQAA0GjV1tYm+X/99YQJY7Jo0aL06tU7W2219UofW1VVtcy22bNn569/fTibbbZ5dthhxzRv3jx/+tOtGTNmZHr16r36n8AqWGnI7KQrAFDqDj/88IYuAQCgXmy11Vb561//mq9+9at12/72t79lm222acCqAACgcXryyScybdrUlJWVpUuX7ZIkzz33bJJkt912/0JzTpgwNosWLUrfvv2TJFtttXU6d942zzzzdF5/fVo6dtxstdS+Oqw0ZHbSFQAodQcffHBDlwAAUC/OPvvsHH/88enevXs+/vjjnHvuuXnggQdy1VVXNXRpAACwxrvuumuSJIsWLcq0aVMzadJDqa2tzTe+8a20b//J/ZjfeeedJMlGG230ueevra3N2LGjUl5engMP7Fe3vW/fg/Kvf12csWNH5+STT1sNz2T1WGnI/FknXaurq1drMQAA9W306NGfOWbgwIFFrwMAoNh22mmnjB07NmPHjs2hhx6a9u3b56677srGG2/c0KUBAMAa7/rrf5fkk0tjt2jRIjvuuHP69x+QAw/sWzfmPy+f/Xk8/fSTeeONN7LnnnstFVL37n1ALr/8N5kwYVyOP/7EVFY2WcVnsnp8oXsyL1y4MLfffnuuv/76PPzww6u7JgCAenP22Wdn8803T5s2beqawE8rKysTMgMAJaNdu3YZPHhwQ5cBAACNzuOPT/7MMW3bts3UqVMya9aszz3/6NEjk3zyyeVPW3/9Vtlnn6/lwQfvz6RJD6dHj56fe+5iWGnI/Oqrr2bIkCF56aWX0qlTpwwbNiyvvfZaLrjggrRr1y5nnXVWfdUJAFAURx99dO699940b948AwcOTM+ePVNVVdXQZQEArHZnnnnmCj9RcfHFF9dzNQAAUHp23HGnPP30U3n66Sdz0EEDC37cu+++m0mTHkqS/Oxn5+RnPztnueNGjx7ZOELmCy+8MJ06dcoJJ5yQ8ePH56STTkqzZs0ybNiwfOUrX6mvGgEAimbIkCE5++yz89e//jWjR4/ORRddlO7du2fgwIHZbbfdGro8AIDVZvPNN1/q67fffjv33ntv+vfv30AVAQBAaenbd0BuuunGPPjg/XnttVezxRZbrnDswoUL6z7sMnHiuFRXV2fbbbvkS1/qvNzxjzzycJ566om89dab6dBhk6LU/3msNGT+5z//mb/+9a+pqqrKl7/85ey666558MEH3asHACgpFRUV6d69e7p3754PPvggV111Vf7rv/4rN9xwQ/bcc8+GLg8AYLU45ZRTltl22GGH5corr2yAagAAoPR06NAhxx57fK655sr84Aen5aKLLk6XLtstM+6xxx7NrbfelCuv/OQ+z2PHjk6SnHnmOenatdty57722qty442/z5gxo3Liicv29vVtpSFzdXV1XYK+7rrrpkWLFgJmAKAkzZs3LxMmTMjo0aMzZ86cnHTSSenSpUtDlwUAUFRdunTJk08+2dBlAABAyfjOd45JTU1Nrr/+d/nud4/K9tvvmC5dtss666yTOXPm5NlnJ+f116fVhc/PPPN0pk6dkq222nqFAXOS9O8/MH/4w/WZMGFsBg8+IZWVK415i26lqy9cuDC//e1v677++OOPl/o6SU4//fTiVAYAUA8efPDBjBo1KpMnT06PHj1y5plnZtddd23osgAAVrvHHntsqa8//vjjTJgwIVtvvXUDVQQAQGNWs3BBthwyoqHLWKGahQsabO1jjjkuPXr0zIgRwzN58tMZP35sFi5ckPXXb5UvfWmbHH30d3LAAX2SJGPGjEqSHHTQwSuds0OHDvnyl/fIk08+nkcemZTu3XsU/XmszEpD5v79+2fGjBl1X/ft23eprwEAGrsTTzwxW2yxRfr3759mzZrlkUceySOPPLLUGG+qAwBKwZAhQ5b6et111822226bSy65pIEqAgCgMXv/w0XJh4sauoyie/zxyV/ocVtssWV+9KOzPnPcz39+YX7+8wsLmvOyy676QrUUw0pD5l/+8pcrffDixYtXazEAAPVt4MCBKSsry3vvvdfQpQAAFNUDDzzQ0CUAAAAl4gtdrPtf//pXRo8enXHjxi3zSR8AgMbkV7/61Ur3e1MdAFBK5s6dmwcffDAzZ85Mu3bt0r1797Rq1aqhywIAABqZ8kIHzpkzJzfddFMOPvjgDBw4MM8///wyl1kCACgV//rXvzJs2LB87Wtfa+hSAABWi7///e/p1atXbr/99vzrX//K7bffnv333z9///vfG7o0AACgkVnpJ5mrq6vzwAMPZNSoUXnkkUey2WabpW/fvnnrrbfy29/+Nq1bt66vOgEAim7OnDkZN25cRo8enZdeeim77rqrN9UBACXjoosuytChQ9O3b9+6bRMnTswFF1yQESNGNGBlAABAY7PSkHnvvfdOWVlZDjnkkJx66qnp2rVrkuRPf/pTvRQHAFBs3lQHAKwtpkyZkgMPPHCpbb17987QoUMbqCIAAKCxWunlsjt37px58+blueeey/PPP5+5c+fWV10AAPVi7733zrnnnpstttgid9xxRyZOnJiTTz45TZo0aejSAABWq8033zwTJkxYats999yTjh07NlBFAABAY7XSTzLfcsstefPNNzN69OjccMMNueCCC7LPPvtk/vz5WbRoUX3VCABQNJ07d84zzzyT5557Lptvvnk23XTTrL/++g1dFgDAaveTn/wkJ5xwQm655ZZ06NAhb775ZqZOnZprrrmmoUsDAAAamZV+kjlJNtlkk5x88sn585//nD/84Q9p27ZtysvLc9BBB+Xiiy+ujxoBAIrmlltuyV/+8pfsvffeueGGG7L33nvnhBNO8KY6AKDk7LLLLvnLX/6Sb33rW+natWuOOuqo/PnPf84uu+zS0KUBAACNzEo/yfyfdtttt+y222756U9/mr/85S8ZPXp0kcoCAKg/S95Ud/LJJ+fpp5/OmDFj6t5Ud+ihh+bHP/5xQ5cIALBarL/++hkwYEBDlwEAADRynytkXqJp06bp169f+vXrt7rrAQBoUN5UBwCUqtdffz2XXnppXnzxxcyfP3+pfQ899FDDFAUAADRKXyhkBgAodd5UBwCUmh/96Efp2LFjzjrrrKyzzjoNXQ4AANCICZkBAAAA1gIvv/xy/vSnP6W8vLyhSwEAABo5ryoAAAAA1gJf/vKX88ILLzR0GQAAQAnwSWYAAACAEvXb3/627s+bbLJJjjnmmOy///5p06bNUuNOP/30+i4NAIBGbt31mqRpk6qGLmOFFlQvzPwPqhu6jJIlZAYAAAAoUTNmzFjq6x49emTRokXLbAcAgM+raZOqHHHHiQ1dxgrdeeTVmZ9VC5mfeebpnHzycdl5511z9dXXLXfMW2+9lUMO6ZeNN26f0aMnJEnGjx+bCy44L0my88675Oqrf7/Cxx56aP/U1tYmSR5/fPIKa7nxxt/n2muvSpLcccfIbL55p+WO+/TaSzRp0iRt2rTNzjvvmqOP/na22GLLFa5TKCEzAAAAQIn65S9/2dAlAADAWquiojJ///vkTJ06Zbmh8Nixo1JbW5uKisrU1Cxa4Ty1tbUZN25MysrKUltbmzFjRuW0085Y6dpf+tI2+drXuidJPvzwg0ye/EwmThyX++//S6688pp067bDqjw192QGAAAAKFWvv/56Qf8BAACr3z77fDXJJ2Hyf6qpqcmECWOz3XZds+GGG650nieeeCxvvfVm+vTplw03bJ2JE8elunrln9L+0pc6Z/DgEzJ48An5/vd/lJtu+mP69OmfBQs+zlVXXfHFn9T/8UlmAAAAgBLVq1evuk87rEhZWVlefPHFeqwKAADWDltssWXmzJmdiRPH58QTT0llZZO6fY8++kjefvvtHHPM8bn++t+tdJ4xYz4JqQcMOCQtW66fP/3p1jz00APp1at3wbWUlZXl0EMPz8SJ4/LCC//8Yk/oU3ySGQAAAKBEvfTSS3nxxRfz0ksvrfA/ATMAABTPgAEH5913382kSQ8vtX3MmJFZd911PzMonj17dv7614ez2WabZ4cddky/fgfVPf7zWvLm07Kyss/92P8kZAYAAAAAAAAogp4990/z5ustFQrPmjUrjz/+t/Ts2TvNmzdf6eMnTBibRYsWpW/f/kmSrbbaOp07b5tnnnk6r78+reA6amtrM3Lk8CRJ167dvsAzWZrLZQMAAACUqGOOOSbXX399kmTQoEEr/MTCbbfdVp9lAQDAWqNZs3Wy//4HZPToEXnrrbfSoUOHjB8/JjU1NRkw4OCVPra2tjZjx45KeXl5DjywX932vn0Pyr/+dXHGjh2dk08+bbmPffnlf+W6665Jknz44QeZPPmZ/Pvf/0rTps1ywgknr/LzEjIDAAAAlKiBAwfW/fnwww9vuEIAAGAtNmDAwRk16q6MGzc6gwefkLFjR2frrb/0mZ8ofvrpJ/PGG29kzz33ykYbbVS3vXfvA3L55b/JhAnjcvzxJy51r+clXn7533n55X8nSSorK9OmTZsceGDf/Nd/fTdbbLHlKj8nITMAAABAierfv3/dnw8+eOWfkgAAAJZWXv7JlYBqaxevcMySfeXlK75L8bbbdknnzttm/Pix6dZt+8yYMT0//OGPP3P90aM/ucR2374HLbV9/fVbZZ99vpYHH7w/kyY9nB49ei7z2D59+ufcc8//zDW+KCEzjU6LluukWdPi/tX9eMGizHv/o6KuAQAAAPXhn//8Z6qqqrLNNtskSebMmZMLL7wwL7/8cnbaaaecddZZn3kfOAAAWButt16LJMncuXNXOOa9995bauyKDBx4SIYNuyjDhl2Upk2b5YAD+q50/LvvvptJkx5KkvzsZ+fkZz87Z7njRo8eudyQudiEzDQ6zZpWpv8PxxR1jXGXDMi8oq4AAAAA9eOiiy7KKaecUhcyDxkyJLNmzcqRRx6Z8ePH57//+79z3nnnNWyRAACwBtpss81TVVWVadOmZe7c97L++q2WGfPPf/4jSfKlL31ppXPtv/+Bueyy32TWrJnp06dfWrRYeSg9ceK4VFdXZ9ttu+RLX+q83DGPPPJwnnrqibz11pvp0GGTwp7UaiJkBgAAAChhr7zySnbbbbckyfvvv5+//vWvGTduXLbYYov06NEj3/jGN4TMAACwHE2bNk3Pnr0zceK4XH75pRkyZGjKysrq9s+aNTO33npzkmUvaf2fmjdvnt/85orMnftett22y2euPXbs6CTJmWees8J7N1977VW58cbfZ8yYUTnxxFMKfFarh5AZAAAAoITV1NSkSZMmSZJnn302bdq0yRZbbJEkad++fd5///2GLA8AANZop59+Rl588X8yfvzYPP/8P7L77numefPmmTFjeiZNejjz53+Yo4/+TnbZZdfPnGunnXYuaM1nnnk6U6dOyVZbbb3CgDlJ+vcfmD/84fpMmDA2gwefkMrK+ot+hcwAAAAAJWzrrbfO3XffnT59+mTixInZa6+96vbNnDnzMy/TBwAAy7OgemHuPPLqhi5jhRZUL1wt86y/fqtcf/3NufPOP+Xhhx/MhAnjsmDBgqy//vrZeeddcuihh+crX9lntay1xJgxo5IkBx108ErHdejQIV/+8h558snH88gjk9K9e4/VWsfKCJkBAAAAStiPfvSjnHjiiTnvvPNSXl6eP/7xj3X7Jk6cmF122aUBqwMAoLGa/0F15qe6ocuoF+uuu26+851j8p3vHFPQ+H79Dkq/fiu/fPanjRt3z1Jf//znF+bnP7+woMdedtlVq7T2FyVkBgAAAChhu+22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BRMyAwAAAAAAAFAwITMAAAAAAAAABRMyAwAAAAAAAFAwITMAAAAAAAAABRMyAwAAAAAAAFCwyvpa6LXXXsvZZ5+d9957L61atcqwYcPSqVOnpcZceeWVmThxYioqKlJZWZkzzjgjX/3qV+urRACAVaLfAQBKmV4HAFbdhq2apqJJVdHmr6lemDnvLSja/ABL1FvIPHTo0AwaNCgDBgzImDFjcu655+bmm29easwOO+yQ733ve1lnnXXy0ksv5aijjsojjzySZs2a1VeZAABfmH4HAChleh0ASl3L9ddJ06rixyZTbxpatLk3//b5SYTMQPHVS8g8e/bsvPDCC7nxxhuTJP369csvfvGLzJkzJxtuuGHduE+/s7Vz586pra3Ne++9l4033rg+ygQA+ML0OwBAKdPrALA2aFpVmR9d+nBR1/j/vr9vUecHqC/1EjJPnz497dq1S0VFRZKkoqIiG220UaZPn77UC5FPGz16dDbbbLPP/SKkdev1VrleVk3bti0augT+T30ci4rysqLOX17k+etDfRyHJk0qSmKNYquXY1FV3O9TVZHnT5LUw49dKf6u0O+sXUrx73BjVexjUexeJ9HvFKrYvUgp9DpJ8Y9FsXudpDT6nVL8PaHXAWBtUQr9Tin2IsCap94ul/15PPnkk/ntb3+bG2644XM/dvbsD7J4ce1qr8k/yoV7++15RZ3fsShcfRyLmiL8vH1aMX6e61t9HIfq6pqirpGkXtYotno5FguL+31aWOT5kyT18GNXjGNRXl7WqE5I6ncaN/3OmqOYx6I+ep1Ev1OI+uh3SqHXSYr/M1HsXicpjX6nWMehMfU7a2KvAwCfpVT6nWL358XSmHodICmvj0Xat2+fmTNnpqbmk384a2pqMmvWrLRv336ZsX//+99z5pln5sorr8yWW25ZH+UBAKwy/Q4AUMr0OgAAwKfVyyeZW7dunS5dumT8+PEZMGBAxo8fny5duixzOaV//OMfOeOMM3LZZZela9eu9VEaAMBqod8BAEqZXgegeFquv06aVhX3VP2ChYvy/tyPiroGAGuXertc9nnnnZezzz47V111VVq2bJlhw4YlSQYPHpzTTjst22+/fc4///x8/PHHOffcc+sed/HFF6dz5871VSYAwBem3wEASpleB6A4mlZV5seXTSrqGhef9rWizg/A2qfeQuatttoqw4cPX2b7ddddV/fnESNG1Fc5AACrnX4HAChleh0AAGCJerknMwAAAAAAAAClQcgMAAAAAAAAQMHq7XLZAAAAANCQWrRcJ82aFu902OLqhSlvUlW0+ZNk0cIFeXfuwqKuAQAAn0XIDAAAAMBaoVnTyvT/4ZiizT/ukgF59cJDizZ/kmw5ZEQSITMAAA3L5bIBAAAAAAAAKJiQGQAAAAAAAICCCZkBAAAAAAAAKJh7MgMAAAAAfE4tWjVNsyZVRZv/4+qFmffegqLNDwCwKoTMAAAAAACfU7MmVTnijhOLNv+dR16deREyA5/PwprqtG3boqhreBMMkAiZAQAAAAAASkJVRZN8885TirrGn464wptgAPdkBgAAAAAAAKBwQmYAAAAAAAAACuZy2QAAAADQSLjXJgAAawIhMwAAAAA0ElUVTXLEHScWdY07j7zavTYBAFgpl8sGAAAAAAAAoGA+yQwAAAAAAKySFq2aplmTqqLN71L+AGsWITMAAAAAALBKmjWpKurl/F3KH2DN4nLZAAAAAAAAABRMyAwAAAAAAABAwVwuGwAAAACARqnY9wFO3AsYAJZHyAwAAAAAQKNU7PsAJ+4FDADL43LZAAAAAAAAABRMyAwAAAAAAABAwVwuGwAAAAAASljtouq0bduiocsAoIQImQEAAAAAoISVVTbJlOt+XNQ1Og2+uKjzA7BmcblsAAAAAAAAAAomZAYAAAAAAACgYEJmAAAAAAAAAArmnswAAAAAQEnZYP2qVFY1begyAABKlpAZAAAAACgplVVN8+qFhxZ1jS2HjCjq/AAAazKXywYAAAAAAACgYD7JDAAAAADUmxYt10mzpk5LAgA0Zro5AAAAAKDeNGtamf4/HFPUNcZdMqCo8wMArO1cLhsAAAAAAACAggmZAQAAAAAAACiYkBkAAAAAAACAggmZAQAAAAAAACiYkBkAAAAAAACAggmZAQAAAAAAACiYkBkAAAAAAACAggmZAQAAAAAAACiYkBkAAAAAAACAggmZAQAAAAAAACiYkBkAAAAAAACAggmZAQAAAAAAACiYkBkAAAAAAACAglU2dAEAAAAAAJSmDdevSkVV04YuAwBYzYTMAAAAAAAURUVV07x26bFFm3+L7/++aHMDACsmZAYAAAAAWAu1aLlOmjV1ihgA+Px0EAAAAAAAa6FmTStz1NC7i7rGrecfWNT5AYCGUd7QBQAAAAAAAADQeAiZAQAAAAAAACiYkBkAAAAAAACAggmZAQAAAAAAACiYkBkAAAAAAACAggmZAQAAAAAAACiYkBkAAAAAAACAggmZAQAAAAAAACiYkBkAAAAAAACAggmZAQAAAAAAACiYkBkAAAAAAACAggmZAQAAAAAAACiYkBkAAAAAAACAggmZAQAAAAAAACiYkBkAAAAAAACAggmZAQAAAAAAACiYkBkAAAAAAACAggmZAQAAAAAAACiYkBkAAAAAAACAggmZAQAAAAAAACiYkBkAAAAAAACAggmZAQAAAAAAACiYkBkAAAAAAACAggmZAQAAAAAAACiYkBkAAAAAAACAggmZAQAAAAAAACiYkBkAAAAAAACAggmZAQAAAAAAACiYkBkAAAAAAACAggmZAQAAAAAAACiYkBkAAAAAAACAggmZAQAAAAAAAChYvYXMr732Wo488sj07t07Rx55ZKZMmbLMmJqampx//vnp2bNnevXqleHDh9dXeQAAq0y/AwCUMr0OAACwRL2FzEOHDs2gQYNy7733ZtCgQTn33HOXGTNu3LhMmzYtf/7zn3PHHXfk8ssvzxtvvFFfJQIArBL9DgBQyvQ6AADAEvUSMs+ePTsvvPBC+vXrlyTp169fXnjhhcyZM2epcRMnTszhhx+e8vLybLjhhunZs2fuueee+igRAGCV6HcAgFKm1wEAAD6tsj4WmT59etq1a5eKiookSUVFRTbaaKNMnz49G2644VLjOnToUPd1+/btM2PGjM+1Vnl52eopejk22mCdos29ROX6bYu+Rtt1N/zsQaugmMdgiVI4FsU+Dkn9HIs2rYp7LCpbti7q/Elp/Exs0KJp0deoXG+Dos5fKj8TG7Qs7rGoaN6qqPMnSZtGeizq4/iujH6ncH7HFqbYx6IU+s6k+Mei2L1OUvx+pxSOQ1L8fqfYvU5SGsei2L1OUhr9TrGOQ0P2O6XS6yR+xxaqsR+HpDSORSmc20n0O4UohXM7SWn8TJRCv+PcDlAfympra2uLvcg///nPnHXWWZkwYULdtj59+uS///u/07Vr17pt/fv3z4UXXpgddtghSXLddddl5syZ+elPf1rsEgEAVol+BwAoZXodAADg0+rlctnt27fPzJkzU1NTkySpqanJrFmz0r59+2XGvfXWW3VfT58+PRtvvHF9lAgAsEr0OwBAKdPrAAAAn1YvIXPr1q3TpUuXjB8/Pkkyfvz4dOnSZanLKSXJAQcckOHDh2fx4sWZM2dO7rvvvvTu3bs+SgQAWCX6HQCglOl1AACAT6uXy2UnySuvvJKzzz4777//flq2bJlhw4Zlyy23zODBg3Paaadl++23T01NTX7+85/n0UcfTZIMHjw4Rx55ZH2UBwCwyvQ7AEAp0+sAAABL1FvIDAAAAAAAAEDjVy+XywYAAAAAAACgNAiZAQAAAAAAACiYkBkAAAAAAACAggmZAQAAAAAAACiYkBkAAAAAAACAggmZ60mPHj3y73//O0ny0Ucf5Zhjjsk555yTmpqaujFHH310tt9++7z33nt12x5//PF07tw5w4YNq++SS0Z1dXV++9vfpnfv3unbt28OPPDA/OpXv0p1dXXR1/70cV+ZP/zhD5k9e3bR62kM7r777gwcODADBgzIAQcckB/+8IdJkgEDBuTjjz9epbkLPR5rkx49euSAAw7IQQcdlF69euXEE0/M5MmTkyQjR47MbrvtlgEDBmTAgAE5+OCD89hjjyVJamtrc9lll6Vv37456KCD0qdPn9x4441187799tv58Y9/nK9//evp169fBg4cmDvvvHOptU8//fTstddey/wsdu7cOccee+wy2z788MNifAsaxPL+Lh5yyCF54okncvnll2evvfbKwIED07t37xx66KG5+eabl/p90blz5/Tv37/u5+Q3v/lN3b7HH388hx9+eAYMGJADDzww//Vf/5XFixcn+eS43XTTTenbt2/69OmTAw44ID/96U/z/vvv1z3+4YcfTufOnXPfffctVd/ZZ5+d7bffPm+99dZS22699dbV+r2h8dLrNCz9TuOi36lf+p2God+hFOl3Go5ep/HR79QfvU7D0e8Aa7vKhi5gbTNv3rwcd9xx6dq1a4YMGZKysrKl9m+99daZMGFCvvWtbyVJRo0ala5duzZEqSXjnHPOyYIFCzJixIist956qa6uzsiRI7Nw4cI0adKkoctLktx88835yle+ktatWzd0KQ1q1qxZOf/88zNq1Ki0b98+tbW1eemll5IkY8aMaeDqStdll12WbbbZJkny5z//Occdd1yuv/76JMlXvvKVXHbZZUk+aU5//vOf5+67784999yTxx57LCNHjkzTpk2zcOHCTJs2LcknJ1uOOuqoHHLIIfnVr36V8vLyvP/++5k4cWLdmu+9914ee+yxbLHFFnnwwQez//77L1XTq6++mieffDK77757fXwL1jgDBw7MWWedlSR5/fXXc+aZZ2batGn56U9/Wjfm9ttvT/PmzfPRRx+lb9++6dGjR7p27ZrTTjstN998c7bddtskyQsvvFD3u+bSSy/NU089lZtuuilt2rTJ4sWLc99992Xu3Llp2bJlkmTEiBHZc889c9ddd6Vnz55L1dW2bdtcfvnl+eUvf1kf3wYaKb1Ow9DvNB76nYah31nz6HdozPQ79U+v07jod+qfXmfNpN8BSp2QuR7Nnj07P/7xj7Pffvvl9NNPX+6Ygw8+OGPGjMm3vvWtfPjhh5k8eXL69OmThQsX1o257rrrcu+996ampibt2rXLL37xi7Rt2zaPPfZYLr300ixYsCA1NTU54YQT0rdv3ySfvJO2W7duefbZZzNr1qwceOCB+dGPfpQkueKKKzJ+/Pg0bdo0ZWVlufnmm+t+GTV2U6ZMyX333ZeHH3446623XpKkSZMmOfLII1NTU5Nhw4blr3/9a5Lkq1/9an70ox+loqIiZ599dqqqqjJlypS8/vrr6dWrV/bbb79cfvnlmTFjRr797W/n29/+dpJP3rHWt2/fTJ48ObNmzcq3v/3tHHXUUcvUMmvWrFxwwQV56623smDBgvTt2zcnnHBCrr766syaNSunnXZamjZtmksuuSSbbbZZfvOb3+Spp55KdXV1ttlmm5x33nlp3rx5/X3zGsA777yTysrKtGrVKklSVlaWLl26JPnknX2TJ09O8+bN06NHjwwYMCB/+9vf8vbbb+d73/te3ff86aefzvnnn58k2WOPPXL//ffn2muvrWu0l1jR8Vjb7b///vnHP/6R66+/Pt27d19q37x587L++usnSWbOnJkNNtggVVVVSZKqqqpsvfXWSZLx48enVatWOf744+se27Jly3zjG9+o+3rs2LHZd999s88++2TEiBHLvBA59dRT8+tf/zq33357MZ5mo9KxY8dceOGFOeigg3L66aenRYsWS+3/6KOPsmjRorRo0SIffvhh5s+fnzZt2tTt32677ZIkH374YW688caMHj26bn95eflS3/t33303jz32WO6+++707ds3b7/9dtq2bVu3/xvf+EZuvfXW/O///m/d8YZP0+s0DP1O46LfaXj6nTWPfofGRL9T//Q6jY9+p2HpddZM+h2gFAmZ69H3v//9DBo0aIUvQpJPftlUVVXllVdeybPPPpuePXumsrKy7oXImDFjMm3atNx5550pLy/PH//4x/zqV7/KJZdcku222y5//OMfU1FRkXfeeSeHHHJI9tlnn7rGYfr06bntttvy4YcfpmfPnjnssMOywQYb5Prrr89jjz2WZs2a5YMPPkizZs3q5ftRH1544YVsvvnmdd+DT7vjjjvy4osvZuTIkUmSwYMH54477sigQYOSJC+//HJuuumm1NTUpEePHpk3b15uvfXWvP322znggANy2GGH1b0weOedd3LbbbflnXfeycCBA7PbbrvVvctsibPOOisnnXRSvvzlL2fhwoX5zne+k+233z4nnnhihg8fvtQ7Dq+66qq0aNEid911V5Lkv//7v/O73/0uZ5xxRtG+V2uCbbfdNjvssEO6d++ePfbYI7vssksGDBiQDTbYYJmxH3/8ce6444688cYb6d+/fw4++OA0adIkP/jBD/LrX/86u+22W/7yl7/klltuWe5aKzoee++9d7Gf5hpvxx13zAMPPJDu3bvnb3/7WwYMGJD58+dnzpw5ufbaa5Mkffr0yZ/+9Kfsv//+2W233bLnnnumb9++qayszP/8z/9khx12WOkaI0eOzFlnnZWdd945F110UWbOnJl27drV7d9///1z22235b777lvm3ZalYsnJhyWmTJmywrFbbbVVmjVrltdee63ue7vkhd3UqVPzzW9+M1tuuWWS5Igjjsj++++f3XffPbvsskv69++f9u3b55VXXklVVVXduOUZM2ZM9ttvv7Rp0ya9evXK6NGjM3jw4Lr96667bo4//vj85je/yZVXXrkqT58SpddpGPqdxkW/s2bQ79QP/Q6lSL9T//Q6jY9+p+HpdeqPfgdYmwmZ69G+++6biRMn5pvf/GY22mijFY4bOHBgRo0aleeeey4/+9nPcu+999bte+CBB/LPf/4zBx98cJKkpqam7l2cc+bMyU9+8pNMnTo1FRUVmTt3bl577bXstNNOSZIDDjgg5eXladGiRbbaaqtMmzYtHTt2zBZbbJEzzzwzX/3qV9O9e/e6+UrdY489loMPPrju3XqHHHJI7rvvvroXIj179qzbt8UWW2TfffdNeXl52rVrl5YtW2bGjBnZaqutkiSHHXZYkqRNmzbp3r17nnzyyaVeiMyfPz9PPvlk5syZU7ftww8/zCuvvLLcpveBBx7IBx98UHfsFy5cuMwLm1JUXl6eq666Kv/+97/z1FNP5b777sv111+fcePGLTO2T58+SZJNN9207nhUV1enWbNm2W233ZIkvXr1Wu47tz/v8Vjb1NbW1v3505dUeuKJJ/KDH/wg9957bzbaaKNMmDAhzz77bJ555plcc801GTt2bK6//vqlHr88L7zwQt5///3sueeeKSsrS69evTJmzJgcd9xxS4374Q9/mAsvvDA9evRY/U9yDfDpkw/JJ/8GfR5LLqf0/vvv59vf/nbdi7Zzzz033/3ud/P4449n0qRJufbaazNixIjPPC7JJy8QzznnnCSffPpiyJAhS70IST55kXPjjTfmueee+1z1snbQ66x59DtrHv3OmkG/Uz/0O5Qi/c6aRa+zZtLvNDy9Tv3R7wBrMyFzPTr22GPz4IMP5uijj84JJ5yQP/zhD0mS/v3759hjj60bd+CBB6Zv375p06ZNttlmm6VeiNTW1ubEE0+sa3w/7bzzzkuPHj1yxRVXpKysLL17986CBQvq9n/6HVUVFRWpqalJRUVF7rzzzkyePDmPP/54DjnkkPz+978vmaZ3u+22y9SpUzN37txl3vFaW1u7zH2TPv31f36/lvf9W57lzbt48eKUlZXlrrvuKuheQbW1tRk6dGj22muvzxxbirbZZptss802+da3vpU+ffrkySefXGbMio7Hf37vl+fzHo+1zfPPP58vfelLy2zfY489smjRorz88svZYYcdUllZmd122y277bZbDj300Oy9995577330q1bt4wYMWKF89911115//338/Wvfz3JJy+0mzdvvswLkb322itt2rTJ2LFjV+8TbIReffXVfPzxx8t9l2rLli3zla98JY8++mjdO4M7duyYjh075vDDD6/73XPEEUdkwYIFee2117LFFlssM8/zzz+fV155JUOGDKnbNmvWrEyePDm77LJL3bYmTZrk1FNPzSWXXJIOHToU4dnSmOl1GoZ+p3HS7zQs/c6aR79DY6HfqX96ncZLv9Nw9DprJv0OUGrKG7qAtc3xxx+fgw8+ONdcc02uu+66jBkzZqkXIUnSvHnz/PjHP85ZZ521zON79OiRP/7xj5k7d26ST36Bv/TSS0k+uafGJptskrKysjz66KOZOnXqZ9bzwQcfZM6cOdl9991z2mmnZZtttsnLL7+8Gp7pmqFTp07p0aNHzj333HzwwQdJPnmH8E033ZQ99tgjo0aNSnV1daqrqzN69Ogv3PiPGjUqySfvOJ40aVJ23333pfavt9562XXXXfO73/2ubtv06dPz9v/f3p0HVVX3cRz/sKOIuaYoPgPyB6WZUGhqpiMKA6MgijniiGkSYqmj4ExkZS4hmmuiqWgFLmNTOrjiDCLmipbGpJkTDlQIKprkyCJclvv8Yd15eIQi4+oF3q+/ONvvnHO/f/w+h99Zbt+W9KDmxcXFpmW+vr5KSkpSeXm5pAd1ysnJeaRja0oKCwuVlZVlmr5586aKiork6uraoO179uypsrIyXbhwQZKUnp6ue/fuPbTe39WjJUtPT9euXbs0derUh5b99NNPKi0tlaurq3744Qfl5+ebll2+fFlPPfWU2rZtq5EjR6qoqEhbt2413V157949JScny2Aw6NChQ9q9e7cyMjKUkZGhU6dOycrKSufPn39onzExMUpISDDfCTcB+fn5evfddxUWFlbn0wgGg0FZWVlyc3NTaWmpTp06Vet3z8/Pl6urq5ycnDRlyhQtWLBAd+7ckfTgnx779+9XXl6e9uzZo4iICFNdMjIyNGvWrDovKoOCgnT37t06/0EAkHUeP/JO00LeefLIO5aHvIOmhrzzeJF1mh7yzpNF1rFM5B0AzRFPMj8BUVFRMhqNCg8P17Zt22p9q+JPf74q5v+FhITo7t27mjRpkqQHHUhYWJieeeYZxcTEaNGiRdqyZYs8PT3l6en5t8dSUlKiWbNmqby8XEajUb169ZK/v/+/O0ELs2zZMm3YsEGhoaGys7NTTU2Nhg4dqrlz56qgoMD0eqrBgwdr/Pjxj7QPFxcXTZw4Ubdv39b06dPr/O1Xrlyp+Ph4BQUFSXpw8REXF6fOnTtr8uTJmj9/vhwdHbVq1SpFRkZq/fr1GjdunKysrGRlZaWZM2eaXuHUXFVVVSkhIUEFBQVydHRUTU2N5syZo169ejVoe3t7e61atUoLFy6Uo6OjBgwYoE6dOsnZ2fmhdf+qHi3N7NmzZW9vr/v378vDw0OJiYny8vJSbm6u6bs9RqNRRqNR8fHx6tChgy5fvqxFixappKRE9vb2atWqlTZs2CBra2u1bt1a27dv14oVKzR8+HA5OTnJ1tZWEydOVHp6uv7zn//Izc2t1jGMGjVKe/bsMb0K6099+vRR7969a130tAR79+5VZmam7t+/rzZt2igoKEjh4eG11pkwYYKsra1VUVGh/v37KywsTAaDQTt37tSSJUvk4OCg6upqBQUFyc/PT5IUHR2tpKQkU1tGo1E+Pj4aOHCgUlNTtWvXrlr7GDVqlIKDg2vd/So9ePXZ3LlzFRUVZcZfAU0ZWefxI+80HeSdJ4O8Y3nIO2jqyDuPF1mnaSHvPH5kHctE3gHQ3FkZG/ISfwD18vX11aZNm2p9ewNPTklJieluwLNnzyo2NlYZGRmytubFDQAAPCryjmUh7wAA0LjIOpaHvAMAgOXjSWYAzUpaWpqSkpJkNBpNd75yAQIAAJoT8g4AAGjuyDsAAFg+nmQGAAAAAAAAAAAAADQYt3+hRfL19VV2dnateW+88Yby8vL+dtvw8HAdO3bMXIfWolAHAADMgz7WclALAADMgz7WMlAHAABaLl6XDfxhy5YtT/oQIOoAAIC50MdaDmoBAIB50MdaBuoAAEDLwJPMwB/+987L8PBwLV++XGFhYRo+fLhWrlxZ5zaHDh1SaGiobt68qQMHDujVV19VSEiIQkJClJmZaVrv/PnzCgoKUlBQkD788EMNGzbMtK/c3FxFREQoNDRUwcHB2rNnj/lP1oJRBwAAzIM+1nJQCwAAzIM+1jJQBwAAWgaeZAbqcePGDe3cuVOlpaUaMWKExo0bJzc3N9PyLVu26PTp00pKSpKzs7MGDx6sUaNGycrKSrm5uZoyZYpOnDghg8Gg6OhorV69Wj4+Pjpy5Ii2b98uSaqqqtK8efO0YsUKeXh4qKSkRKGhofLy8pKHh8cTOnPLQh0AADAP+ljLQS0AADAP+ljLQB0AAGieGGQG6hEQECBra2s5OzvLw8NDeXl5pgCckJCgbt26KTExUfb29pKka9euKSYmRoWFhbK1tdVvv/2m27dv686dO3J0dJSPj48kyc/PT23btpUk/fLLL8rJyVF0dLRpv5WVlcrNzSUA/4E6AABgHvSxloNaAABgHvSxloE6AADQPDHIDNTDwcHB9LeNjY2qq6tN015eXjp9+rSuX79uCsXR0dGKjY3ViBEjVFNTo759+6qiokKSZGVlVec+jEaj2rdvr3379pnvRJo46gAAgHnQx1oOagEAgHnQx1oG6gAAQPPEN5mBR/DKK69o4cKFioyM1NWrVyVJxcXFcnV1lSTt3r1bBoNBktSzZ0+VlZXpwoULkqT09HTdu3dPkuTu7i5HR0ft3bvX1HZOTo5KSkoe49k0XdQBAADzoI+1HNQCAADzoI+1DNQBAICmiyeZ0WJNnTpVNjY2punS0tJ/tP3AgQMVHx+vGTNm6OOPP9Y777yjN998U126dFH//v3Vrl07SZK9vb1WrVqlhQsXytHRUQMGDFCnTp3k7OwsW1tbbdq0SUuXLtWnn36qmpoadezYUWvXrm3EM7Vs1AEAAPOgj7Uc1AIAAPOgj7UM1AEAgJbJymg0Gp/0QQDNXUlJidq0aSNJOnv2rGJjY5WRkSFra14m8DhRBwAAzIM+1nJQCwAAzIM+1jJQBwAALAdPMgOPQVpampKSkmQ0Gk13XRJ+Hz/qAACAedDHWg5qAQCAedDHWgbqAACA5eBJZgAAAAAAAAAAAABAg3GbFwAAAAAAAAAAAACgwRhkBgAAAAAAAAAAAAA0GIPMAAAAAAAAAAAAAIAGY5AZwCNLSEjQvHnznvRhPFbh4eH66quvGqWt2NhYrVmzplHaAgAAjY+s8++QdQAAsHzknX+HvAMAaMkYZAbwlw4cOKCxY8fK29tbgwcPVkREhM6fP99o7efn58vT01NVVVWN3uaYMWNqzS8qKtJzzz0nX1/fBrXTEi+0AABoacg6ZB0AAJo78g55BwAAc2CQGUC9Pv/8cy1dulRRUVE6ffq0jh07pokTJ+ro0aNP+tBM/uoCpqysTNnZ2abpgwcPqnv37o/jsAAAQBNA1gEAAM0deQcAAJgLg8wA6lRcXKx169ZpwYIF8vf3V+vWrWVnZydfX1+9/fbbD61/7tw5DRkypNY8X19fnTlzRpJ08eJFjR07Vi+88IIGDRqk+Ph4SdKkSZMkSf369ZO3t7eysrIkSbt371ZgYKD69eunadOmqaCgwNSup6endu7cKX9/f/n7+9d7DqNHj1ZKSoppeu/evQoJCam1TmFhoWbNmqUBAwbI19dX27ZtkySdOHFCmzdv1uHDh+Xt7a3g4GDTNgUFBZowYYK8vb31+uuvq6ioyLTs6NGjGjlypHx8fBQeHq6cnBzTsh9//FFjxoyRt7e35syZo4qKinqPHQAAmBdZh6wDAEBzR94h7wAAYE4MMgOoU1ZWlioqKuTn59co7cXFxWny5Mn67rvvdOTIEQUGBkqSduzYIUn69ttvlZWVJW9vb6Wnp2vz5s1av369MjMz9eKLLyomJqZWe+np6fryyy+Vmppa7z6Dg4OVmpqq6upq5eTkqLS0VH379jUtr6mp0YwZM+Tp6akTJ04oOTlZycnJOnnypIYMGaLp06crMDBQWVlZ2r9/v2m7gwcPKj4+XpmZmaqsrNRnn30mSfr5558VExOj+fPnKzMzU0OGDFFUVJQMBoMMBoPeeustjR49Wt98840CAgKUlpbWKL8tAAD458g6ZB0AAJo78g55BwAAc2KQGUCd7t69q/bt28vW1rZR2rO1tVVeXp6Kiork5OQkLy+vetf94osvFBkZKQ8PD9na2ioqKkpXrlypdcdrZGSk2rVrJ0dHx3rb6dq1q9zd3XXmzBmlpKQ8dKfrpUuXVFRUpJkzZ8re3l49evTQ+PHj//LiRpLGjh0rd3d3OTo6KiAgQFeuXJEkpaamaujQoXr55ZdlZ2enadOmqby8XFlZWfr+++9VWVmp1157TXZ2dgoICFCfPn3+/ocDAABmQdapH1kHAIDmgbxTP/IOAAD/XuMkDADNTrt27fT777+rqqqqUS5G4uLitG7dOgUGBsrV1VUzZ87UsGHD6lz3+vXrWrp0qZYvX26aZzQaVVhYaPrujouLS4P2GxISopSUFGVlZWnHjh369ddfTcsKCgp069Yt+fj4mOZVV1fXmq5L586dTX+3atVKZWVlkqRbt26pW7dupmXW1tZycXFRYWGhbGxs1KVLF1lZWZmW/++6AADg8SLr1I+sAwBA80DeqR95BwCAf49BZgB18vb2loODg9LT0xUQEPC367dq1Url5eWm6erq6lrfs3Fzc9Pq1atVU1OjtLQ0zZ49W+fOnasVzP/k4uKiqKioWt/K+X91bVcXf39/LV68WL1791b37t1rXYi4uLjI1dW13lcbNXQff3r66aeVnZ1tmjYajbpx44bpAqSwsFBGo9HU7vXr19WjR49/tA8AANA4yDpkHQAAmjvyDnkHAABz4nXZAOrk7Oys2bNna/HixUpPT9f9+/dVWVmp48eP66OPPnpofXd3d1VUVOjrr79WZWWlNm7cKIPBYFq+b98+FRUVydraWm3btpUk2djYqEOHDrK2tta1a9dM606YMEGJiYm6evWqJKm4uFiHDx9+pPNo3bq1kpOTFRcX99Cy559/Xm3atFFiYqLKy8tVXV2t7OxsXbx4UZLUsWNHFRQUqKampkH7CgwM1PHjx2t9z8fe3l7e3t7y8vKSra2ttm3bpqqqKqWlpenSpUuPdE4AAODfI+uQdQAAaO7IO+QdAADMiSeZAdRr6tSp6tixoz755BPNmzdPTk5O6t27t6Kioh5a19nZWR988IHee+89VVdXKyIiQl27djUtP3nypJYtW6by8nJ169ZNa9askYODgyQpKipKYWFhqqqq0tatW+Xn56fS0lJFR0eroKBAzs7OGjRokAIDAx/pPOr7Po6NjY02btyo5cuXa/jw4TIYDHJ3d9ecOXMkSQEBAdq/f79eeuklubq6KiUl5S/307NnT61YsUJLlixRYWGhnn32WW3atEn29vaSpISEBL3//vtau3athg4dKj8/v0c6HwAA0DjIOmQdAACaO/IOeQcAAHOxMhqNxid9EAAAAAAAAAAAAACApoHXZQMAAAAAAAAAAAAAGoxBZgAAAAAAAAAAAABAgzHIDAAAAAAAAAAAAABoMAaZAQAAAAAAAAAAAAANxiAzAAAAAAAAAAAAAKDBGGQGAAAAAAAAAAAAADQYg8wAAAAAAAAAAAAAgAZjkBkAAAAAAAAAAAAA0GAMMgMAAAAAAAAAAAAAGuy/q2GLNVemxJgAAAAASUVORK5CYII=\n",
"text/plain": [
"<Figure size 1728x576 with 3 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plot_scores(pd.concat([pendigits_raw_results_long, pendigits_pca_results_long, pendigits_umap_results_long]), \n",
" score_types=(\"ARI\", \"AMI\", \"Silhouette\"))"
]
},
{
"cell_type": "markdown",
"id": "089ff1bf",
"metadata": {},
"source": [
"# COIL-20 Clustering"
]
},
{
"cell_type": "code",
"execution_count": 25,
"id": "1e5137d9",
"metadata": {},
"outputs": [],
"source": [
"raw_coil = coil_20_data.astype(np.float32)"
]
},
{
"cell_type": "code",
"execution_count": 26,
"id": "0a847aa8",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"CPU times: user 1min 34s, sys: 1.49 s, total: 1min 36s\n",
"Wall time: 22.1 s\n"
]
}
],
"source": [
"%%time\n",
"km_labels = cluster.KMeans(n_clusters=20).fit_predict(raw_coil)"
]
},
{
"cell_type": "code",
"execution_count": 27,
"id": "40c76dd7",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"CPU times: user 17.7 s, sys: 97 ms, total: 17.8 s\n",
"Wall time: 16.9 s\n"
]
}
],
"source": [
"%%time\n",
"cl_labels = cluster.AgglomerativeClustering(n_clusters=20, linkage=\"complete\").fit_predict(raw_coil)"
]
},
{
"cell_type": "code",
"execution_count": 28,
"id": "715e4bd6",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"CPU times: user 28.3 s, sys: 104 ms, total: 28.4 s\n",
"Wall time: 28.2 s\n"
]
}
],
"source": [
"%%time\n",
"sl_labels = cluster.AgglomerativeClustering(n_clusters=80, linkage=\"single\").fit_predict(raw_coil)"
]
},
{
"cell_type": "code",
"execution_count": 29,
"id": "076f2395",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"CPU times: user 3.07 s, sys: 259 ms, total: 3.33 s\n",
"Wall time: 902 ms\n"
]
}
],
"source": [
"%%time\n",
"db_labels = cluster.DBSCAN(eps=5000.0).fit_predict(raw_coil)"
]
},
{
"cell_type": "code",
"execution_count": 30,
"id": "a05861c6",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n",
" 16, 17, 18, 19, 20, 21])"
]
},
"execution_count": 30,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"np.unique(db_labels)"
]
},
{
"cell_type": "code",
"execution_count": 31,
"id": "f3073e7b",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"CPU times: user 1min 24s, sys: 155 ms, total: 1min 24s\n",
"Wall time: 1min 24s\n"
]
}
],
"source": [
"%%time\n",
"hd_labels = hdbscan.HDBSCAN(min_samples=3, min_cluster_size=20).fit_predict(raw_coil)"
]
},
{
"cell_type": "code",
"execution_count": 32,
"id": "82de280d",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"ARI: 0.5851\n",
"AMI: 0.7666\n",
"Silhouette: 0.2146\n",
"ARI: 0.3198\n",
"AMI: 0.6212\n",
"Silhouette: 0.1567\n",
"ARI: 0.5900\n",
"AMI: 0.8890\n",
"Silhouette: 0.0987\n",
"Pct clustered: 94.93%\n",
"ARI: 0.8971\n",
"AMI: 0.9545\n",
"Silhouette: 0.2508\n",
"Pct clustered: 78.68%\n",
"ARI: 0.8699\n",
"AMI: 0.9606\n",
"Silhouette: 0.1995\n",
"Pct clustered: 93.47%\n"
]
}
],
"source": [
"coil_raw_results = pd.DataFrame(\n",
" [\n",
" eval_clusters(km_labels, coil_20_target, raw_coil, cluster_method=\"K-Means\"),\n",
" eval_clusters(cl_labels, coil_20_target, raw_coil, cluster_method=\"Complete\\nLinkage\"),\n",
" eval_clusters(sl_labels, coil_20_target, raw_coil, cluster_method=\"Single\\nLinkage\"),\n",
" eval_clusters(db_labels, coil_20_target, raw_coil, cluster_method=\"DBSCAN\"),\n",
" eval_clusters(hd_labels, coil_20_target, raw_coil, cluster_method=\"HDBSCAN\"),\n",
" ]\n",
")\n",
"coil_raw_results_long = coil_raw_results.melt([\"Method\", \"Pct Clustered\"], var_name=\"Score Type\", value_name=\"Score\")\n",
"coil_raw_results_long[\"Dim Reduction\"] = \"None\""
]
},
{
"cell_type": "code",
"execution_count": 33,
"id": "43fa25ce",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAABHQAAAI0CAYAAAB8hH7gAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAAsTAAALEwEAmpwYAABFpklEQVR4nO3de5xVdb0//tfMIKAIqYCIoql0RCLNC3mtRARBAQEVTdTKFEVTS62jZolaXjgd84KZl7xjaYii4p2wTEMttaJILUTxgqCQCshlHOb3h1/n1xxug83sPQufz8fDh+y1P7PWe+/P7L3e89prrV1RW1tbGwAAAAAKo7LcBQAAAACwZgQ6AAAAAAUj0AEAAAAoGIEOAAAAQMEIdAAAAAAKRqADAAAAUDACHQAAAICCEegAzdbPfvazdOvWLd26dctLL720wjF33nln3ZiP/vvc5z6XvffeO6eddlqef/75Ff7cmDFj0q1bt4wZM6YpHwIAQD1r2t8cccQRK13Xa6+9lm233bZu7P+1suXA2kGgAzRLtbW1ueOOO1JRUZEkGTdu3CrHb7vttjnxxBNz4okn5vDDD0+HDh0yceLEDBs2LM8880wpSgYAWKU17W9atGiRP/zhDysNfsaNG5fa2tq0aNGi0WsFmj+BDtAsPf7443nttdcydOjQdOjQIXfddVeWLl260vHdu3fPSSedlJNOOilnnnlmxo0bl0MPPTRLly7NpZdeWrrCAQBWYk37m169eiVZcfBTU1OTO++8M9ttt13at2/fVCUDzZhAB2iWPmpchg0blkGDBuVf//pXJk2atEbrOPjgg5Mkf/3rXxu9PgCANbWm/c1nPvOZ7LjjjpkwYUKqq6vr3feb3/wmc+bMySGHHNKkNQPNl0AHaHbefvvtTJ48OVtuuWV22mmnHHjggUmS22+//WOtz2HIAEC5fdz+ZtiwYZk3b15+/etf11s+bty4rLfeetl///2brGageRPoAM3OnXfemerq6rpGZ5tttkmPHj3y1FNP5ZVXXmnwen71q18lSXbeeecmqRMAoKE+bn+z//77Z/3116932tXs2bPz2GOPZcCAAVl//fWbvHageRLoAM1KbW1txo0bl8rKygwZMqRu+dChQ+vuW5G///3vGTNmTMaMGZMLL7wwBx10UMaNG5eNN944p59+eomqBwBY3sftb5Jk3XXXzcCBA/PEE0/ktddeS5LccccdqampcboVfMIJdIBm5cknn8zMmTOzxx57pFOnTnXLBw4cmHXWWSd33XXXcueQJ8nzzz+fK664IldccUVuvPHG/PWvf82mm26a22+/PVtttVUpHwIAQD0ft7/5yCGHHFL3DVnLli3L+PHj061bt2y//falKB9opgQ6QLPy0XnkHx2O/JENN9wwvXv3zttvv73cOeTJh59wvfDCC3n++efzxBNP5JRTTsmsWbMycuTILFq0qCS1AwCsyMftbz7So0eP9OjRI3feeWcee+yxvP76647OAQQ6QPMxb968um96OPXUU9OtW7d6/z300ENJ/v9r46xIRUVFOnTokJEjR+aoo47KCy+84GvLAYCyaYz+JvnwKJ3Zs2dn1KhRad26dQ444IAmrx1o3nz1C9BsfHS4cY8ePdK9e/cVjpk8eXJ+//vf59VXX83mm2++yvV985vfzIQJE3LrrbfmiCOOWO14AIDG1lj9zcCBAzN69Oi8+eabGTJkSNq1a9eUZQMFINABmo2PLgh4zjnnrPSc8EsvvTQ/+9nPcscdd+SUU05Z5frWX3/9jBgxIqNHj84VV1yR0aNHN3rNAACr0lj9zfrrr59rr70277zzTnr06NFk9QLF4ZQroFl46qmnMmPGjGyzzTarvMDfwQcfnIqKiowfPz4ffPDBatc7fPjwdOzYMffcc0/++c9/NmbJAACr1Nj9Tc+ePdOnT5907ty5KcoFCkagAzQLH503PmzYsFWO69KlS/bYY4+89dZbefTRR1e73tatW+e4447LsmXLctlllzVKrQAADdFU/Q1AklTU1tbWlrsIAAAAABrOEToAAAAABSPQAQAAACgYgQ4AAABAwQh0AAAAAApGoAMAAABQMAIdAAAAgIJpUe4CGtu//rUwy5b5JnYA+KSorKzIhhu2KXcZJaHPAYBPjtX1OGtdoLNsWa1GBwBYK+lzAICPOOUKAAAAoGAEOgAAAAAFI9ABAAAAKBiBDgAAAEDBCHQAAAAACkagAwAAAFAwAh0AAACAghHoAAAAABSMQAcAAACgYAQ6AAAAAAUj0AEAAAAoGIEOAAAAQMEIdAAAAAAKRqADAAAAUDACHQAAAICCEegAAAAAFExJAp3Ro0end+/e6datW1588cUVjqmpqcm5556bPn36pG/fvhk3blwpSgMA+I/o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yNChQ7PJJpvU+9KHgw8+uIyVAQCsXIMCHY0OALC2evbZZ7PZZpvl6aefrre8oqJCnwMANFsNCnQ0OgDA2uqWW24pdwkAAGusQYGORgcAWJu9++67efTRRzN79ux06tQpe++9dz71qU+VuywAgJWqbOjAd999NxMmTMjVV1+dCRMm5N13323KugAASuK5555L3759c9ttt+WFF17Ibbfdlr59++a5554rd2kAACvVoCN0nnvuuRx33HHZeuuts+mmm+bRRx/NBRdckKuvvjo77rhjU9cIANBkLrjggowaNSoDBgyoW3b//ffnRz/6UcaPH1/GygAAVq5BgY5GBwBYW7388svZb7/96i3r169fRo0aVaaKAABWr0GnXK2s0Zk5c2aTFAUAUCqf/vSnc99999Vb9uCDD2bzzTcvU0UAAKvXoCN0Pmp0Bg0aVLdMowMArA2+973vZeTIkbnllluy6aab5vXXX88rr7ySq666qtylAQCsVIMCHY0OALC22mmnnfLII4/kN7/5TebMmZO99947e+21VzbYYINylwYAsFINCnQ0OgDA2mr27Nlp3bp1Bg8eXLfs3XffrfsKcwCA5qhB19CZPXt2kmTw4MEZMWJEBg8enIqKirrlAABFdcIJJ+TNN9+st+zNN9/MiSeeWKaKAABWr0GBjkYHAFhbvfzyy+nWrVu9Zd26dctLL71UpooAAFavwd9ypdEBANZGG220UV555ZV6y1555RWnlgMAzVqDAh2NDgCwtjrooINy0kkn5dFHH80///nPTJ48OSeffHKGDRtW7tIAAFaqQRdF/qjROeWUU7L55ptn5syZueyyyzQ6AEDhHXvssWnRokVGjx6dN998M5tsskmGDRuWo446qtylAQCsVIMCHY0OALC2qqyszDHHHJNjjjmm3KUAADRYgwIdjQ4AsLZ54403UllZmU022SRJsmjRolx11VV58cUXs+OOO+boo49OVVVVmasEAFixVV5D54033qj37VaLFi3KJZdckuOPPz7XXHNNampqmrxAAICmcNZZZ2Xq1Kl1t88777zcd9992XLLLTN+/PhcdtllZawOAGDVVhnoaHQAgLXV888/nz333DNJ8v777+f+++/PpZdemtNPPz1XXnll7rvvvjJXCACwcqsMdDQ6AMDaqrq6Ouutt16SZOrUqWnTpk0+97nPJUm6du2a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AAAAQOMR6AAAAAAUjEAHAAAAoGAEOgAAAAAFI9ABAAAAKBiBTgn07t07L774YpJk0aJFOfroo3PmmWempqambsyRRx6Z7bbbLu+8807dsieffDLdunXL6NGjS13yWqO6ujqXXXZZ+vXrlwEDBmS//fbLRRddlOrq6ibf9r/P+6rceOONmTt3bpPXUwQPPPBAhgwZksGDB6d///457bTTkiSDBw/O4sWL/6N1N3Q+Pkl69+6d/v3754ADDkjfvn1z/PHH59lnn02S3HnnnenZs2cGDx6cwYMHZ+jQoZkyZUqSpLa2NpdffnkGDBiQAw44IPvvv39uuOGGuvW+9dZb+e///u/ss88+GThwYIYMGZJf/epX9bb9rW99K7vvvvtyr8Vu3brlmGOOWW7ZwoULm+IpKIsV/S4eeOCBeeqppzJmzJjsvvvuGTJkSPr165eDDjooN998c739Rbdu3TJo0KC618kll1xSd9+TTz6ZYcOGZfDgwdlvv/3y1a9+NcuWLUvy4bzddNNNGTBgQPbff//0798/3//+9/Pee+/V/fxvf/vbdOvWLZMmTapX3xlnnJHtttsub7zxRr1lY8eObdTnhmLS55SPPqdY9Dmlo8cpDz1O6bUodwGfJPPnz8+xxx6bHj165KyzzkpFRUW9+z/zmc/kvvvuy+GHH54kueuuu9KjR49ylLrWOPPMM7NkyZKMHz8+66+/fqqrq3PnnXdm6dKlWWeddcpdXpLk5ptvzh577JH27duXu5SymjNnTs4999zcdddd6dy5c2pra/P8888nSe6+++4yV7f2uvzyy7PNNtskSR5++OEce+yxue6665Ike+yxRy6//PIkH+4EzzvvvDzwwAN58MEHM2XKlNx5551p1apVli5dmpkzZyb58I+5I444IgceeGAuuuiiVFZW5r333sv9999ft8133nknU6ZMyVZbbZVHH300++67b72aXnrppTz99NPZZZddSvEUNDtDhgzJ6aefniR59dVX893vfjczZ87M97///boxt912W9q0aZNFixZlwIAB6d27d3r06JGTTz45N998c7bddtskybRp0+r2NZdeemn+8Ic/5KabbkqHDh2ybNmyTJo0Ke+++27atWuXJBk/fnx222233HHHHenTp0+9ujp27JgxY8bkwgsvLMXTQAHpc0pPn1Mc+pzS0+M0P3qcxifQKZG5c+fmv//7v7P33nvnW9/61grHDB06NHfffXcOP/zwLFy4MM8++2z233//LF26tG7Mtddem4ceeig1NTXp1KlTfvjDH6Zjx46ZMmVKLr300ixZsiQ1NTUZOXJkBgwYkOTDT8U+97nP5U9/+lPmzJmT/fbbL9/5zneSJFdccUUmTpyYVq1apaKiIjfffHPdL33Rvfzyy5k0aVJ++9vfZv3110+SrLPOOjn00ENTU1OT0aNH53e/+12S5Etf+lK+853vpKqqKmeccUZatmyZl19+Oa+++mr69u2bvffeO2PGjMmbb76Zr33ta/na176W5MMUesCAAXn22WczZ86cfO1rX8sRRxyxXC1z5szJj370o7zxxhtZsmRJBgwYkJEjR+ZnP/tZ5syZk5NPPjmtWrXKxRdfnC222CKXXHJJ/vCHP6S6ujrbbLNNzjnnnLRp06Z0T14ZvP3222nRokU22GCDJElFRUW6d++e5MO0/tlnn02bNm3Su3fvDB48OL///e/z1ltv5Rvf+Ebdc/7HP/4x5557bpJk1113za9//etcffXVdTvzj6xsPj7p9t133/zlL3/Jddddl169etW7b/78+fnUpz6VJJk9e3Y23HDDtGzZMknSsmXLfOYzn0mSTJw4MRtssEGOO+64up9t165dvvKVr9Tdvueee7LXXnvli1/8YsaPH79cs3PSSSflJz/5SW677bameJiFsvnmm+f888/PAQcckG9961tp27ZtvfsXLVqUDz74IG3bts3ChQvz/vvvp0OHDnX3f/azn02SLFy4MDfccEMmTJhQd39lZWW95/5f//pXpkyZkgceeCADBgzIW2+9lY4dO9bd/5WvfCVjx47NP//5z7r5ho/oc0pPn1Ms+pzy0uM0P3qcxiHQKZFvf/vbGT58+EqbnOTDX+qWLVtm+vTp+dOf/pQ+ffqkRYsWdY3O3XffnZkzZ+ZXv/pVKisr84tf/CIXXXRRLr744nz2s5/NL37xi1RVVeXtt9/OgQcemC9+8Yt1b06zZs3KrbfemoULF6ZPnz45+OCDs+GGG+a6667LlClT0rp16yxYsCCtW7cuyfNRCtOmTcunP/3puufg391+++35+9//njvvvDNJMmLEiNx+++0ZPnx4kuQf//hHbrrpptTU1KR3796ZP39+xo4dm7feeiv9+/fPwQcfXNd4vP3227n11lvz9ttvZ8iQIenZs2ddcvyR008/PSeccEK+8IUvZOnSpfn617+e7bbbLscff3zGjRtX7xOEK6+8Mm3bts0dd9yRJPnxj3+ca665JqecckqTPVfNwbbbbpvtt98+vXr1yq677pqddtopgwcPzoYbbrjc2MWLF+f222/Pa6+9lkGDBmXo0KFZZ511cuqpp+YnP/lJevbsmUceeSS33HLLCre1svnYc889m/phNnuf//znM3ny5PTq1Su///3vM3jw4Lz//vuZN29err766iTJ/vvvn1/+8pfZd99907Nnz+y2224ZMGBAWrRokb/97W/ZfvvtV7mNO++8M6effnp23HHHXHDBBZk9e3Y6depUd/++++6bW2+9NZMmTVruE5S1xUd/3Hzk5ZdfXunYrl27pnXr1pkxY0bdc/tR8/jKK6/ksMMOy9Zbb50kOeSQQ7Lvvvtml112yU477ZRBgwalc+fOmT59elq2bFk3bkXuvvvu7L333unQoUP69u2bCRMmZMSIEXX3r7feejnuuONyySWX5Kc//el/8vBZC+lzSk+fUyz6nPLT45SGHqe0BDolstdee+X+++/PYYcdlo033nil44YMGZK77rorf/7zn/ODH/wgDz30UN19kydPzl//+tcMHTo0SVJTU1P3icy8efPyve99L6+88kqqqqry7rvvZsaMGdlhhx2SJP37909lZWXatm2brl27ZubMmdl8882z1VZb5bvf/W6+9KUvpVevXnXrW9tNmTIlQ4cOrUvfDzzwwEyaNKmu0enTp0/dfVtttVX22muvVFZWplOnTmnXrl3efPPNdO3aNUly8MEHJ0k6dOiQXr165emnn67X6Lz//vt5+umnM2/evLplCxcuzPTp01e4Y508eXIWLFhQN/dLly5drnFaG1VWVubKK6/Miy++mD/84Q+ZNGlSrrvuutx7773Ljd1///2TJF26dKmbj+rq6rRu3To9e/ZMkvTt23eFn8Ku6Xx80tTW1tb9+98PR37qqady6qmn5qGHHsrGG2+c++67L3/605/yzDPP5Kqrrso999yT6667rt7Pr8i0adPy3nvvZbfddktFRUX69u2bu+++O8cee2y9caeddlrOP//89O7du/EfZDPw73/cJB++B62Jjw5Hfu+99/K1r32trjE8++yzc9RRR+XJJ5/MY489lquvvjrjx49f7bwkHzahZ555ZpIPj6Q466yz6jU7yYfN1A033JA///nPa1Qvaz99TvOiz2l+9Dnlp8cpDT1OaQl0SuSYY47Jo48+miOPPDIjR47MjTfemCQZNGhQvYtj7bfffhkwYEA6dOiQbbbZpl6jU1tbm+OPP75ux/rvzjnnnPTu3TtXXHFFKioq0q9fvyxZsqTu/n9PSauqqlJTU5Oqqqr86le/yrPPPpsnn3wyBx54YH7+85+vNTvVz372s3nllVfy7rvvLvfpVW1t7XLn9v/77f/7fK3o+VuRFa132bJlqaioyB133NGg89lra2szatSo7L777qsduzbaZpttss022+Twww/P/vvvn6effnq5MSubj//73K/Ims7HJ83UqVPzX//1X8st33XXXfPBBx/kH//4R7bffvu0aNEiPXv2TM+ePXPQQQdlzz33zDvvvJPPfe5zGT9+/ErXf8cdd+S9997LPvvsk+TDRr5NmzbLNTu77757OnTokHvuuadxH2ABvfTSS1m8ePEKP3lq165d9thjjzzxxBN1n/Rtvvnm2XzzzTNs2LC6fc8hhxySJUuWZMaMGdlqq62WW8/UqVMzffr0nHXWWXXL5syZk2effTY77bRT3bJ11lknJ510Ui6++OJsuummTfBoKSp9Tunpc4pJn1M+epzmR4/zn/MtVyV03HHHZejQobnqqqty7bXX5u67717uSudt2rTJf//3f9ddLOrf9e7dO7/4xS/y7rvvJvnwTeKji6nNnz8/m222WSoqKvLEE0/klVdeWW09CxYsyLx587LLLrvk5JNPzjbbbJN//OMfjfBIm4ctt9wyvXv3ztlnn50FCxYk+fDTvptuuim77rpr7rrrrlRXV6e6ujoTJkz42I3FXXfdleTDTw8fe+yx5S5ytv7662fnnXfONddcU7ds1qxZeeutt5J8OOfz58+vu69379658cYb677tYMGCBZk+ffrHqq1IZs+eneeee67u9ptvvpl58+alS5cuDfr5rbfeOu+//36eeeaZJMmkSZPqXdn+I6ubj0+ySZMm5Ze//GWOOuqo5e574YUXsnDhwnTp0iV//etf89prr9Xd97e//S2f+tSn0q5duwwYMCDz5s3Lz3/+87pPTN57773cdNNNWbp0ae67777ccccdmTx5ciZPnpzHH388FRUV+eMf/7jcNk877bSMGTOm6R5wAbz22ms566yzcthhh63wyIKlS5fmueeey5ZbbpmFCxfm8ccfr/e8v/baa+nSpUvatGmTr3/96zn77LPrvm2mtrY299xzT2bOnJnx48fnmGOOqZuXyZMn56STTlph4zpo0KC88847K/wjhE82fU5p6XOKRZ9TXnqc5keP0zgcoVNiI0eOTG1tbY488sjcfPPN9c6p/MhHh1n+X0OGDMk777xTd2G02traHHbYYdl2221z2mmn5dxzz821116bbt26pVu3bqutZcGCBTnppJOyePHi1NbW5rOf/exyF+4quosuuig//elPc9BBB2WdddbJsmXLstdee+WUU07J66+/XndY9xe/+MUccsghH2sbnTt3zvDhw/PWW2/luOOOW+Fz/7//+7+58MILM2jQoCQfNjfnn39+OnbsmK9+9av53ve+l9atW+fiiy/OsccemyuuuCIHH3xwKioqUlFRkRNPPLHu0Oe11QcffJAxY8bk9ddfT+vWrbNs2bJ8+9vfrrvg2eq0bNkyF198cc4555y0bt06u+22Wzp06LDcBdaSVc/HJ83JJ5+cli1bZtGiRenatWuuueaa7LDDDnnppZfqzi+vra1NbW1tLrzwwmy00Ub529/+lnPPPTcLFixIy5Yts+666+anP/1pKisrs9566+WWW27Jj3/84+yzzz5p06ZNWrRokeHDh2fSpEnZYostsuWWW9arYeDAgRk/fnzdYeQf2W677dKjR496jdUnwYQJEzJlypQsWrQo66+/fgYNGpQjjzyy3pivfOUrqayszJIlS7LLLrvksMMOy9KlS3Prrbfmhz/8YVq1apWampoMGjQoffv2TZKceuqpufHGG+vWVVtbm549e2b33XfP/fffn1/+8pf1tjFw4MAccMAB9T7RSj48beCUU075xF9gkxXT55SWPqc49Dmlp8dpfvQ4ja+itiEnnQEr1Lt371x11VXLfbsA5bFgwYK6hP/JJ5/MGWeckcmTJ6ey0sGIALCm9DnNiz4H+L8coQOsNR5++OHceOONqa2trfskS5MDAKwN9DnA/+UIHQAAAICCEenyidO7d++8+OKL9ZaNGDEiM2fOXO3PHnnkkXn00UebqrRPFPMAAI3LvrX5MBdAKTjlCpJce+215S6BmAcAaGz2rc2HuQAamyN0IPU/RTnyyCMzevToHHbYYdlnn33yv//7vyv8mfvuuy8HHXRQ3nzzzdx7770ZNmxYhgwZkiFDhmTKlCl14/74xz9m0KBBGTRoUH70ox9l7733rtvWSy+9lGOOOSYHHXRQDjjggBV+fd4niXkAgMZl39p8mAugsTlCB1Zg1qxZufXWW7Nw4cL06dMnBx98cL2vIbz22mvzxBNP5MYbb0zbtm3zxS9+MQMHDkxFRUVeeumlfP3rX89jjz2WpUuX5tRTT81PfvKT9OzZM4888khuueWWJB9+feV3vvOd/PjHP07Xrl2zYMGCHHTQQdlhhx3W+q/ubCjzAACNy761+TAXwH9KoAMr0L9//1RWVqZt27bp2rVrZs6cWbeDHTNmTDbddNNcc801admyZZLk1VdfzWmnnZbZs2enRYsWefvtt/PWW29l7ty5ad26dXr27Jkk6du3b9q1a5ckefnllzN9+vSceuqpddutrq7OSy+9ZAf7/5gHAGhc9q3Nh7kA/lMCHViBVq1a1f27qqoqNTU1dbd32GGHPPHEE3njjTfqdrqnnnpqzjjjjPTp0yfLli3L5z//+SxZsiRJUlFRscJt1NbWZsMNN8zdd9/ddA+k4MwDADQu+9bmw1wA/ynX0IE19KUvfSnnnHNOjj322PzjH/9IksyfPz9dunRJktxxxx1ZunRpkmTrrbfO+++/n2eeeSZJMmnSpLz33ntJkq222iqtW7fOhAkT6tY9ffr0LFiwoISPprjMAwA0LvvW5sNcAA3hCB0+kY466qhUVVXV3V64cOEa/fzuu++eCy+8MMcff3wuu+yynHnmmTnhhBPSqVOn7LLLLtlggw2SJC1btszFF1+cc845J61bt85uu+2WDh06pG3btmnRokWuuuqqXHDBBbnuuuuybNmytG/fPpdeemkjPtLmzTwAQOOyb20+zAXQ1Cpqa2try10ErM0WLFiQ9ddfP0ny5JNP5owzzsjkyZNTWekAuVIyDwDQuOxbmw9zAZ9MjtCBJvbwww/nxhtvTG1tbd0nKHaupWceAKBx2bc2H+YCPpkcoQMAAABQMGJbAAAAgIIR6AAAAAAUjEAHAAAAoGAEOsDHMmbMmHznO98pdxkldeSRR2bcuHGNsq4zzjgjl1xySaOsCwBoPHqc/4weB0pHoAOs1L333psDDzwwO+64Y774xS/mmGOOyR//+MdGW/9rr72Wbt265YMPPmj0dQ4dOrTe8nnz5uVzn/tcevfu3aD1fBKbOQD4pNDj6HFgbSDQAVbohhtuyAUXXJCRI0fmiSeeyKOPPprhw4fn17/+dblLq7OqJun999/Piy++WHd74sSJ2WyzzUpRFgDQjOlxgLWFQAdYzvz583P55Zfn7LPPzr777pv11lsv66yzTnr37p3TTz99ufFPPfVUvvzlL9db1rt37/z+979PkvzlL3/JgQcemJ122il77LFHLrzwwiTJEUcckST5whe+kB133DHPPfdckuSOO+7Ifvvtly984Qs5+uij8/rrr9ett1u3brn11luz7777Zt99913pYxg8eHDuuuuuutsTJkzIkCFD6o2ZPXt2TjrppOy2227p3bt3br755iTJY489lquvvjoPPPBAdtxxxxxwwAF1P/P666/nK1/5Snbcccd84xvfyLx58+ru+/Wvf50BAwakZ8+eOfLIIzN9+vS6+6ZNm5ahQ4dmxx13zLe//e0sWbJkpbUDAE1Dj6PHgbWJQAdYznPPPZclS5akb9++jbK+888/P1/96lfz7LPP5pFHHsl+++2XJBk7dmyS5A9/+EOee+657Ljjjpk0aVKuvvrqXHHFFZkyZUp23nnnnHbaafXWN2nSpPzqV7/K/fffv9JtHnDAAbn//vtTU1OT6dOnZ+HChfn85z9fd/+yZcty/PHHp1u3bnnsscdy00035aabbsrvfve7fPnLX85xxx2X/fbbL88991zuueeeup+bOHFiLrzwwkyZMiXV1dW5/vrrkyQzZszIaaedlu9973uZMmVKvvzlL2fkyJFZunRpli5dmm9+85sZPHhwnn766fTv3z8PP/xwozy3AEDD6XH0OLA2EegAy3nnnXey4YYbpkWLFo2yvhYtWmTmzJmZN29e2rRpkx122GGlY2+77bYce+yx6dq1a1q0aJGRI0fm73//e71PsI499thssMEGad269UrXs8kmm2SrrbbK73//+9x1113LfXI1derUzJs3LyeeeGJatmyZzTffPIcccsgqG6gkOfDAA7PVVluldevW6d+/f/7+978nSe6///7stdde2XPPPbPOOuvk6KOPzuLFi/Pcc8/lz3/+c6qrq/O1r30t66yzTvr375/ttttu9U8cANCo9Dgrp8eB4mmcdzJgrbLBBhvkX//6Vz744INGaXjOP//8XH755dlvv/3SpUuXnHjiidl7771XOPaNN97IBRdckNGjR9ctq62tzezZs+vOD+/cuXODtjtkyJDcddddee655zJ27Ni88sordfe9/vrrmTNnTnr27Fm3rKampt7tFenYsWPdv9ddd928//77SZI5c+Zk0003rbuvsrIynTt3zuzZs1NVVZVOnTqloqKi7v5/HwsAlIYeZ+X0OFA8Ah1gOTvuuGNatWqVSZMmpX///qsdv+6662bx4sV1t2tqauqdd73lllvmJz/5SZYtW5aHH344J598cp566ql6O/+PdO7cOSNHjqx3Tvf/taKfW5F999035513Xnr06JHNNtusXrPTuXPndOnSZaWHBTd0Gx/ZeOON612gsLa2NrNmzaprcmbPnp3a2tq69b7xxhvZfPPN12gbAMB/Ro+jx4G1iVOugOW0bds2J598cs4777xMmjQpixYtSnV1dX7729/mf/7nf5Ybv9VWW2XJkiX5zW9+k+rq6vzsZz/L0qVL6+6/++67M2/evFRWVqZdu3ZJkqqqqmy00UaprKzMq6++Wjf2K1/5Sq655pr84x//SPLhxQsfeOCBj/U41ltvvdx00005//zzl7tv++23z/rrr59rrrkmixcvTk1NTV588cX85S9/SZK0b98+r7/+epYtW9agbe2333757W9/W++885YtW2bHHXfMDjvskBYtWuTmm2/OBx98kIcffjhTp079WI8JAPj49Dh6HFibOEIHWKGjjjoq7du3z5VXXpnvfOc7adOmTXr06JGRI0cuN7Zt27YZNWpUvv/976empibHHHNMNtlkk7r7f/e73+Wiiy7K4sWLs+mmm+aSSy5Jq1atkiQjR47MYYcdlg8++CA///nP07dv3yxcuDCnnnpqXn/99bRt2zZ77LFH3UUG19TKzuOuqqrKz372s4wePTr77LNPli5dmq222irf/va3kyT9+/fPPffck1133TVdunSp920SK7L11lvnxz/+cX74wx9m9uzZ6d69e6666qq0bNkySTJmzJj84Ac/yKWXXpq99tqr0S7GCACsGT2OHgfWFhW1tbW15S4CAAAAgIZzyhUAAABAwQh0AAAAAApGoAMAAABQMAIdAAAAgIIR6AAAAAAUjEAHAAAAoGAEOgAAAAAFI9ABAAAAKBiBDgAAAEDB/H+39tzsf1S0SwAAAABJRU5ErkJggg==\n",
"text/plain": [
"<Figure size 1152x576 with 2 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plot_scores(coil_raw_results_long)"
]
},
{
"cell_type": "code",
"execution_count": 34,
"id": "d6091bcd",
"metadata": {},
"outputs": [],
"source": [
"pca_coil = PCA(n_components=64).fit_transform(raw_coil)"
]
},
{
"cell_type": "code",
"execution_count": 35,
"id": "a2b4b6c6",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"CPU times: user 3.83 s, sys: 79.2 ms, total: 3.91 s\n",
"Wall time: 792 ms\n"
]
}
],
"source": [
"%%time\n",
"km_pca_labels = cluster.KMeans(n_clusters=20).fit_predict(pca_coil)\n",
"cl_pca_labels = cluster.AgglomerativeClustering(n_clusters=20, linkage=\"complete\").fit_predict(pca_coil)\n",
"sl_pca_labels = cluster.AgglomerativeClustering(n_clusters=80, linkage=\"single\").fit_predict(pca_coil)\n",
"db_pca_labels = cluster.DBSCAN(eps=4000.0).fit_predict(pca_coil)\n",
"hd_pca_labels = hdbscan.HDBSCAN(min_samples=3, min_cluster_size=20).fit_predict(pca_coil)"
]
},
{
"cell_type": "code",
"execution_count": 36,
"id": "22a697ab",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"ARI: 0.6016\n",
"AMI: 0.7667\n",
"Silhouette: 0.2112\n",
"ARI: 0.3591\n",
"AMI: 0.6499\n",
"Silhouette: 0.1805\n",
"ARI: 0.8499\n",
"AMI: 0.9609\n",
"Silhouette: 0.1729\n",
"Pct clustered: 94.72%\n",
"ARI: 0.8822\n",
"AMI: 0.9640\n",
"Silhouette: 0.2119\n",
"Pct clustered: 92.64%\n",
"ARI: 0.9657\n",
"AMI: 0.9808\n",
"Silhouette: 0.2028\n",
"Pct clustered: 93.68%\n"
]
}
],
"source": [
"coil_pca_results = pd.DataFrame(\n",
" [\n",
" eval_clusters(km_pca_labels, coil_20_target, raw_coil, cluster_method=\"K-Means\"),\n",
" eval_clusters(cl_pca_labels, coil_20_target, raw_coil, cluster_method=\"Complete\\nLinkage\"),\n",
" eval_clusters(sl_pca_labels, coil_20_target, raw_coil, cluster_method=\"Single\\nLinkage\"),\n",
" eval_clusters(db_pca_labels, coil_20_target, raw_coil, cluster_method=\"DBSCAN\"),\n",
" eval_clusters(hd_pca_labels, coil_20_target, raw_coil, cluster_method=\"HDBSCAN\"),\n",
" ]\n",
")\n",
"coil_pca_results_long = coil_pca_results.melt([\"Method\", \"Pct Clustered\"], var_name=\"Score Type\", value_name=\"Score\")\n",
"coil_pca_results_long[\"Dim Reduction\"] = \"PCA\""
]
},
{
"cell_type": "code",
"execution_count": 37,
"id": "10708ad8",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAABREAAAI0CAYAAACKxG4UAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAAsTAAALEwEAmpwYAABTqElEQVR4nO3deZyVdd0//tcsDCiCCyKCqCgmEq5JaWapCIICgnuiZqYoruVSappbqXF3WypmLpmiWBqioKhppGUa7laWqd2K4sKi4AYoyzC/P/w6vybgEpA5c2Cez8fDh8x1fc51vc/5zDnnPa/rXNepqKurqwsAAAAAwBJUNnUBAAAAAEB5EyICAAAAAIWEiAAAAABAISEiAAAAAFBIiAgAAAAAFBIiAgAAAACFhIgAAAAAQCEhIlC2fvGLX6Rbt27p1q1bXn755cWOuf322+vHfPLflltumd122y2nnnpqnn/++cXebsSIEenWrVtGjBjRmHcBAKCBZe1vDj300CVu6/XXX88WW2xRP/a/LWk5ACwPISJQlurq6nLbbbeloqIiSTJ69OjC8VtssUVOOOGEnHDCCTnkkEOy7rrrZvz48TnggAPy1FNPlaJkAIBCy9rfVFdX54knnlhi2Dh69OjU1dWlurp6hdcKAP9NiAiUpYcffjivv/569tlnn6y77rq54447Mm/evCWO7969e0488cSceOKJOfPMMzN69OgcdNBBmTdvXi699NLSFQ4AsATL2t/suuuuSRYfNtbW1ub222/PVlttlXbt2jVWyQBQT4gIlKVPmuUDDjggAwcOzDvvvJMJEyYs0zb233//JMk//vGPFV4fAMCyWtb+ZrPNNst2222XsWPHZv78+Q3W/fGPf8z06dNz4IEHNmrNAPAJISJQdt5+++088MAD6dKlS77whS9k3333TZLceuuty7U9p/gAAE1tefubAw44IDNnzswf/vCHBstHjx6d1VdfPXvttVej1QwA/0mICJSd22+/PfPnz69vrjfffPP06NEjjz32WF599dWl3s5vf/vbJMn222/fKHUCACyt5e1v9tprr6yxxhoNTmmeNm1aHnroofTv3z9rrLFGo9cOAIkQESgzdXV1GT16dCorKzN48OD65fvss0/9usX517/+lREjRmTEiBG5+OKLs99++2X06NFZb731cvrpp5eoegCARS1vf5Mkq622WgYMGJBHHnkkr7/+epLktttuS21trVOZASgpISJQVh599NFMnjw5O+20Uzp06FC/fMCAAWnRokXuuOOORa4JlCTPP/98rrjiilxxxRW54YYb8o9//COdOnXKrbfemk022aSUdwEAoIHl7W8+ceCBB9Z/s/PChQszZsyYdOvWLVtvvXUpygeAJEJEoMx8cl2gT071+cTaa6+dXr165e23317kmkDJx0fyX3jhhTz//PN55JFHcvLJJ2fKlCkZNmxYPvzww5LUDgCwOMvb33yiR48e6dGjR26//fY89NBDeeONN3wKEYCSEyICZWPmzJn131B4yimnpFu3bg3+u++++5L8/9c6XJyKioqsu+66GTZsWI444oi88MILufTSS0tRPgDAIlZEf5N8/GnEadOm5dxzz02rVq2y9957N3rtAPCffGUpUDY+OZWnR48e6d69+2LHPPDAA/nLX/6S1157LRtuuGHh9o4//viMHTs2N998cw499NBPHQ8AsKKtqP5mwIABGT58eKZOnZrBgwenbdu2jVk2ACxCiAiUjU8uKn7eeect8Ro/l156aX7xi1/ktttuy8knn1y4vTXWWCNDhw7N8OHDc8UVV2T48OErvGYAgCIrqr9ZY401cu211+bdd99Njx49Gq1eAFgSpzMDZeGxxx7LpEmTsvnmmxdeJHz//fdPRUVFxowZkwULFnzqdocMGZL27dvnzjvvzP/93/+tyJIBAAqt6P6mZ8+e6d27dzp27NgY5QJAISEiUBY+uQ7QAQccUDiuc+fO2WmnnfLWW2/lwQcf/NTttmrVKsccc0wWLlyYyy67bIXUCgCwNBqrvwGAplBRV1dX19RFAAAAAADlyycRAQAAAIBCQkQAAAAAoJAQEQAAAAAoJEQEAAAAAAoJEQEAAACAQkJEAAAAAKBQdVMXsKK9887sLFxY19RlAAAlUllZkbXXbt3UZZSEPgcAmo/m1OOwcljlQsSFC+s01wDAKkmfAwBAU3E6MwAAAABQSIgIAAAAABQSIgIAAAAAhYSIAAAAAEAhISIAAAAAUEiICAAAAAAUEiICAAAAAIWEiAAAAABAISEiAAAAAFBIiAgAAAAAFBIiAgAAAACFhIgAAAAAQCEhIgAAAABQSIgIAAAAABQSIgIAAAAAhYSIAAAAAEChkoSIw4cPT69evdKtW7e8+OKLix1T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Xfbaa68MHjw4m222Wfbff/9SlQgAsMz0OAAANAcluyZi165dM3r06EWWX3vttfX/rqyszJlnnpkzzzyzVGUBy6lN29XSqmVZXVYVoEnocQAAaA4kAMByadWyOgecOb6py6g3+uIBTV0CAAAArLKEiABAs/fSSy/ld7/7Xd5+++2ce+65eemllzJ//nzXLQQAgP9nqUPE5t5cO3UTAFZN9957by644IL06dMn48ePz7nnnps5c+bkkksuyQ033NDU5QEAQFlYqlRMc/3xqZsDTx3X1GU0cNclg5q6BABY6V1++eX51a9+le7du+fee+9NkmyxxRZ5/vnnm7gyAAAoH0sVImquAYBV1cyZM+vPrKioqKj//yf/BgAAksqlGaS5BgBWVT169Mi4cQ3PNrj77ruz9dZbN1FFAABQfpbqk4ifNNeDBw+uX6a5BgBWBWeddVaOPPLI3HbbbZkzZ06OPPLITJo0Kb/61a+aujQAACgbSxUiaq4BgFVRXV1dampqMn78+Dz00EPZdddd07Fjx+y6665p3bp1U5cHAABl41NDRM01ALCqqqioyMCBA/P0009nr732aupyAACgbH1qiKi5BgBWZd27d8+kSZPStWvXpi4FAADK1lKdzqy5BgBWVV/60pcydOjQ7LPPPll//fUbfHHc/vvv34SVAQBA+ViqEFFzDQCsqp5++ulssMEGefzxxxssr6io0OcAACSZO3duZsyYkfff/yC1tbVNXQ4rWFVVVdq2bZN27dqlZcuWSxy3VCGi5hoAWFXddNNNTV0CAEDZmjt3bl555ZW0arVG2rXrkKqq6gYfLmPlVldXl9raBZkzZ3ZeeeWVdOnSZYlB4lKFiJprAGBV9t577+XBBx/MtGnT0qFDh+y2225Zc801m7osAIAmN2PGjLRqtUbatl2rqUuhEVRUVKS6ukX9/M6YMSOdOnVa7NjKpd3oe++9l7Fjx+bqq6/O2LFj8957762QYgEAmtIzzzyTPn365JZbbskLL7yQW265JX369MkzzzzT1KUBADS599//IKuv3rqpy6AEVl+9dd5//4Mlrl+qTyI+88wzOeaYY7LpppumU6dOefDBB3PRRRfl6quvznbbbbfCigUAKLWLLroo5557bvr371+/7J577smPfvSjjBkzpgkrAwBoerW1tamqWqr4iJVcVVV14TUvl+q3QHMNAKyqXnnlley5554NlvXt2zfnnntuE1UEAFBeXAOxefi0eV6q05mX1FxPnjx5+SsDACgDG2+8ce6+++4Gy373u99lww03bKKKAACg/CzVJxE/aa4HDhxYv0xzDQCsCr7//e9n2LBhuemmm9KpU6e88cYbefXVV3PVVVc1dWkAAFA2lipE1FwDAKuqL3zhC/n973+fP/7xj5k+fXp222237LLLLllrrbWaujQAACgbSxUiaq4BgFXVtGnT0qpVqwwaNKh+2XvvvZdp06alQ4cOTVgZAED5W231lmnVsny/eOWjuQvy4Zy5n3k7O+74hSTJ+uuvn1tvvSMtW7ZcZMzgwf0zdeqUPPzw46muLt/HZHkt1T3SXAMAq6rjjjsuF110UdZcc836ZVOnTs3ZZ5+d0aNHN2FlAADlr1XL6gw8dVxTl7FEd10yaIWEiJ+YOnVqbr311/nGN45YYdtcWSzVF6scd9xxmTp1aoNlU6dOzQknnNAoRQEAlMorr7ySbt26NVjWrVu3vPzyy01UEQAA5aht27Zp23bNjBx5fd59952mLqfkluqTiJprAGBVtc466+TVV1/NxhtvXL/s1VdfddkWAAAaaNmyVQ455LBceukl+eUvr8lpp52+1LedMOH+3Hbbrfn3v/+dBQvmp3PnDbPHHv1y8MGHpqampsHYwYP7J0luueW2XHvtVZkw4feZOXNGOnTokL333jeHHXZ4KioqFtnHP/7xbG6++cb87W9/zfvvv5d11mmXnXb6So488pi0b9/+s935LOUnET9prv+T5hoAWBXst99+OfHEE/Pggw/m//7v//LAAw/kpJNOygEHHNDUpQEAUGb23//AdO7cOWPHjsnkya9++g2S/OIXI3L22WfklVcmZY89+mX//Q9MXV1dfvGLK/Ltbx+fBQvmL3Kb2toFOemk4/Pggw/ky1/eKXvvPThz587NlVdenuuuu2aR8ePHj8sxx3wrEyc+ku2375mDDhqS7t0/nzvvHJsjjjgkU6dO+cz3fak+ifhJc33yySdnww03zOTJk3PZZZdprgGAld7RRx+d6urqDB8+PFOnTs3666+fAw44IEcc0fyucwMAQLHq6hY57riT8v3vfy8///nlGT78ksLxzz77t4wceX06dFg/v/rVjWnXbt0kybHHnpjTTz81jzzy54wadWO++c0jG9zurbfeymabbZ7LL78yrVq1SpIceeQxOfDAwbnllpvzzW9+K9XVLZIkkye/mh//+MJ07NgxV175y6y33nr123nyycdz0knH5Wc/+99PrfVT7/vSDNJcAwCrqsrKyhx11FE56qijmroUAABWAr169c5WW22dP/3pwfz1r89k2223W+LYu+66M0lyxBFH1geISVJdXZ1vf/uUTJz4SO68c+wiIWKSnHLKd+sDxOTjM4W/9rVdc8894/Pqq6+ma9fNkiS33z46CxYsyMknf7dBgJgkPXt+KV/96i55+OGHMnv27LRu3Xq57/dShYiaawBgVfPmm2+msrIy66+/fpLkww8/zFVXXZUXX3wx2223XY488shUVVU1cZUAAJSjk046OUOHHpHLL/9Zrrtu5GKvUZgkL7zwryTJ9tt/cZF1G220cdZbb728+eYb+eCDD9KmTZv6dWussUY23HCjRW6z3nodkiQffPB+/bJnn/17kuTpp5/Kc8/9c5HbzJw5M7W1tXnttVezxRafX4Z72VBhiKi5BgBWVWeddVaGDBlS3+dccMEFeeKJJ9KnT5+MGTMms2bNyimnnNLEVQIAUI622mqb9OrVOw88MCETJtyfPn36Lnbc7NmzkiTrrrv4LzZp127dTJ06NbNm/XeI2Gax4z/J4WprF9Yve++995IkN998Y2HNc+Z8WLj+0xSGiJprAGBV9fzzz+crX/lKkmTOnDm55557cvPNN2fLLbfM/vvvn6OPPlqfAwDAEh133Il56KE/5he/uCK77tprsWNat14jSTJjxtvp3HnDRdbPmPF2kiWHhktjjTU+3scf/vBQ/f4aQ+G3My+uub700ktz+umn58orr8zdd9/daIUBADSm+fPnZ/XVV0+SPPvss2ndunW23HLLJEnXrl3zzjvvNGV5AACUuc6dN8x++x2QN998I7/97S2LHbP55lsk+fhU4//22muTM3369HTqtEGDTyEuqy233CpJ8te/PrPc21gahSGi5hoAWFV17tw5jz32WJLkgQceyA477FC/bubMmVlttdWaqjQAAFYS3/rW0WnTpk1GjrwuH3646OnCAwcOSpJcf/0vG+RotbW1GTHi0ixcuLB+zPLaf/+DUl1dnUsvvSSTJ7+6yPr58+fnr399+jPtI/mU05k/aa532GEHzTUAsEo54YQTcvzxx2fDDTfMyy+/nJtuuql+3R/+8IdstdVWTVgdAAArgzXXXDOHH/6tXHHFZYtdv/XW2+TQQw/PqFEjM2TIAenVa/e0arVaHn30L3nppf/LNttsm0MPPfwz1dClyyY566xzc+GF5+fggw/Ijjt+ORtttHEWLFiQadOm5q9/fSZrr712br319s+0n8IQUXMNAKyqevfundtvvz3/+te/8vnPfz4bbvj/X6Nm0003zbbbbtt0xQEAsNI48MCDM2bM6EyZ8uZi159wwrfTrdsWGT361tx7791ZsGBBNtigc4455rgMGXJYWrRo8Zlr2HPP/vnc5zbPr389Kk8//UQef/zRrLbaall33fbp1Wv39O69x2feR2GIqLkGAFZlG220UTbaaKNFlm+//fZNUA0AwMrno7kLctcln+103Mb00dwFK2Q7jz665NOBa2pqcscd4wtv36dP3yV+g/N/Gzt2yd9BMnTosAwdOmyx6zbb7HM555zzl2ofy6MwREw01wAAAAAs3odz5ubDOXObugxKoPCLVQAAAAAAhIgAAAAAQCEhIgAAAABQ6FOviQgAsCoaMmRIKioqCsfcfPPNJaoGAADKW2GIqLkGAFZVBxxwQFOXAAAAK43CEFFzDQCsqvbZZ5+mLgEAAFYahSHipzXX8+fPX6HFAACUytixYz91zODBgxu9DgAAWBks1zUR582bl1tuuSXXXXdd/vSnP63omgAAGt0ZZ5yRjTfeOOuuu27q6uoWWV9RUSFEBACA/6cwRHz55Zdz1lln5fnnn0+XLl0yfPjwTJo0KT/60Y/SoUOHnH766aWqEwBghTrssMNy3333pXXr1hk8eHB69+6dmpqapi4LAADKUmGIeOGFF6ZLly4ZNmxYxo8fn+OOOy6tWrXK8OHDs9NOO5WqRgCAFe6ss87KGWeckT//+c8ZO3ZsLrroouy6664ZPHhwevbs2dTlAQBAWSkMEf/xj3/kz3/+c2pqavLFL34x22+/fR588MGsv/76paoPAKDRVFVVZdddd82uu+6aWbNm5corr8w3vvGN/OpXv8qOO+7Y1OUBAEDZKAwR58+fX39az+qrr542bdoIEAGAVcoHH3yQu+++O2PHjs3MmTNz3HHHpXv37k1dFgAAlJXCEHHevHm57LLL6n/+6KOPGvycJN/+9rcbpzIAgEb04IMP5o477sjTTz+dXr165bvf/W623377pi4LAADKUmGIOHDgwEydOrX+5/79+zf4GQBgZXXsscdmk002ycCBA9OqVas8/PDDefjhhxuMcbAUAKBY29bVqapp2dRlLFHtvLl5f/aCz7ydHXf8QoOfKysr06ZN22y22WYZOHBw+vXba7G3e+WVSbnttt/m6aefzLRp0zJ37kdZa621svnmW2TXXXulb98907Ll4h+/66//Za6++sokya233p6NN+7yme/HZ1EYIl588cWFN164cOEKLQYAoFQGDx6cioqKvPvuu01dCgDASquqpmVevnC/pi5jiTY9a0yyAkLETxx55NFJkgULFmTy5Ffz0EN/zFNPPZnnn/9XvvOdUxuMve66a3Lddddk4cKF2XLLrbLXXgOy+uqrZebMmXn66ady0UUX5PbbR+eGG25eZD91dXW5665xqaioSF1dXcaNuyMnnXTyCrsfy6MwRFySF154IWPHjs1dd921yBF7AICVwY9//OPC9Q6WAgDw34YOHdbg5yeeeCwnnXRcbr311znwwIPTqVOnJMkNN1yXa6+9Kh06rJ8LLxyeLbfcapFtPfzwQ/n1r0ctdj+PPTYxb775Rvr3H5iJE/+Se+65K8cee0JatGix4u/UUqpc2oEzZ87MyJEjs88++2Tw4MF59tlnc9ZZZzVmbQAAJffCCy9k+PDh+drXvtbUpQAAUOa++MUdsvHGXVJXV5d//eufSZI333wzv/zl1amurs5Pf3r5YgPEJNl556/l0kuvWOy6cePuSJIMGrRv+vbdM++++27++McHGudOLKVP/XbmBx54IHfccUcefvjhbLTRRunfv3/efPPNXHbZZWnXrl2p6gQAaDQzZ87MXXfdlbFjx+b555/P9ttv72ApAABLpa6uLklSUVGRJLn77nFZsGBB+vTpm65dNyu8bU1NzSLLZsyYkT//+U/ZaKONs/XW26R169b5zW9GZdy429OnT98VfweWUmGI+JWvfCUVFRXZd999c+KJJ6ZHjx5Jkt/85jclKQ4AoLE4WAoAwGf1+OOPZfLkV1NRUZHu3T+fJPnb3/6aJOnZ80vLtc27774zCxYsSP/+A5MkXbtulm7dtshTTz2Z116bnA033GiF1L6sCkPEbt265amnnsrf/va3bLzxxuncuXPWXHPNUtUGANBoHCwFAGBZXXvtVUkafrFKXV1dvv71Q9Kx48fXQ3z77beTJOutt94yb7+uri533nlHKisrs+eeA+qX9++/d1544X9y551jc/zxJ62Ae7LsCkPEm266KW+88UbGjh2bX/3qV/nRj36UnXfeOXPmzMmCBSvum20AAErNwVIAAJbVddddk+TjU5fbtGmTbbbZLgMHDsqee/avH/PfpzcviyeffDyvv/56dtzxyw1CyL59+2XEiJ/l7rvvyjHHHJvq6tJ/wcqnfjvzBhtskOOPPz7HH398nnzyyYwbNy6VlZXZe++9s99+++V73/teKeoEAFihHCwFAGBZPfro0586pn379nn11Vcyffr0Zd7+2LG3J/n4k4f/ac0118rOO38tDz74hzz00J/Sq1fvZd72Z7XU386cJD179swPf/jDPPLII/nBD36QF198sbHqAgBodJ8cLL3//vtzww03pH379vUHS//nf/6nqcsDAGAltM022yb5+FOFy+Kdd97JQw/9MUnygx+cmR13/EKD/x588A9J/v+gsdQ+9ZOIi9OyZcsMGDAgAwYM+PTBAAArgZ49e6Znz545++yz8/vf/z5jx45t6pIAAFgJ9e8/KCNHXp8HH/xDJk16OZtssukSx86bN6/+G5rvueeuzJ8/P1ts0T2f+1y3xY5/+OE/5YknHsubb76RTp02aJT6l2S5QkQAgFWVg6UAAHwWnTp1ylFHHZOrrvp5TjnlpFx00f/Uf3Pzf5o48ZGMGjUyP//5x9dZvPPOsUmS7373zPToseVit3311Vfm+ut/mXHj7sixx57QaPdhcYSIAAAAALACffObR6a2tjbXXXdNjjji0Gy11Tbp3v3zWW211TJz5sz89a9P57XXJteHi0899WReffWVdO262RIDxCQZOHBwbrjhutx9950ZOnRYqqtLF+0JEQEAAABgBTvyyKPTq1fvjBkzOk8//WTGj78z8+bNzZprrpXPfW7zHHbYN9Ov315JknHj7kiS7L33PoXb7NSpU774xR3y+OOP5uGHH8quu/Zq9PvxCSEiAAAAAMuldt7cbHrWmKYuY4lq581dIdtZmm9lXpxNNtk0p512+qeOu+CCC3PBBRcu1TYvv/zK5arlsxIiAgAAALBc3p+9IJm9oKnLoAQqm7oAAAAAAKC8CREBAAAAgEJCRAAAAACgkBARAAAAACgkRAQAAAAACgkRAQAAAIBCQkQAAAAAlqiurq6pS6AEPm2ehYgAAAAALFZVVVVq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eeaZqa2trR9z2GGHZauttsq7775bv+zRRx9Nt27dMnz48FKXvMqYP39+LrvssvTt2zf9+/fPnnvumR//+MeZP39+o+/7P+e9yA033JAZM2Y0ej0rg3vvvTeDBw/OoEGD0q9fv5x66qlJkkGDBuWjjz76TNte2vloTnr16pV+/fpl7733Tp8+fXLsscfm6aefTpLcfvvt6dmzZwYNGpRBgwZln332ycSJE5MkdXV1ufzyy9O/f//svffe2WuvvXL99dfXb/ett97K9773vey+++4ZMGBABg8enN/+9rcN9v3tb387X/7ylxd5Lnbr1i1HHXXUIstmz57dGA9Bk1jc7+K+++6bxx57LCNGjMiXv/zlDB48OH379s1+++2XG2+8scH7Rbdu3TJw4MD658nPfvaz+nWPPvpoDjjggAwaNCh77rlnvvGNb2ThwoVJPp63kSNHpn///tlrr73Sr1+/nH322Xn//ffrb/+nP/0p3bp1y4QJExrUd8YZZ2SrrbbKm2++2WDZqFGjVuhjw8pJn9N09DkrF31O6ehxmoYeB1Z91U1dQHPywQcf5Oijj06PHj1y1llnpaKiosH6zTbbLHfffXcOOeSQJMkdd9yRHj16NEWpq4wzzzwzc+fOzZgxY7LGGmtk/vz5uf322zNv3ry0aNGiqctLktx4443Zaaed0q5du6YupUlNnz49559/fu6444507NgxdXV1ef7555Mk48aNa+LqVl2XX355Nt988yTJ/fffn6OPPjrXXXddkmSnnXbK5ZdfnuTjxuuCCy7Ivffem9/97neZOHFibr/99rRs2TLz5s3L5MmTk3wcIBx66KHZd9998+Mf/ziVlZV5//33c88999Tv8913383EiROzySab5MEHH8wee+zRoKaXX345jz/+eL70pS+V4iEoO4MHD87pp5+eJHnttdfy3e9+N5MnT87ZZ59dP+aWW25J69at8+GHH6Z///7p1atXevTokZNOOik33nhjtthiiyTJc889V/9ec+mll+aJJ57IyJEjs+6662bhwoWZMGFC3nvvvbRt2zZJMmbMmOy444657bbb0rt37wZ1tW/fPiNGjMjFF19cioeBlZA+p/T0OSsPfU7p6XHKjx4HVn5CxBKZMWNGvve972W33XbLt7/97cWO2WeffTJu3LgccsghmT17dp5++unstddemTdvXv2Ya6+9Nvfdd19qa2vToUOH/PCHP0z79u0zceLEXHrppZk7d25qa2szbNiw9O/fP8nHR/+33HLL/PWvf8306dOz55575rTTTkuSXHHFFRk/fnxatmyZioqK3HjjjfUvtCu7V155JRMmTMif/vSnrLHGGkmSFi1a5KCDDkptbW2GDx+eP//5z0mSr371qznttNNSVVWVM844IzU1NXnllVfy2muvpU+fPtltt90yYsSITJ06NYcffngOP/zwJB8fbevfv3+efvrpTJ8+PYcffngOPfTQRWqZPn16fvSjH+XNN9/M3Llz079//wwbNiy/+MUvMn369Jx00klp2bJlLrnkkmy00Ub52c9+lieeeCLz58/P5ptvnvPOOy+tW7cu3YPXBN5+++1UV1dnrbXWSpJUVFSke/fuST4+Kvn000+ndevW6dWrVwYNGpS//OUveeutt/Ktb32r/jF/8sknc/755ydJdthhh/zhD3/I1VdfXd9AfmJJ89Hc7bHHHvn73/+e6667LrvuumuDdR988EHWXHPNJMm0adOy9tprp6amJklSU1OTzTbbLEkyfvz4rLXWWjnmmGPqb9u2bdt8/etfr//5zjvvzC677JKdd945Y8aMWaTBPvHEE/PTn/40t9xyS2PczZXKhhtumAsvvDB77713vv3tb6dNmzYN1n/44YdZsGBB2rRpk9mzZ2fOnDlZd91169d//vOfT5LMnj07119/fcaOHVu/vrKyssFj/84772TixIm59957079//7z11ltp3759/fqvf/3rGTVqVP7v//6vfr7hE/qc0tPnrFz0OU1Lj1N+9DiwchIilsh3vvOdDBkyZImNdfLxC2lNTU1eeuml/PWvf03v3r1TXV1d31yPGzcukydPzm9/+9tUVlbm17/+dX784x/nkksuyec///n8+te/TlVVVd5+++3su+++2XnnnevfEKdMmZKbb745s2fPTu/evbP//vtn7bXXznXXXZeJEyemVatWmTVrVlq1alWSx6MUnnvuuWy88cb1j8F/uvXWW/Ovf/0rt99+e5Jk6NChufXWWzNkyJAkyb///e+MHDkytbW16dWrVz744IOMGjUqb731Vvr165f999+/vtl9++23c/PNN+ftt9/O4MGD07Nnz/ojZJ84/fTTc9xxx+WLX/xi5s2bl29+85vZaqutcuyxx2b06NENjpReeeWVadOmTW677bYkyU9+8pNcc801OfnkkxvtsSoHW2yxRbbeeuvsuuuu2WGHHfKFL3whgwYNytprr73I2I8++ii33nprXn/99QwcODD77LNPWrRokVNOOSU//elP07Nnz/z+97/PTTfdtNh9LWk+vvKVrzT23Sx722yzTR544IHsuuuu+ctf/pJBgwZlzpw5mTlzZq6++uokyV577ZXf/OY32WOPPdKzZ8/suOOO6d+/f6qrq/PPf/4zW2+9deE+br/99px++unZbrvtctFFF2XatGnp0KFD/fo99tgjN998cyZMmLDIkeJVxSd/UH/ilVdeWeLYrl27plWrVpk0aVL9Y/vJHyyvvvpqDj744Gy66aZJkgMPPDB77LFHvvSlL+ULX/hCBg4cmI4dO+all15KTU1N/bjFGTduXHbbbbesu+666dOnT8aOHZuhQ4fWr1999dVzzDHH5Gc/+1l+/vOff5a7zypIn1N6+pyViz6n6elxSkOPA6s2IWKJ7LLLLrnnnnty8MEHZ7311lviuMGDB+eOO+7I3/72t/zgBz/IfffdV7/ugQceyD/+8Y/ss88+SZLa2tr6I88zZ87M97///bz66qupqqrKe++9l0mTJmXbbbdNkvTr1y+VlZVp06ZNunbtmsmTJ2fDDTfMJptsku9+97v56le/ml133bV+e6u6iRMnZp999qk/yrjvvvtmwoQJ9c11796969dtsskm2WWXXVJZWZkOHTqkbdu2mTp1arp27Zok2X///ZMk6667bnbdddc8/vjjDZrrOXPm5PHHH8/MmTPrl82ePTsvvfTSYpu5Bx54ILNmzaqf+3nz5i3SrK+KKisrc+WVV+bFF1/ME088kQkTJuS6667LXXfdtcjYvfbaK0nSuXPn+vmYP39+WrVqlZ49eyZJ+vTps9hPmyzrfDQ3dXV19f/+z1N9HnvssZxyyim57777st566+Xuu+/OX//61zz11FO56qqrcuedd+a6665rcPvFee655/L+++9nxx13TEVFRfr06ZNx48bl6KOPbjDu1FNPzYUXXphevXqt+DtZBv7zD+rk49egZfHJqT7vv/9+Dj/88Po/Rs4555wcccQRefTRR/PQQw/l6quvzpgxYz51XpKP//A588wzk3z8ibGzzjqrQYOdfNzAX3/99fnb3/62TPWy6tPnlBd9TvnR5zQ9PU5p6HFg1SZELJGjjjoqDz74YA477LAMGzYsN9xwQ5Jk4MCBDS6wu+eee6Z///5Zd911s/nmmzdoruvq6nLsscfWN3P/6bzzzkuvXr1yxRVXpKKiIn379s3cuXPr1//n0aCqqqrU1tamqqoqv/3tb/P000/n0Ucfzb777ptf/vKXq0wj9/nPfz6vvvpq3nvvvUWO0tfV1S1yrab//Pm/H6/FPX6Ls7jtLly4MBUVFbntttuW6vpEdXV1Offcc/PlL3/5U8euijbffPNsvvnmOeSQQ7LXXnvl8ccfX2TMkubjvx/7xVnW+Whunn322Xzuc59bZPkOO+yQBQsW5N///ne23nrrVFdXp2fPnunZs2f222+/fOUrX8m7776bLbfcMmPGjFni9m+77ba8//772X333ZN8/Mdj69atF2mwv/zlL2fdddfNnXfeuWLv4Ero5ZdfzkcffbTYI+xt27bNTjvtlEceeaT+Ew0bbrhhNtxwwxxwwAH17z0HHnhg5s6dm0mTJmWTTTZZZDvPPvtsXnrppZx11ln1y6ZPn56nn346X/jCF+qXtWjRIieeeGIuueSSdOrUqRHuLSsrfU7p6XNWTvqcpqPHKT96HFj5+HbmEjrmmGOyzz775Kqrrsq1116bcePGLfINXa1bt873vve9+gvO/qdevXrl17/+dd57770kH78xfXJB5g8++CAbbLBBKioq8sgjj+TVV1/91HpmzZqVmTNn5ktf+lJOOumkbL755vn3v/+9Au5peejSpUt69eqVc845J7NmzUry8acaRo4cmR122CF33HFH5s+fn/nz52fs2LHL3czecccdST7+lMRDDz20yIWS11hjjWy//fa55ppr6pdNmTIlb731VpKP5/yDDz6oX9erV6/ccMMN9d/SN2vWrLz00kvLVdvKZNq0aXnmmWfqf546dWpmzpyZzp07L9XtN91008yZMydPPfVUkmTChAkNvpHtE582H83ZhAkT8pvf/CZHHHHEIuteeOGFzJ49O507d84//vGPvP766/Xr/vnPf2bNNddM27Zt079//8ycOTO//OUv648Mv//++xk5cmTmzZuXu+++O7fddlseeOCBPPDAA3n44YdTUVGRJ598cpF9nnrqqRkxYkTj3eGVwOuvv56zzjorBx988GI/QTVv3rw888wz6dKlS2bPnp2HH364weP++uuvp3PnzmndunW++c1v5pxzzqn/ltS6urrceeedmTx5csaMGZOjjjqqfl4eeOCBnHjiiYv9Y2ngwIF59913F/uHL82bPqe09DkrF31O09LjlB89DqycfBKxxIYNG5a6urocdthhufHGGxtcI+MTn5zC8N8GDx6cd999t/7iynV1dTn44IOzxRZb5NRTT83555+fa6+9Nt26dUu3bt0+tZZZs2blxBNPzEcffZS6urp8/vOfX+Tivyu7H//4x/n5z3+e/fbbLy1atMjChQuzyy675OSTT84bb7xRf8rUzjvvnAMPPHC59tGxY8cMGTIkb731Vo455pjFPvb/+7//m4svvjgDBw5M8nFDfeGFF6Z9+/b5xje+ke9///tp1apVLrnkkhx99NG54oorsv/++6eioiIVFRU54YQT6k8rWlUtWLAgI0aMyBtvvJFWrVpl4cKF+c53vlN/0eRPU1NTk0suuSTnnXdeWrVqlR133DHrrrvuIhdpTorno7k56aSTUlNTkw8//DBdu3bNNddck2233TYvv/xy/fWC6urqUldXl4svvjjrrLNO/vnPf+b888/PrFmzUlNTk9VWWy0///nPU1lZmdVXXz033XRTfvKTn2T33XdP69atU11dnSFDhmTChAnZaKON0qVLlwY1DBgwIGPGjKk/ResTW221VXr06NGgmW8Oxo4dm4kTJ+bDDz/MGmuskYEDB+awww5rMObrX/96KisrM3fu3HzpS1/KwQcfnHnz5uXmm2/OD3/4w7Rs2TK1tbUZOHBg+vTpkyQ55ZRTcsMNN9Rvq66uLj179syXv/zl3HPPPfnNb37TYB8DBgzI3nvv3eDIffLxKXknn3xys79IP4unzyktfc7KQ59Tenqc8qPHgZVfRd3SXEQAWKxevXrlqquuWuRb8Wgas2bNqj+S+eijj+aMM87IAw88kMpKH7oGgGWlzykv+hwAmppPIgKrjPvvvz833HBD6urq6o/Ya6wBgFWBPgeApuaTiAAAAABAIYeuaHZ69eqVF198scGyoUOHZvLkyZ9628MOOywPPvhgY5XWrJgHAFixvLeWD3MBwKrI6cyQ5Nprr23qEoh5AIAVzXtr+TAXAKzsfBIR0vBo8WGHHZbhw4fn4IMPzu67757//d//Xext7r777uy3336ZOnVq7rrrrhxwwAEZPHhwBg8enIkTJ9aPe/LJJzNw4MAMHDgwP/rRj7LbbrvV7+vll1/OUUcdlf322y977713xowZ0/h3toyZBwBYsby3lg9zAcDKzicRYTGmTJmSm2++ObNnz07v3r2z//77p0uXLvXrr7322jzyyCO54YYb0qZNm+y8884ZMGBAKioq8vLLL+eb3/xmHnroocybNy+nnHJKfvrTn6Znz575/e9/n5tuuilJsmDBgpx22mn5yU9+kq5du2bWrFnZb7/9su2226Zr165NdM/Li3kAgBXLe2v5MBcArGyEiLAY/fr1S2VlZdq0aZOuXbtm8uTJ9U3diBEj0qlTp1xzzTWpqalJkrz22ms59dRTM23atFRXV+ftt9/OW2+9lRkzZqRVq1bp2bNnkqRPnz5p27ZtkuSVV17JSy+9lFNOOaV+v/Pnz8/LL7+sqft/zAMArFjeW8uHuQBgZSNEhMVo2bJl/b+rqqpSW1tb//O2226bRx55JG+++WZ9o3fKKafkjDPOSO/evbNw4cJss802mTt3bpKkoqJisfuoq6vL2muvnXHjxjXeHVnJmQcAWLG8t5YPcwHAysY1EWEZffWrX815552Xo48+Ov/+97+TJB988EE6d+6cJLntttsyb968JMmmm26aOXPm5KmnnkqSTJgwIe+//36SZJNNNkmrVq0yduzY+m2/9NJLmTVrVgnvzcrLPADAiuW9tXyYCwDKkU8i0iwdccQRqaqqqv959uzZy3T7L3/5y7n44otz7LHH5rLLLsuZZ56Z4447Lh06dMiXvvSlrLXWWkmSmpqaXHLJJTnvvPPSqlWr7Ljjjll33XXTpk2bVFdX56qrrspFF12U6667LgsXLky7du1y6aWXrsB7Wt7MAwCsWN5by4e5AGBVU1FXV1fX1EXAqmzWrFlZY401kiSPPvpozjjjjDzwwAOprPRB4FIyDwCwYnlvLR/mAoBS8ElEaGT3339/brjhhtTV1dUfKdbQlZ55AIAVy3tr+TAXAJSCTyICAAAAAIUcngIAAAAACgkRAQAAAIBCQkQAAAAAoJAQEVguI0aMyGmnndbUZZTUYYcdltGjR6+QbZ1xxhn52c9+tkK2BQCsOHqcz0aPA7DqEiICS3TXXXdl3333zXbbbZedd945Rx11VJ588skVtv3XX3893bp1y4IFC1b4NvfZZ58Gy2fOnJktt9wyvXr1WqrtNMc/IACgudDj6HEAWHZCRGCxrr/++lx00UUZNmxYHnnkkTz44IMZMmRI/vCHPzR1afWKGvM5c+bkxRdfrP95/Pjx2WCDDUpRFgBQxvQ4ALB8hIjAIj744INcfvnlOeecc7LHHntk9dVXT4sWLdKrV6+cfvrpi4x/7LHH8rWvfa3Bsl69euUvf/lLkuTvf/979t1333zhC1/ITjvtlIsvvjhJcuihhyZJvvjFL2a77bbLM888kyS57bbbsueee+aLX/xijjzyyLzxxhv12+3WrVtuvvnm7LHHHtljjz2WeB8GDRqUO+64o/7nsWPHZvDgwQ3GTJs2LSeeeGJ23HHH9OrVKzfeeGOS5KGHHsrVV1+de++9N9ttt1323nvv+tu88cYb+frXv57tttsu3/rWtzJz5sz6dX/4wx/Sv3//9OzZM4cddlheeuml+nXPPfdc9tlnn2y33Xb5zne+k7lz5y6xdgCgcehx9DgALD8hIrCIZ555JnPnzk2fPn1WyPYuvPDCfOMb38jTTz+d3//+99lzzz2TJKNGjUqSPPHEE3nmmWey3XbbZcKECbn66qtzxRVXZOLEidl+++1z6qmnNtjehAkT8tvf/jb33HPPEve5995755577kltbW1eeumlzJ49O9tss039+oULF+bYY49Nt27d8tBDD2XkyJEZOXJk/vznP+drX/tajjnmmOy555555plncuedd9bfbvz48bn44oszceLEzJ8/P7/61a+SJJMmTcqpp56a73//+5k4cWK+9rWvZdiwYZk3b17mzZuX448/PoMGDcrjjz+efv365f77718hjy0AsPT0OHocAJafEBFYxLvvvpu111471dXVK2R71dXVmTx5cmbOnJnWrVtn2223XeLYW265JUcffXS6du2a6urqDBs2LP/6178aHKk/+uijs9Zaa6VVq1ZL3M7666+fTTbZJH/5y19yxx13LHKE/tlnn83MmTNzwgknpKamJhtuuGEOPPDAwqY9Sfbdd99ssskmadWqVfr165d//etfSZJ77rknu+yyS77yla+kRYsWOfLII/PRRx/lmWeeyd/+9rfMnz8/hx9+eFq0aJF+/fplq622+vQHDgBYofQ4S6bHAeDTrJh3T2CVstZaa+Wdd97JggULVkiTfeGFF+byyy/Pnnvumc6dO+eEE07Ibrvtttixb775Zi666KIMHz68flldXV2mTZtWf72fjh07LtV+Bw8enDvuuCPPPPNMRo0alVdffbV+3RtvvJHp06enZ8+e9ctqa2sb/Lw47du3r//3aqutljlz5iRJpk+fnk6dOtWvq6ysTMeOHTNt2rRUVVWlQ4cOqaioqF//n2MBgNLQ4yyZHgeATyNEBBax3XbbpWXLlpkwYUL69ev3qeNXW221fPTRR/U/19bWNriOTpcuXfLTn/40CxcuzP3335+TTjopjz32WIOG8xMdO3bMsGHDGlyj578t7naLs8cee+SCCy5Ijx49ssEGGzRosDt27JjOnTsv8ZSbpd3HJ9Zbb70GFzmvq6vLlClT6hvradOmpa6urn67b775ZjbccMNl2gcA8NnocfQ4ACw/pzMDi2jTpk1OOumkXHDBBZkwYUI+/PDDzJ8/P3/605/yP//zP4uM32STTTJ37tz88Y9/zPz58/OLX/wi8+bNq18/bty4zJw5M5WVlWnbtm2SpKqqKuuss04qKyvz2muv1Y/9+te/nmuuuSb//ve/k3x8AfR77713ue7H6quvnpEjR+bCCy9cZN3WW2+dNdZYI9dcc00++uij1NbW5sUXX8zf//73JEm7du3yxhtvZOHChUu1rz333DN/+tOfGlxHqKamJtttt1223XbbVFdX58Ybb8yCBQty//3359lnn12u+wQALD89jh4HgOXnk4jAYh1xxBFp165drrzyypx22mlp3bp1evTokWHDhi0ytk2bNjn33HNz9tlnp7a2NkcddVTWX3/9+vV//vOf8+Mf/zgfffRROnXqlJ/97Gdp2bJlkmTYsGE5+OCDs2DBgvzyl79Mnz59Mnv27Jxyyil544030qZNm+y00071FypfVku6Lk9VVVV+8YtfZPjw4dl9990zb968bLLJJvnOd76TJOnXr1/uvPPO7LDDDuncuXODb0FcnE033TQ/+clP8sMf/jDTpk1L9+7dc9VVV6WmpiZJMmLEiPzgBz/IpZdeml122WWFXdAdAFg2ehw9DgDLp6Kurq6uqYsAAAAAAMqX05kBAAAAgEJCRAAAAACgkBARAAAAACgkRAQAAAAACgkRAQAAAIBCQkQAAAAAoJAQEQAAAAAoJEQEAAAAAAoJEQEAAACAQv8foZDrZY/FY6EAAAAASUVORK5CYII=\n",
"text/plain": [
"<Figure size 1152x576 with 2 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plot_scores(pd.concat([coil_raw_results_long, coil_pca_results_long]))"
]
},
{
"cell_type": "code",
"execution_count": 38,
"id": "0db259a3",
"metadata": {},
"outputs": [],
"source": [
"umap_coil = umap.UMAP(n_neighbors=5, n_components=4, min_dist=1e-8, random_state=0, n_epochs=1000).fit_transform(raw_coil)"
]
},
{
"cell_type": "code",
"execution_count": 39,
"id": "721dcf40",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"CPU times: user 1.63 s, sys: 33.2 ms, total: 1.66 s\n",
"Wall time: 289 ms\n"
]
}
],
"source": [
"%%time\n",
"km_umap_labels = cluster.KMeans(n_clusters=20).fit_predict(umap_coil)\n",
"cl_umap_labels = cluster.AgglomerativeClustering(n_clusters=20, linkage=\"complete\").fit_predict(umap_coil)\n",
"sl_umap_labels = cluster.AgglomerativeClustering(n_clusters=80, linkage=\"single\").fit_predict(umap_coil)\n",
"db_umap_labels = cluster.DBSCAN(eps=0.3).fit_predict(umap_coil)\n",
"hd_umap_labels = hdbscan.HDBSCAN(min_samples=3, min_cluster_size=20).fit_predict(umap_coil)"
]
},
{
"cell_type": "code",
"execution_count": 40,
"id": "a4e31e4b",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"ARI: 0.8525\n",
"AMI: 0.9277\n",
"Silhouette: 0.1542\n",
"ARI: 0.8457\n",
"AMI: 0.9323\n",
"Silhouette: 0.1610\n",
"ARI: 0.6828\n",
"AMI: 0.8499\n",
"Silhouette: 0.0755\n",
"Pct clustered: 95.90%\n",
"ARI: 0.7788\n",
"AMI: 0.9059\n",
"Silhouette: 0.0539\n",
"Pct clustered: 98.82%\n",
"ARI: 0.8058\n",
"AMI: 0.9403\n",
"Silhouette: 0.0865\n",
"Pct clustered: 99.24%\n"
]
}
],
"source": [
"coil_umap_results = pd.DataFrame(\n",
" [\n",
" eval_clusters(km_umap_labels, coil_20_target, raw_coil, cluster_method=\"K-Means\"),\n",
" eval_clusters(cl_umap_labels, coil_20_target, raw_coil, cluster_method=\"Complete\\nLinkage\"),\n",
" eval_clusters(sl_umap_labels, coil_20_target, raw_coil, cluster_method=\"Single\\nLinkage\"),\n",
" eval_clusters(db_umap_labels, coil_20_target, raw_coil, cluster_method=\"DBSCAN\"),\n",
" eval_clusters(hd_umap_labels, coil_20_target, raw_coil, cluster_method=\"HDBSCAN\"),\n",
" ]\n",
")\n",
"coil_umap_results_long = coil_umap_results.melt([\"Method\", \"Pct Clustered\"], var_name=\"Score Type\", value_name=\"Score\")\n",
"coil_umap_results_long[\"Dim Reduction\"] = \"UMAP\""
]
},
{
"cell_type": "code",
"execution_count": 41,
"id": "fc8270f3",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAABREAAAI0CAYAAACKxG4UAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAAsTAAALEwEAmpwYAABaJUlEQVR4nO3deZiVdd0/8PcsDCiCCyJCLigmEmoulGZWSiAoILgnaWWK4lpqpWa5lRpPj7lgrplLWCoii0BlpGkaai6VPqb2uKGCoCDKojAM8/vDx/lFwC0g58wwvF7X5XU55/6e+/s5852Z8+F97qWivr6+PgAAAAAAy1HZ2AUAAAAAAE2bEBEAAAAAKCREBAAAAAAKCREBAAAAgEJCRAAAAACgkBARAAAAACgkRAQAAAAACgkRgSbr6quvTteuXdO1a9e8+OKLyxxz1113NYz58L/tt98+e++9d04//fQ8++yzy3ze8OHD07Vr1wwfPryULwEAYAkr298cccQRy93Xa6+9lu22265h7H9a3uMAsCqEiECTVF9fnzvvvDMVFRVJkpEjRxaO32677XLSSSflpJNOyle/+tVsvPHGGT9+fA455JA8/vjj5SgZAKDQyvY31dXV+etf/7rcsHHkyJGpr69PdXX1aq8VAP6TEBFokh588MG89tprOeCAA7Lxxhtn9OjRWbhw4XLHd+vWLSeffHJOPvnknHXWWRk5cmQOO+ywLFy4MJdddln5CgcAWI6V7W/22muvJMsOG+vq6nLXXXdlhx12SLt27UpVMgA0ECICTdKHzfIhhxySAQMG5O23386kSZNWah8HH3xwkuTpp59e7fUBAKysle1vttlmm+y8884ZM2ZMamtrl9j2pz/9KTNmzMihhx5a0poB4ENCRKDJeeutt3Lvvfemc+fO2WWXXXLggQcmSW6//fZV2p9TfACAxraq/c0hhxySWbNm5Y9//OMSj48cOTLrrrtu9ttvv5LVDAD/TogINDl33XVXamtrG5rrbbfdNt27d88jjzySV155ZYX3c8cddyRJdt1115LUCQCwola1v9lvv/2y3nrrLXFK8/Tp0/PAAw+kX79+WW+99UpeOwAkQkSgiamvr8/IkSNTWVmZQYMGNTx+wAEHNGxbln/+858ZPnx4hg8fnosvvjgHHXRQRo4cmU022SRnnHFGmaoHAFjaqvY3SbLOOuukf//+eeihh/Laa68lSe68887U1dU5lRmAshIiAk3Kww8/nClTpmSPPfZIhw4dGh7v379/WrRokdGjRy91TaAkefbZZ3PllVfmyiuvzE033ZSnn346nTp1yu23356tttqqnC8BAGAJq9rffOjQQw9tuLPz4sWLM2rUqHTt2jU77rhjOcoHgCRCRKCJ+fC6QB+e6vOhDTfcMD179sxbb7211DWBkg8+yX/uuefy7LPP5qGHHsqpp56aadOmZejQoXnvvffKUjsAwLKsan/zoe7du6d79+6566678sADD+T11193FCIAZSdEBJqMWbNmNdyh8LTTTkvXrl2X+O/3v/99kv9/rcNlqaioyMYbb5yhQ4fmqKOOynPPPZfLLrusHOUDACxldfQ3yQdHI06fPj3nnntuWrVqlf3337/ktQPAv3PLUqDJ+PBUnu7du6dbt27LHHPvvffmL3/5S1599dVsvvnmhfs78cQTM2bMmNx666054ogjPnI8AMDqtrr6m/79+2fYsGF54403MmjQoLRt27aUZQPAUoSIQJPx4UXFzzvvvOVe4+eyyy7L1VdfnTvvvDOnnnpq4f7WW2+9DBkyJMOGDcuVV16ZYcOGrfaaAQCKrK7+Zr311sv111+f2bNnp3v37iWrFwCWx+nMQJPwyCOP5KWXXsq2225beJHwgw8+OBUVFRk1alQWLVr0kfsdPHhw2rdvn3HjxuV///d/V2fJAACFVnd/06NHj/Tq1SsdO3YsRbkAUEiICDQJH14H6JBDDikct9lmm2WPPfbIm2++mfvuu+8j99uqVascd9xxWbx4cS6//PLVUisAwIooVX8DAI2hor6+vr6xiwAAAAAAmi5HIgIAAAAAhYSIAAAAAEAhISIAAAAAUEiICAAAAAAUEiICAAAAAIWEiAAAAABAoerGLmB1e/vteVm8uL6xywAAyqSysiIbbti6scsoC30OAKw91qYehzVDswsRFy+u11wDAM2SPgcAgMbidGYAAAAAoJAQEQAAAAAoJEQEAAAAAAoJEQEAAACAQkJEAAAAAKCQEBEAAAAAKCREBAAAAAAKCREBAAAAgEJCRAAAAACgkBARAAAAACgkRAQAAAAACgkRAQAAAIBCQkQAAAAAoJAQEQAAAAAoJEQEAAAAAAoJEQEAAACAQmUJEYcNG5aePXuma9euef7555c5pq6u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SXbd9TNLbdtiiy2zySabZOrU1zNnzpy0adOmYdt6662XzTffYqnnbLJJhyTJnDnvNjz21FP/SJI88cTjeeaZ/1nqObNmzUpdXV1effWVbLfdp1biVX60FQoRE801ANA8PfnkkznuuOOy9dZbp1OnTrnvvvty0UUX5dprr83OOy//k2YAANYOO+zw6fTs2Sv33jspkybdk969+yxz3Lx5c5MkG2+87BubtGu3cd54443MnfufIWKbZY6vqqpKktTVLW547J133kmS3HrrLYU1z5//XuH2VbFCIaLmGgBori666KKce+656devX8NjEydOzI9//OOMGjWqESsDAKCpOOGEk/PAA3/K1Vdfmb326rnMMa1br5ckmTnzrWy22eZLbZ85860kyw8NV8R6630wxx//+EDDfOVSuSKDPmyub7vttvzsZz/LbbfdlvPOOy8//vGPS10fAEBJvfzyy9l3332XeKxPnz6ZMmVKI1UEAEBTs9lmm+eggw7J1Kmv5447blvmmG233S7JB6ca/6dXX52SGTNmpFOnTyxxFOLK2n77HZIkf/vbk6u8j1W1QiGi5hoAaK623HLLTJgwYYnHfve732XzzZf+9BgAgLXXN795bNq0aZObb74h77239OnCAwYMTJLceOMv8vbbbzc8XldXl+HDL8vixYsbxqyqgw8+LNXV1bnssksyZcorS22vra3N3/72xMeaY3lW6HTmD5vrAQMGNDymuQYAmoPvf//7GTp0aH71q1+lU6dOef311/PKK6/kmmuuaezSAABoQtZff/18/evfzJVXXr7M7Tvu+OkcccTXM2LEzRk8+JD07PnltGq1Th5++C954YX/zac/vVOOOOLrH6uGzp23ytlnn5sLLzw/hx9+SHbf/XPZYosts2jRokyf/kb+9rcns+GGG+b22+/6WPMsywqFiJprAKC52mWXXfKHP/whf/rTnzJjxozsvffe+dKXvpQNNtigsUsDAGhS3l+wKHdf8vGOpCul9xcsKvkchx56eEaNGplp06Yuc/tJJ30rXbtul5Ejb89vfzshixYtyic+sVmOO+6EDB58ZFq0aPGxa9h333755Ce3za9/PSJPPPHXPProw1lnnXWy8cbt07Pnl9Or1z4fe45lWaEQUXMNADRX06dPT6tWrTJw4P9viN95551Mnz49HTp0aMTKAACalvfmL8h78xc0dhkl9/DDyz8duKamJqNHjy98fu/efZZ7B+f/NGbMhOVuGzJkaIYMGbrMbdts88mcc875KzTH6rJC10ScPn16kmTgwIEZMmRIBg4cmIqKiobHAQDWVCeccELeeOONJR574403ctJJJzVSRQAA0PSsUIiouQYAmquXX345Xbt2XeKxrl275sUXX2ykigAAoOlZ4bsza64BgOZoo402yiuvLHlnu1deecVlWwAA4N+sUIiouQYAmquDDjooJ598cu6777787//+b+69996ccsopOeSQQxq7NAAAaDJW6MYqHzbXp556ajbffPNMmTIll19+ueYaAFjjHXvssamurs6wYcPyxhtvZNNNN80hhxySo446qrFLAwCAJmOFQkTNNQDQXFVWVuaYY47JMccc09ilAABAk7VCIaLmGgBobqZOnZrKyspsuummSZL33nsv11xzTZ5//vnsvPPOOfroo1NVVdXIVQIAQNNQeE3EqVOnLnFX5vfeey+XXnppjj/++Fx33XWpq6sreYEAAKVw9tln56mnnmr4+oILLsiECRPSuXPnjBo1KpdffnkjVgcAAE1LYYiouQYAmqtnn302n//855Mk8+fPz8SJE3PZZZfljDPOyFVXXZUJEyY0coUAANB0FIaImmsAoLmqra3NuuuumyR56qmn0rp162y//fZJki5duuTtt99uzPIAAKBJKQwRNdcAQHO12Wab5ZFHHkmS3Hvvvdltt90ats2aNSvrrLNOY5UGAABNTuGNVT5srnfbbTfNNQDQrJx00kk58cQTs/nmm+fFF1/Mr371q4Ztf/zjH7PDDjs0YnUAANC0FIaImmsAoLnq1atX7rrrrvzzn//Mpz71qWy++eYN27beeuvstNNOjVccAAA0MYUhouYaAGjOtthii2yxxRZLPb7rrrs2QjUAAE1b29bVqapp2dhlLFfdwgV5d96ixi6j2SoMERPNNQAAAABJVU3LvHjhQY1dxnJtffaoZDWEiLvvvssSX1dWVqZNm7bZZpttMmDAoPTtu98yn/fyyy/lzjvvyBNPPJbp06dnwYL3s8EGG2TbbbfLXnv1TJ8++6Zly2WHsDfe+Itce+1VSZLbb78rW27Z+WO/jtXtI0NEAAAAAFjbHH30sUmSRYsWZcqUV/LAA3/K448/lmef/We+/e3Tlxh7ww3X5YYbrsvixYuz/fY7ZL/9+mfdddfJrFmz8sQTj+eiiy7IXXeNzE033brUPPX19bn77rGpqKhIfX19xo4dnVNOObUsr3FlCBEBAAAA4D8MGTJ0ia//+tdHcsopJ+T223+dQw89PJ06dUqS3HTTDbn++mvSocOmufDCYdl++6XvIfLggw/k178escx5HnlkcqZOfT39+g3I5Ml/ycSJd+f4409KixYtVv+L+hgqG7sAAAAAAGjqPvOZ3bLllp1TX1+ff/7zf5IkU6dOzS9+cW2qq6vzs59dscwAMUn23POLueyyK5e5bezY0UmSgQMPTJ8++2b27Nn505/uLc2L+BgciQgArJUGDx6cioqKwjG33rr06SYAAKy96uvrk6Shj5wwYWwWLVqU3r37pEuXbQqfW1NTs9RjM2fOzJ//fH+22GLL7Ljjp9O6dev85jcjMnbsXendu8/qfwEfQ2GIqLkGAJqrQw45pLFLAABgDfLoo49kypRXUlFRkW7dPpUk+fvf/5Yk6dHjs6u0zwkTxmXRokXp129AkqRLl23Stet2efzxx/Lqq1Oy+eZL3+y4sRSGiJprAKC5OuCAAxq7BAAAmrDrr78myZI3Vqmvr89XvvLVdOz4wfUQ33rrrSTJJptsstL7r6+vz7hxo1NZWZl99+3f8Hi/fvvnuef+K+PGjcmJJ56yGl7J6lEYIn5Uc11bW7taiwEAKJcxY8Z85JhBgwaVvA4AAJqmG264LskHpy63adMmn/70zhkwYGD23bdfw5j/PL15ZTz22KN57bXXsvvun1sihOzTp2+GD780EybcneOOOz7V1U3jBiurdE3EhQsX5rbbbssNN9yQ+++/f3XXBABQcmeeeWa23HLLbLzxxg3N37+rqKgQIgIArMUefviJjxzTvn37vPLKy5kxY8ZK73/MmLuSfHDk4b9bf/0NsueeX8x99/0xDzxwf3r27LXS+y6FwhDxxRdfzNlnn51nn302nTt3zrBhw/LSSy/lxz/+cTp06JAzzjijXHUCAKxWRx55ZH7/+9+ndevWGTRoUHr16rXMi10DAMDyfPrTO+Wxx/6axx57NPvvP2iFn/f222/ngQf+lCT54Q/Pyg9/eNYyx40Zc9eaESJeeOGF6dy5c4YOHZrx48fnhBNOSKtWrTJs2LDsscce5aoRAGC1O/vss3PmmWfmz3/+c8aMGZOLLrooe+21VwYNGpQePXo0dnkAAKwB+vUbmJtvvjH33ffHvPTSi9lqq62XO3bhwoUNH1pPnHh3amtrs9123fLJT3Zd5vgHH7w/f/3rI5k69fV06vSJktS/MgpDxKeffjp//vOfU1NTk8985jPZddddc99992XTTTctV30AACVTVVWVvfbaK3vttVfmzp2bq666Kl/72tfyy1/+MrvvvntjlwcAQBPXqVOnHHPMcbnmmp/ntNNOyUUX/VfDnZv/3eTJD2XEiJvz859/cJ3FcePGJEm++92z0r379svc97XXXpUbb/xFxo4dneOPP6lkr2FFFYaItbW1DQnpuuuumzZt2ggQAYBmZc6cOZkwYULGjBmTWbNm5YQTTki3bt0auywAANYQ3/jG0amrq8sNN1yXo446Ijvs8Ol06/aprLPOOpk1a1b+9rcn8uqrUxrCxccffyyvvPJyunTZZrkBYpIMGDAoN910QyZMGJchQ4amunqVbm2y2hTOvnDhwlx++eUNX7///vtLfJ0k3/rWt0pTGQBACd13330ZPXp0nnjiifTs2TPf/e53s+uuuzZ2WQAATVbdwgXZ+uxRjV3GctUtXNBocx999LHp2bNXRo0amSeeeCzjx4/LwoULsv76G+STn9w2Rx75jfTtu1+SZOzY0UmS/fc/oHCfnTp1ymc+s1seffThPPjgA9lrr54lfx1FCkPEAQMG5I033mj4ul+/fkt8DQCwpjr++OOz1VZbZcCAAWnVqlUefPDBPPjgg0uM8WEpAMD/9+68Rcm8RY1dRsmtyF2Zl2WrrbbOd77z0TchvuCCC3PBBReu0D6vuOKqVaqlFApDxIsvvrjwyYsXL16txQAAlMugQYNSUVGR2bNnN3YpAADQ5K3SydTPPfdcxowZk7vvvnupT+wBANYEP/nJTwq3+7AUAAD+vxUOEWfNmpW77747Y8aMybPPPptdd901Z599dilrAwAoOx+WAgDA0j7y7sz33ntvRo8enQcffDBbbLFF+vXrl6lTp+byyy9Pu3btylUnAEDJ+LAUAACKFYaIn//851NRUZEDDzwwJ598crp3754k+c1vflOW4gAASsWHpQAAsOIKQ8SuXbvm8ccfz9///vdsueWW2WyzzbL++uuXqzYAgJLxYSkAAKy4yqKNv/rVr/KHP/whn//85/PLX/4yn//85zN06NDMnz8/ixY1/1t6AwDNV9euXTNnzpz8/e9/z1NPPZV33nmnsUsCAIAmqzBETJJPfOITOfHEE3PPPffkpptuSvv27VNZWZn9998///Vf/1WOGgEAVjsflgIAwIr7yBDx3/Xo0SM/+tGP8tBDD+WHP/xhnn/++VLVBQBQcj4sBQCAFVN4TcTladmyZfr375/+/fuv7noAABpFjx490qNHj/zgBz/IH/7wh4wZM6axSwIAgCZjlUJEAIDmyoelAACwtJU6nRkAAAAAWPsIEQEAAACAQk5nBgAAAOAjrbtei7RsUdPYZSzXgtqFmT+3trHLaLaEiAAAAAB8pJYtanLo7cc3dhnLdcdhV2d+Pl6I+Pjjj+XEE4/Nzjvvmquvvn6ZY6ZOnZoDD+yfTTftmDFjJiRJxo8flx//+Lwkyc4775Krr/7Fcp970EEDUl9fnyR5+OEnllvLjTf+Itdee1WS5Pbb78qWW3Ze5rh/n/tDLVq0yMYbt8/OO++aI4/8erbaauvlzrOinM4MAAAAAKtBVVV1nnzyibzyysvL3D5u3OjU19enqqr4uL76+vrcfffYVFRUJEnGjh39kXN/8pPb5uijj83RRx+bgw46JG3atMnEiXfnG984Ik8//Y+Vfi3/SYgIAAAAAKvBnnt+IckHYeF/qqury4QJ4/KpT3XPRhttVLifRx6ZnKlTX89++/XPRhu1y8SJd6e2tvgoy09+smuGDBmaIUOG5tvf/k5uvvnX2W+/AVmw4P1cddWVq/6i/o8QEQAAAABWg6222jo77LBjJk4cn0WLlgz9Hnrowbz55pvZf/8DPnI/Hx55OHDggenTZ9/Mnj07f/rTvStVS0VFRQ466JAkyTPPPL1Sz10WISIAAAAArCYDBx6Qt99+Ow88cP8Sj48de1fWXXfd9O7dp/D5M2fOzJ//fH+22GLL7Ljjp9O///4Nz19ZH1578cPToj8OISIAAAAArCa9eu2T1q3XWyL0mzFjRh5++C/p1atPWrduXfj8CRPGZdGiRenXb0CSpEuXbdK163Z5/PHH8uqrU1a4jvr6+tx118gkSffu26/CK1mSuzMDAAAAwGrSqtU62WefvhkzZlSmTp2aTp06Zfz4samrq8vAgcWnMtfX12fcuNGprKzMvvv2b3i8X7/989xz/5Vx48bkxBNPWeZz//Wv53L99dckSebNm5snnng8zz//XFq2bJWhQ0/82K/LkYgAAAAAsBoNHHjA/91heUwWL16ccePGZJttPvmRRwQ+9tijee211/LZz+6WTTbZpOHxPn36pkWLFpkw4e6lrrX4oX/96/nccMN1ueGG63LnnXfk3Xffyb779stNN43I9tvv+LFfkyMRAQAAACBJZeUH1w6sr1+83DEfbqusXP6xedtt1y1du26X8ePHZfvtd8gbb0zL6ad/7yPnHzPmg1Og+/Xbf4nH119/g+y55xdz331/zAMP3J+ePXst9dz99huQc845/yPnWFWORAQAAACAJOut1yZJ8s477yx3zOzZs5cYuzyDBh2YN9+ckWHDLkrLlq3St2+/wvEf3IzlT0mSH/7wrOy++y5L/HfffX9M8v+DxnJzJCIAAAAAJNliiy1TU1OTKVOm5J13Zmf99TdYaszTT/8jSfLJT36ycF/77LNvrrji0syYMT377dc/bdoUh44TJ96d2trabLddt3zyk12XOebBB+/PX//6SKZOfT2dOn1ixV7UaiJEBAAAAIAkLVu2TK9efTJx4t0ZPvyynH32uamoqGjYPmPG9IwYcUuSpU85/k+tW7fOpZdemXfemZ3ttuv2kXOPGzcmSfLd75613GsnXnvtVbnxxl9k7NjROf74k1bwVa0eQkQAAAAA+D/f+tap+ec//yfjx4/LU0/9I5/97O5p3bp13nhjWh544P7Mnz8vRx75jeyyy64fua+ddtp5heZ8/PHH8sorL6dLl20Kb74yYMCg3HTTDZkwYVyGDBma6uryRXtCRAAAAAA+0oLahbnjsKsbu4zlWlC7cLXsZ/31N8gNN9ySO+74Te6//75MmHB3FixYkPXXXz8777xLDjrokOyxx56rZa4PjR07Okmy//4HFI7r1KlTPvOZ3fLoow/nwQcfyF579VytdRQRIgIAAADwkebPrc381DZ2GWWx7rrr5hvfODrf+MbRKzS+f//9079/8enN/+7uu3+3xNcXXHBhLrjgwhV67hVXXPWx5l5V7s4MAAAAABQSIgIAAAAAhYSIAAAAAEAhISIAAAAAUKhsIeJLL72Uww47LH369Mlhhx2Wl19+ebljX3zxxXz605/OsGHDylUeAMAq0eMAALA2KFuIeO6552bw4MH5/e9/n8GDB+ecc85Z5ri6urqce+656dWrV7lKAwBYZXocAADWBmUJEWfOnJlnnnkm/fv3T5L0798/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V3r06JGBAwdm4MCBOeCAAzJ58uQkSX19fa644or069cv+++/f/bbb7/ceOONDft98803873vfS9f/vKX079//wwaNCh33HHHEnN/61vfyuc+97mlfhe7du2aY445ZqnH5s2bV4pvQaNY1s/igQcemEceeSTDhw/P5z73uQwaNCh9+vTJQQcdlFtuuWWJ94uuXbtmwIABDb8nl156acO2hx9+OIccckgGDhyYfffdN1/72teyePHiJB+s280335x+/fplv/32S9++ffODH/wg7777bsPz77///nTt2jWTJk1aor4zzzwzO+ywQ6ZOnbrEYyNGjFit3xvWTPqcxqPPWbPoc8pHj9M49DjQ/FU3dgFrkzlz5uTYY49N9+7dc/bZZ6eiomKJ7dtss00mTJiQr371q0mS0aNHp3v37o1RarNx1llnZcGCBRk1alTWW2+91NbW5q677srChQvTokWLxi4vSXLLLbdkjz32SLt27Rq7lEY1Y8aMnH/++Rk9enQ6duyY+vr6PPvss0mSsWPHNnJ1zdcVV1yRbbfdNklyzz335Nhjj80NN9yQJNljjz1yxRVXJPmg8brgggvy29/+Nr/73e8yefLk3HXXXWnZsmUWLlyYKVOmJPkgQDjiiCNy4IEH5ic/+UkqKyvz7rvvZuLEiQ1zzp49O5MnT85WW22V++67L/vss88SNb344ot59NFH89nPfrYc34ImZ9CgQTnjjDOSJK+++mq++93vZsqUKfnBD37QMOa2225L69at895776Vfv37p2bNnunfvnlNOOSW33HJLtttuuyTJM8880/Bec9lll+Wvf/1rbr755my88cZZvHhxJk2alHfeeSdt27ZNkowaNSq777577rzzzvTq1WuJutq3b5/hw4fn4osvLse3gTWQPqf89DlrDn1O+elxmh49Dqz5hIhlMnPmzHzve9/L3nvvnW9961vLHHPAAQdk7Nix+epXv5p58+bliSeeyH777ZeFCxc2jLn++uvz+9//PnV1denQoUN+9KMfpX379pk8eXIuu+yyLFiwIHV1dRk6dGj69euX5INP/7fffvv87W9/y4wZM7LvvvvmO9/5TpLkyiuvzPjx49OyZctUVFTklltuafhDu6Z7+eWXM2nSpNx///1Zb731kiQtWrTIYYcdlrq6ugwbNix//vOfkyRf+MIX8p3vfCdVVVU588wzU1NTk5dffjmvvvpqevfunb333jvDhw/PG2+8ka9//ev5+te/nuSDT9v69euXJ554IjNmzMjXv/71HHHEEUvVMmPGjPz4xz/O1KlTs2DBgvTr1y9Dhw7N1VdfnRkzZuSUU05Jy5Ytc8kll2SLLbbIpZdemr/+9a+pra3Ntttum/POOy+tW7cu3zevEbz11luprq7OBhtskCSpqKhIt27dknzwqeQTTzyR1q1bp2fPnhk4cGD+8pe/5M0338w3v/nNhu/5Y489lvPPPz9Jsttuu+WPf/xjrr322oYG8kPLW4+13T777JN//OMfueGGG7LXXnstsW3OnDlZf/31kyTTp0/PhhtumJqamiRJTU1NttlmmyTJ+PHjs8EGG+S4445reG7btm3zla98peHrcePG5Utf+lL23HPPjBo1aqkG++STT87Pfvaz3HbbbaV4mWuUzTffPBdeeGH233//fOtb30qbNm2W2P7ee+9l0aJFadOmTebNm5f58+dn4403btj+qU99Kkkyb9683HjjjRkzZkzD9srKyiW+92+//XYmT56c3/72t+nXr1/efPPNtG/fvmH7V77ylYwYMSL/+7//27De8CF9Tvnpc9Ys+pzGpcdpevQ4sGYSIpbJt7/97QwePHi5jXXywR/SmpqavPDCC/nb3/6WXr16pbq6uqG5Hjt2bKZMmZI77rgjlZWV+fWvf52f/OQnueSSS/KpT30qv/71r1NVVZW33norBx54YPbcc8+GN8Rp06bl1ltvzbx589KrV68cfPDB2XDDDXPDDTdk8uTJadWqVebOnZtWrVqV5ftRDs8880y23HLLhu/Bv7v99tvzz3/+M3fddVeSZMiQIbn99tszePDgJMm//vWv3Hzzzamrq0vPnj0zZ86cjBgxIm+++Wb69u2bgw8+uKHZfeutt3LrrbfmrbfeyqBBg9KjR4+GT8g+dMYZZ+SEE07IZz7zmSxcuDDf+MY3ssMOO+T444/PyJEjl/ik9KqrrkqbNm1y5513Jkl++tOf5rrrrsupp55asu9VU7Dddttlxx13zF577ZXddtstu+yySwYOHJgNN9xwqbHvv/9+br/99rz22msZMGBADjjggLRo0SKnnXZafvazn6VHjx75wx/+kF/96lfLnGt56/H5z3++1C+zyfv0pz+de++9N3vttVf+8pe/ZODAgZk/f35mzZqVa6+9Nkmy33775Te/+U322Wef9OjRI7vvvnv69euX6urq/M///E923HHHwjnuuuuunHHGGdl5551z0UUXZfr06enQoUPD9n322Se33nprJk2atNQnxc3Fh/+g/tDLL7+83LFdunRJq1at8tJLLzV8bz/8B8srr7ySww8/PFtvvXWS5NBDD80+++yTz372s9lll10yYMCAdOzYMS+88EJqamoaxi3L2LFjs/fee2fjjTdO7969M2bMmAwZMqRh+7rrrpvjjjsul156aX7+859/nJdPM6TPKT99zppFn9P49DjloceB5k2IWCZf+tKXMnHixBx++OHZZJNNljtu0KBBGT16dP7+97/nhz/8YX7/+983bLv33nvz9NNP54ADDkiS1NXVNXzyPGvWrHz/+9/PK6+8kqqqqrzzzjt56aWXstNOOyVJ+vbtm8rKyrRp0yZdunTJlClTsvnmm2errbbKd7/73XzhC1/IXnvt1bC/5m7y5Mk54IADGj5lPPDAAzNp0qSG5rpXr14N27baaqt86UtfSmVlZTp06JC2bdvmjTfeSJcuXZIkBx98cJJk4403zl577ZVHH310ieZ6/vz5efTRRzNr1qyGx+bNm5cXXnhhmc3cvffem7lz5zas/cKFC5dq1pujysrKXHXVVXn++efz17/+NZMmTcoNN9yQu+++e6mx++23X5Jks802a1iP2tratGrVKj169EiS9O7de5lHm6zseqxt6uvrG/7/30/1eeSRR3Laaafl97//fTbZZJNMmDAhf/vb3/L444/nmmuuybhx43LDDTcs8fxleeaZZ/Luu+9m9913T0VFRXr37p2xY8fm2GOPXWLc6aefngsvvDA9e/Zc/S+yCfj3f1AnH/wNWhkfnurz7rvv5utf/3rDP0bOOeecHHXUUXn44YfzwAMP5Nprr82oUaM+cl2SD/7hc9ZZZyX54Iixs88+e4kGO/mggb/xxhvz97//faXqpfnT5zQt+pymR5/T+PQ45aHHgeZNiFgmxxxzTO67774ceeSRGTp0aG666aYkyYABA5a4wO6+++6bfv36ZeONN8622267RHNdX1+f448/vqGZ+3fnnXdeevbsmSuvvDIVFRXp06dPFixY0LD93z8NqqqqSl1dXaqqqnLHHXfkiSeeyMMPP5wDDzwwv/jFL5pNI/epT30qr7zySt55552lPqWvr69f6lpN//71f36/lvX9W5Zl7Xfx4sWpqKjInXfeuULXJ6qvr8+5556bz33ucx85tjnadttts+222+arX/1q9ttvvzz66KNLjVneevzn935ZVnY91jZPPfVUPvnJTy71+G677ZZFixblX//6V3bcccdUV1enR48e6dGjRw466KB8/vOfz+zZs7P99ttn1KhRy93/nXfemXfffTdf/vKXk3zwj8fWrVsv1WB/7nOfy8Ybb5xx48at3he4BnrxxRfz/vvvL/MT9rZt22aPPfbIQw891HBEw+abb57NN988hxxySMN7z6GHHpoFCxbkpZdeylZbbbXUfp566qm88MILOfvssxsemzFjRp544onssssuDY+1aNEiJ598ci655JJ06tSpBK+WNZU+p/z0OWsmfU7j0eM0PXocWPO4O3MZHXfccTnggANyzTXX5Prrr8/YsWOXukNX69at873vfa/hgrP/rmfPnvn1r3+dd955J8kHb0wfXpB5zpw5+cQnPpGKioo89NBDeeWVVz6ynrlz52bWrFn57Gc/m1NOOSXbbrtt/vWvf62GV9o0dO7cOT179sw555yTuXPnJvngqIabb745u+22W0aPHp3a2trU1tZmzJgxq9zMjh49OskHR0k88MADS10oeb311suuu+6a6667ruGxadOm5c0330zywZrPmTOnYVvPnj1z0003Ndylb+7cuXnhhRdWqbY1yfTp0/Pkk082fP3GG29k1qxZ2WyzzVbo+VtvvXXmz5+fxx9/PEkyadKkJe7I9qGPWo+12aRJk/Kb3/wmRx111FLbnnvuucybNy+bbbZZnn766bz22msN2/7nf/4n66+/ftq2bZt+/fpl1qxZ+cUvftHwyfC7776bm2++OQsXLsyECRNy55135t577829996bBx98MBUVFXnssceWmvP000/P8OHDS/eC1wCvvfZazj777Bx++OHLPIJq4cKFefLJJ9O5c+fMmzcvDz744BLf99deey2bbbZZWrdunW984xs555xzGu6SWl9fn3HjxmXKlCkZNWpUjjnmmIZ1uffee3PyyScv8x9LAwYMyOzZs5f5D1/Wbvqc8tLnrFn0OY1Lj9P06HFgzeRIxDIbOnRo6uvrc+SRR+aWW25Z4hoZH/rwFIb/NGjQoMyePbvh4sr19fU5/PDDs9122+X000/P+eefn+uvvz5du3ZN165dP7KWuXPn5uSTT87777+f+vr6fOpTn1rq4r9rup/85Cf5+c9/noMOOigtWrTI4sWL86UvfSmnnnpqXn/99YZTpvbcc88ceuihqzRHx44dM3jw4Lz55ps57rjjlvm9/+///u9cfPHFGTBgQJIPGuoLL7ww7du3z9e+9rV8//vfT6tWrXLJJZfk2GOPzZVXXpmDDz44FRUVqaioyEknndRwWlFztWjRogwfPjyvv/56WrVqlcWLF+fb3/52w0WTP0pNTU0uueSSnHfeeWnVqlV23333bLzxxktdpDkpXo+1zSmnnJKampq899576dKlS6677rrstNNOefHFFxuuF1RfX5/6+vpcfPHF2WijjfI///M/Of/88zN37tzU1NRknXXWyc9//vNUVlZm3XXXza9+9av89Kc/zZe//OW0bt061dXVGTx4cCZNmpQtttginTt3XqKG/v37Z9SoUQ2naH1ohx12SPfu3Zdo5tcGY8aMyeTJk/Pee+9lvfXWy4ABA3LkkUcuMeYrX/lKKisrs2DBgnz2s5/N4YcfnoULF+bWW2/Nj370o7Rs2TJ1dXUZMGBAevfunSQ57bTTctNNNzXsq76+Pj169MjnPve5TJw4Mb/5zW+WmKN///7Zf//9l/jkPvnglLxTTz11rb9IP8umzykvfc6aQ59TfnqcpkePA2u+ivoVuYgAsEw9e/bMNddcs9Rd8Wgcc+fObfgk8+GHH86ZZ56Ze++9N5WVDroGgJWlz2la9DkANDZHIgLNxj333JObbrop9fX1DZ/Ya6wBgOZAnwNAY3MkIgAAAABQyEdXrHV69uyZ559/fonHhgwZkilTpnzkc4888sjcd999pSptrWIdAGD18t7adFgLAJojpzNDkuuvv76xSyDWAQBWN++tTYe1AGBN50hEyJKfFh955JEZNmxYDj/88Hz5y1/Of//3fy/zORMmTMhBBx2UN954I3fffXcOOeSQDBo0KIMGDcrkyZMbxj322GMZMGBABgwYkB//+MfZe++9G+Z68cUXc8wxx+Sggw7K/vvvn1GjRpX+xTZh1gEAVi/vrU2HtQBgTedIRFiGadOm5dZbb828efPSq1evHHzwwencuXPD9uuvvz4PPfRQbrrpprRp0yZ77rln+vfvn4qKirz44ov5xje+kQceeCALFy7Maaedlp/97Gfp0aNH/vCHP+RXv/pVkmTRokX5zne+k5/+9Kfp0qVL5s6dm4MOOig77bRTunTp0kivvGmxDgCwenlvbTqsBQBrGiEiLEPfvn1TWVmZNm3apEuXLpkyZUpDUzd8+PB06tQp1113XWpqapIkr776ak4//fRMnz491dXVeeutt/Lmm29m5syZadWqVXr06JEk6d27d9q2bZskefnll/PCCy/ktNNOa5i3trY2L774oqbu/1gHAFi9vLc2HdYCgDWNEBGWoWXLlg3/X1VVlbq6uoavd9pppzz00EOZOnVqQ6N32mmn5cwzz0yvXr2yePHifPrTn86CBQuSJBUVFcuco76+PhtuuGHGjh1buheyhrMOALB6eW9tOqwFAGsa10SElfSFL3wh5513Xo499tj861//SpLMmTMnm222WZLkzjvvzMKFC5MkW2+9debPn5/HH388STJp0qS8++67SZKtttoqrVq1ypgxYxr2/cILL2Tu3LllfDVrLusAAKuX99amw1oA0BQ5EpG10lFHHZWqqqqGr+fNm7dSz//c5z6Xiy++OMcff3wuv/zynHXWWTnhhBPSoUOHfPazn80GG2yQJKmpqckll1yS8847L61atcruu++ejTfeOG3atEl1dXWuueaaXHTRRbnhhhuyePHitGvXLpdddtlqfKVNm3UAgNXLe2vTYS0AaG4q6uvr6xu7CGjO5s6dm/XWWy9J8vDDD+fMM8/Mvffem8pKBwKXk3UAgNXLe2vTYS0AKAdHIkKJ3XPPPbnppptSX1/f8Emxhq78rAMArF7eW5sOawFAOTgSEQAAAAAo5OMpAAAAAKCQEBEAAAAAKCREBAAAAAAKCRGBVTJ8+PB85zvfaewyyurII4/MyJEjV8u+zjzzzFx66aWrZV8AwOqjx/l49DgAzZcQEViuu+++OwceeGB23nnn7LnnnjnmmGPy2GOPrbb9v/baa+natWsWLVq02vd5wAEHLPH4rFmzsv3226dnz54rtJ+18R8QALC20OPocQBYeUJEYJluvPHGXHTRRRk6dGgeeuih3HfffRk8eHD++Mc/NnZpDYoa8/nz5+f5559v+Hr8+PH5xCc+UY6yAIAmTI8DAKtGiAgsZc6cObniiityzjnnZJ999sm6666bFi1apGfPnjnjjDOWGv/II4/ki1/84hKP9ezZM3/5y1+SJP/4xz9y4IEHZpdddskee+yRiy++OElyxBFHJEk+85nPZOedd86TTz6ZJLnzzjuz77775jOf+UyOPvrovP766w377dq1a2699dbss88+2WeffZb7GgYOHJjRo0c3fD1mzJgMGjRoiTHTp0/PySefnN133z09e/bMLbfckiR54IEHcu211+a3v/1tdt555+y///4Nz3n99dfzla98JTvvvHO++c1vZtasWQ3b/vjHP6Zfv37p0aNHjjzyyLzwwgsN25555pkccMAB2XnnnfPtb387CxYsWG7tAEBp6HH0OACsOiEisJQnn3wyCxYsSO/evVfL/i688MJ87WtfyxNPPJE//OEP2XfffZMkI0aMSJL89a9/zZNPPpmdd945kyZNyrXXXpsrr7wykydPzq677prTTz99if1NmjQpd9xxRyZOnLjcOffff/9MnDgxdXV1eeGFFzJv3rx8+tOfbti+ePHiHH/88enatWseeOCB3Hzzzbn55pvz5z//OV/84hdz3HHHZd99982TTz6ZcePGNTxv/PjxufjiizN58uTU1tbml7/8ZZLkpZdeyumnn57vf//7mTx5cr74xS9m6NChWbhwYRYuXJgTTzwxAwcOzKOPPpq+ffvmnnvuWS3fWwBgxelx9DgArDohIrCU2bNnZ8MNN0x1dfVq2V91dXWmTJmSWbNmpXXr1tlpp52WO/a2227Lsccemy5duqS6ujpDhw7NP//5zyU+qT/22GOzwQYbpFWrVsvdz6abbpqtttoqf/nLXzJ69OilPqF/6qmnMmvWrJx00kmpqanJ5ptvnkMPPbSwaU+SAw88MFtttVVatWqVvn375p///GeSZOLEifnSl76Uz3/+82nRokWOPvrovP/++3nyySfz97//PbW1tfn617+eFi1apG/fvtlhhx0++hsHAKxWepzl0+MA8FFWz7sn0KxssMEGefvtt7No0aLV0mRfeOGFueKKK7Lvvvtms802y0knnZS99957mWOnTp2aiy66KMOGDWt4rL6+PtOnT2+43k/Hjh1XaN5BgwZl9OjRefLJJzNixIi88sorDdtef/31zJgxIz169Gh4rK6ubomvl6V9+/YN/7/OOutk/vz5SZIZM2akU6dODdsqKyvTsWPHTJ8+PVVVVenQoUMqKioatv/7WACgPPQ4y6fHAeCjCBGBpey8885p2bJlJk2alL59+37k+HXWWSfvv/9+w9d1dXVLXEenc+fO+dnPfpbFixfnnnvuySmnnJJHHnlkiYbzQx07dszQoUOXuEbPf1rW85Zln332yQUXXJDu3bvnE5/4xBINdseOHbPZZpst95SbFZ3jQ5tssskSFzmvr6/PtGnTGhrr6dOnp76+vmG/U6dOzeabb75ScwAAH48eR48DwKpzOjOwlDZt2uSUU07JBRdckEmTJuW9995LbW1t7r///vzXf/3XUuO32mqrLFiwIH/6059SW1ubq6++OgsXLmzYPnbs2MyaNSuVlZVp27ZtkqSqqiobbbRRKisr8+qrrzaM/cpXvpLrrrsu//rXv5J8cAH03/72t6v0OtZdd93cfPPNufDCC5fatuOOO2a99dbLddddl/fffz91dXV5/vnn849//CNJ0q5du7z++utZvHjxCs2177775v7771/iOkI1NTXZeeeds9NOO6W6ujq33HJLFi1alHvuuSdPPfXUKr0mAGDV6XH0OACsOkciAst01FFHpV27drnqqqvyne98J61bt0737t0zdOjQpca2adMm5557bn7wgx+krq4uxxxzTDbddNOG7X/+85/zk5/8JO+//346deqUSy+9NC1btkySDB06NIcffngWLVqUX/ziF+ndu3fmzZuX0047La+//nratGmTPfbYo+FC5StredflqaqqytVXX51hw4bly1/+chYuXJitttoq3/72t5Mkffv2zbhx47Lbbrtls802W+IuiMuy9dZb56c//Wl+9KMfZfr06enWrVuuueaa1NTUJEmGDx+eH/7wh7nsssvypS99abVd0B0AWDl6HD0OAKumor6+vr6xiwAAAAAAmi6nMwMAAAAAhYSIAAAAAEAhISIAAAAAUEiICAAAAAAUEiICAAAAAIWEiAAAAABAISEiAAAAAFBIiAgAAAAAFBIiAgAAAACF/h+V4zJ82SyXzAAAAABJRU5ErkJggg==\n",
"text/plain": [
"<Figure size 1152x576 with 2 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plot_scores(pd.concat([coil_raw_results_long, coil_pca_results_long, coil_umap_results_long]))"
]
},
{
"cell_type": "code",
"execution_count": 42,
"id": "662783b4",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAB5kAAAI0CAYAAAAnep4gAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAAsTAAALEwEAmpwYAAB2B0lEQVR4nOzdeZyVdd0//tcsDCiCKCCC+5JIuOSSadodEoiyCO5F2qa4pt5Wpka5lFrU1zJ3MzUVS0SQXS0VNcstKbPbpW4V0GRRUFxQGIb5/eHN/CQQj8I5Z+bwfD4ePmSu63Ouz/vMNTPnfa7Xua6rqrGxsTEAAAAAAAAAUIDqchcAAAAAAAAAQMshZAYAAAAAAACgYEJmAAAAAAAAAAomZAYAAAAAAACgYEJmAAAAAAAAAAomZAYAAAAAAACgYEJmAAAAAIC1zNixY9O9e/eMHTt2ueW9e/dO7969CxoLAKy9hMxAs3bllVeme/fu6d69e55//vmVjln2Ruf9/+2www7Zd9998+1vfzvPPPPMSh936aWXpnv37rn00kuL+RQAAFbqo/Y5Rx555Adu66WXXsr222/fNPY/fdByAKCyNDQ05NZbb82RRx6ZPfbYIz179sxee+2VQYMGZfjw4bnnnnvKXWJZPfLII6s8FiRMB4DC1Za7AIAP0tjYmNtuuy1VVVVpbGzM6NGjc8YZZ3zg+O233z59+vRJkrz11luZNm1aJk2alN///vf5zW9+k912261UpQMArNJH7XNqa2vz2GOP5fnnn8/WW2+9wvrRo0ensbExtbW1WbJkSTFLBwCaqYaGhhx33HH54x//mPbt2+fzn/98Nt544yxYsCAzZ87MpEmT8vzzz+cLX/hCkqRv377Zeeeds9FGG5W5cgCgJRIyA83Wgw8+mJdeeikHH3xwHnjggdx+++057bTTUldXt9LxPXr0yMknn7zcsrPPPjujRo3KxRdfnJtuuqkUZQMAfKiP2uf06tUrd99990rD6IaGhowdOzY77rhj5s6dmzlz5pTiKQAAzcykSZPyxz/+Mdtvv31GjhyZdu3aLbf+nXfeyRNPPNH0dbt27VYYAwBQKJfLBpqt0aNHJ0kOO+ywDBo0KK+99lruvvvuj7SNQw89NEnyj3/8Y43XBwDwcX3UPmfbbbfNLrvsknHjxqW+vn65dffdd1/mzp2bww8/vKg1AwDN21//+tckyUEHHbTS8HidddbJnnvu2fT1x7009MMPP5yjjjoqu+yyS3bdddcce+yxee6551Y6du7cuTnvvPPSu3fv7LDDDtlzzz3zzW9+c6XHaZbd1uyRRx5ZYd1LL72U7t2758wzz1xh3TvvvJOrr746gwcPzqc+9anssssuOeKIIzJp0qTlxp155pn5yle+kiS57LLLlrvt2iOPPJKjjjoqZ511VpLkrLPOWm79Sy+91LSdJUuW5Oabb87hhx+eXXfdNTvvvHOGDBmSkSNHZunSpYV/IwGghXMmM9Asvfrqq7n33nuz5ZZbZtddd816662X66+/PqNGjUr//v0/8vZqa/25AwCah4/b5xx22GH53ve+l3vuuSf7779/0/LRo0dn3XXXTf/+/XPZZZeV4ikAAM1Qhw4dkiTTp08v2hz33Xdf7rnnnnzuc5/LF7/4xTz33HO5//778+STT2by5MnZcMMNm8a++OKLGTp0aObOnZs999wzAwYMyKxZs3LnnXfmvvvuy6WXXpp99913tep544038tWvfjVPPfVUevbsmUMOOSRLly7Ngw8+mG9/+9v517/+ldNOOy1Jmm6xdvvtt2ePPfbIHnvs0bSdTTbZpCmcv+eee/KFL3whPXr0aFrfvn37JEl9fX2OP/74PPjgg9lqq60ycODAtG7dOo888kh+9KMf5YknnsjPfvaz1XpOANBSSF2AZmns2LGpr6/PwQcfnCTZbrvt0rNnzzzyyCOZMWNGtthii4K2c+uttyaJ+zEDAM3Gx+1z+vfvnwsvvDCjR49uCpnnzJmTBx54IAcffHDWW2+9kj0HAKD52W+//fLrX/86t9xyS95+++307ds3PXv2zCabbLLG5rj77rtz7bXXZq+99mpadtFFF+VXv/pVxowZk2HDhjUtP/fcczN37tz893//d0444YSm5UOHDs2RRx6ZM888M/fee2/atm37seu58MIL89RTT+U73/nOcnMvWrQoJ554Yq6++ursv//+6dGjR/r06ZN27do1hcz/ecu1TTfdNElyzz33pE+fPk292vtdddVVefDBB3PkkUfme9/7XmpqapK8d/uSH/zgBxkzZkz69evXFGgDQCVzuWyg2WlsbMzo0aNTXV2dIUOGNC0/6KCDmtatzNNPP51LL700l156aX784x/nkEMOyejRo7PRRhutcO9CAIBy+Lh9TvLeJS4HDhyYP/3pT02XbLztttvS0NDgUtkAQD75yU/mpz/9aTp16pQJEybk5JNPTu/evfOZz3wmJ510Uu69997VnqN///7LBcxJmvqQJ598smnZ7Nmz8+CDD6Zbt2455phjlhu/6667ZsCAAXn99dfzhz/84WPX8tprr2XChAnZYYcdlguYk6R169Y5/fTT09jYmIkTJ37sOd5v6dKlGTlyZDp37pyzzjqrKWBOkpqampx55pmpqqpaY/MBQHPnTGag2Xn44Yczc+bM7LPPPunSpUvT8oEDB2bEiBG5/fbbc+qpp6ZVq1bLPe6ZZ57JM888s9yybt265eabb063bt1KUjsAwKp83D5nmcMPPzy33HJLbrvttpxyyikZM2ZMunfvnp122qlUTwEAaMb69++fvn375pFHHsnjjz+ep59+Oo8//njuvvvu3H333RkyZEh+8pOfpKqq6mNtf4cddlhhWdeuXZMkCxYsaFr21FNPJXnvynIr62v23HPPTJgwIU899dRyH7z7KJ588sk0NDSkqqoql1566QrrlyxZkiR5/vnnP9b2/9MLL7yQ119/PVtuuWWuvPLKlY5p06bNGpsPAJo7ITPQ7IwaNSpJVrgs0QYbbJDevXvnrrvuWuFehMl7ZwD95Cc/SWNjY+bNm5fbbrstF198cY4//viMGjUq66yzTsmeAwDAynzcPmeZnj17pmfPnhk7dmw+9alP5d///nd+8IMfFL1uAKDlaNWqVfbZZ5/ss88+Sd67lPNdd92V4cOHZ9y4cenbt+/HvpzzsnsTv19t7XuHmJcuXdq07M0330ySdO7ceaXbWbZ82biP4/XXX0/yXtj8/rOo/9Pbb7/9sedY2XzTp0/PZZddVvT5AKC5EzIDzcr8+fNz9913J0m+9a1v5Vvf+tZKx916660fePC1qqoqnTp1yvHHH58FCxbkuuuuy8UXX5yzzjqraHUDAHyYNdHnJO+dzXzOOefknHPOSZs2bXLggQcWpV4AoDLU1NSkf//++ec//5krr7wyDz/8cNHvGdyuXbskyauvvrrS9a+88kqSZL311mtatuzs6oaGhhXGryyMXjbH1772tZIc81k2X9++fVcZMgPA2kLIDDQrt99+e+rr69OzZ8/06NFjpWPuvffe/PnPf86LL76YzTbbbJXbO+mkkzJu3LjcfPPNOfLIIz90PABAsaypPmfZpbVnz56dIUOGrPSMIgCA/9S2bdskSWNjY9Hn+uQnP5kkefzxx7NkyZKms52XeeSRR5K8d5WWZdZff/0kyaxZs1bY3j/+8Y8Vlu20006prq7OX/7yl4LrWnYf5ZUF2UlSXV39geu33nrrtG/fPn/7299SX1//gbc3AYC1hZAZaFZGjx6dJDn33HM/8N6CF198ca688srcdtttOe2001a5vfXWWy/Dhg3LiBEjctlll2XEiBFrvGYAgEKsqT5nvfXWyzXXXJPXX399uQOzAMDabdKkSdlggw2y1157NYWly7zyyitNvcjuu+9e9Fo23njj7L333vnTn/6UG264IUcffXTTuieeeCKTJk3K+uuvv9wZ1cv6o7Fjx2bw4MFNwfSsWbNy+eWXrzBHx44dM2jQoIwfPz6XX355jjvuuBXC7JkzZ6aqqqrpw3sdOnRo2ubKbLDBBh+4vra2NkceeWSuuOKKnH/++TnrrLPSpk2b5cbMnTs3b7zxRrbddttVfn8AoBIImYFm45FHHskLL7yQ7bbb7gMPvCbJoYcemquuuipjxozJySef/KHbHTp0aK677rpMmDAhw4YN0+gDACW3pvucUhwcBgBalieeeCI33nhjOnfunF133TWbbrppkuSll17K/fffn3fffTdf+MIXVnlbjjXpvPPOy5e+9KX89Kc/zZ/+9KfssMMOmTVrVu68885UV1fnwgsvXO5y2TvvvHM+/elP57HHHsthhx2WPffcM6+++mqmTp2affbZZ6XB79lnn50ZM2bkkksuyYQJE7LrrrumU6dOmTt3bp577rk8+eST+fnPf94UMm+11Vbp0qVLJk+enFatWqVr166pqqrK4MGDs8kmm+RTn/pU1llnndxwww1ZsGBBOnbsmCQ56qij0q5du5x44ol55plncsstt2Tq1KnZc88906VLl8ybNy8zZszItGnTctpppzn2BMBaQcgMNBu33nprkuSwww5b5bhNN900n/3sZ/OnP/0pU6dO/dDttmnTJscdd1zOP//8/PKXv8yll166RuoFAChUsfocAIBlvvGNb2TLLbfMn//85zz77LN58MEHs3jx4nTo0CF77LFHBg4cmEGDBjXd+7jYNttss4wZMyZXXHFFHnjggTz66KNp27ZtPve5z+X4449f6Qfvrrjiivz0pz/NPffck5tu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zJiRq666qtylAQAAAADNzPrrr5+vfvUbueyyX650/U477Zwjj/xqRo68IUOHHpbevb+QNm3WycMP/znPPfe/2XnnT+XII7+6WjVsueVWGT78nFxwwXn50pcOy5577pXNN98iS5YsyZw5s/O3v/01G2ywQUaNGrta86xMQSGzg64AQKXbdddd84c//CH33Xdf5s6dm3333Tef//zn06FDh3KXBgCwxtTX1+eJJ57I3Llz079//yxcuDBJsu6665a5MgAAWpp3Fy3JxItW70zcYnp30ZKiz3H44V/KmDGjM2vWyytd/81vnpru3bfP6NGjcscdk7NkyZJsssmmOe64EzN06FFp1arVatdwwAED8olPbJff/nZkpk17LI8++nDWWWeddOrUOb17fyF9+uy32nOsTEEhs4OuAEClmzNnTtq0aZPBg///xnjBggWZM2dOunTpUsbKAADWjGeffTYnnHBC6urqMmfOnPTv3z+PPfZYbr/99lx88cXlLg8AgBbmnYWL8s7CReUuo+gefviDLzddV1eX22+ftMrH9+3bL3379itornHjJn/gumHDjs+wYcevdN22234iZ599XkFzrCkF3ZN5zpw5SZLBgwdn2LBhGTx4cKqqqpqWAwC0dCeeeGJmz5693LLZs2fnm9/8ZpkqAgBYs84999yccsopufPOO1Nb+955B5/+9Kfz+OOPl7kyAACgpSkoZHbQFQCodNOnT0/37t2XW9a9e/c8//zzZaoIAGDN+t///d+mq7ZUVVUlee8y2YsWVf7ZJwAAwJpVUMjsoCsAUOk23HDDzJgxY7llM2bMcHsQAKBibLLJJvnHP/6x3LK///3v2XzzzctUEQAA0FIVFDI76AoAVLpDDjkkJ598cqZOnZr//d//zb333ptTTjklhx12WLlLAwBYI0499dQcd9xxueSSS1JfX5+rr746p556av77v/+73KUBAAAtTG0hg5YddD3ttNOy2WabZebMmfnlL3/poCsAUDGOPfbY1NbWZsSIEZk9e3Y23njjHHbYYfn6179e7tIAANaIfffdN9dcc01Gjx6dT3/60/n3v/+dSy+9NDvssEO5SwMAAFqYgkJmB10BgEpXXV2dY445Jsccc0y5SwEAKIo77rgjBxxwQHr27Lnc8jvvvDP7779/maoCAABaooJCZgddAYBK9fLLL6e6ujobb7xxkuSdd97JVVddlX/+85/ZZZddcvTRR6empqbMVQIArL7hw4fngAMOWGH52WefLWQGAAA+klWGzA66AgCVbvjw4Rk6dGhTv/PDH/4wjz32WPr27ZsxY8bkrbfeyre+9a0yVwkA8PG9+OKLSZLGxsamf79/XV1dXTnKAgAAWrBVhswOugIAle6ZZ57J3nvvnSRZuHBhpkyZkptvvjk77LBDDj300Bx77LH6HQCgRevbt2+qqqrS2NiYvn37LreuU6dO+eY3v1mmygAAgJZqlSGzg64AQKWrr6/PuuuumyR58skn07Zt2+ywww5Jkm222SavvfZaOcsDAFhtzzzzTJLkyCOPzMiRI8tcDQAAUAmqV7XSQVcAoNJtuummeeSRR5Ik9957bz7zmc80rZs/f37WWWedcpUGALBGbb/99itdfsEFF5S4EgAAoKVbZcjsoCsAUOm++c1v5qSTTspBBx2UW265JV//+teb1t1zzz3Zcccdy1gdAMCaM3bs2JUunzBhQokrAQAAWrpVXi572UHXzTbbLM8//3xuuummpnUOugIAlaBPnz4ZO3Zsnn766Xzyk5/MZptt1rRu6623zqc+9anyFQcAsAbcdtttSZKGhoamfy/z4osvpkOHDmWoCgAAaMlWGTI76AoArA0233zzbL755iss32233cpQDQDAmjV+/Pgk790Wbdm/k6SqqiqdOnXKiBEjylUaAAAtWPu2tampa13uMj5Qw+JFeePtJeUuo2KtMmROHHQFAAAAaMmWXZnuF7/4RU477bQyVwMAQKWoqWud5y84pNxlfKCth49J1kDIvOeeuy73dXV1ddq1a59tt902gwYNyf7791/p46ZPfyG33XZrpk37S+bMmZNFi95Nhw4dst1226dXr97p1++AtG698pD++ut/nauvviJJMmrU2GyxxZar/TzWtA8NmQEAAABo+U477bS89tpruf/++/Pqq6/mmGOOyZw5c9LY2JiNN9643OUBAECzdvTRxyZJlixZkpkzZ+SBB+7L44//Jc8883T++7+/vdzYa6/9Va699ldZunRpdthhx/TvPzDrrrtO5s+fn2nTHs+FF/4wY8eOzm9+c/MK8zQ2NmbixPGpqqpKY2Njxo+/Paec0vw+LCpkBgAAAFgLPProozn55JOzww47ZNq0aTnmmGMyY8aMXHfddbnqqqvKXR4AADRrw4Ydv9zXjz32SE455cSMGvXbHH74l9KtW7ckyW9+c22uueaqdOmycS64YER22GHHFbb14IMP5Le/HbnSeR555KG8/PK/M2DAoDz00J8zZcrEnHDCN9OqVas1/6RWQ3W5CwAAAACg+C688MJcfPHFufbaa1Nb+955BzvvvHP+/ve/l7kyAABoeT796c9kiy22TGNjY55++n+SJC+//HJ+/eurU1tbm5///JKVBsxJss8+/5WLL75spevGj789STJ48MHp1++AvP7667nvvnuL8yRWgzOZAYC12tChQ1NVVbXKMTffvOJlawAAWpp///vf2WuvvZKkqf9p1apVGhoaylkWAAC0WI2NjUn+//568uTxWbJkSfr27Zdtttl2lY+tq6tbYdm8efPyxz/en8033yI77bRz2rZtm9/9bmTGjx+bvn37rfknsBpWGTI76AoAVLrDDjus3CUAAJTENttskz/+8Y/53Oc+17Tsz3/+c7bbbrsyVgUAAC3To48+kpkzZ6Sqqio9enwySfLEE39Lkuy++x4fa5uTJ0/IkiVLMmDAoCTJNttsm+7dt8/jj/8lL744M5tttvkaqX1NWGXI7KArAFDpDjrooHKXAABQEmeeeWaOO+649OrVK++++27OPvvs3HvvvbniiivKXRoAADR711xzVZJkyZIlmTlzRh544L40Njbmi1/8crp2fe9+zK+++mqSZKONNvrI229sbMyECbenuro6BxwwsGn5gAEH5tlnf5oJE8blpJNOWQPPZM1YZcj8YQdd6+vr12gxAAClNm7cuA8dM2TIkKLXAQBQbJ/61KcyYcKETJgwIYcccki6du2a2267LRtvvHG5SwMAgGbv2mt/leS9S2O3a9cuO++8SwYNGpwDDhjQNOY/L5/9UfzlL4/mpZdeyp577rVcSN2v3/659NJfZPLkiTnuuBNSW9tqNZ/JmvGx7sm8ePHi3HLLLbn22mtz//33r+maAABK5swzz8wWW2yRTp06NTWB71dVVSVkBgAqRpcuXTJs2LBylwEAAC3Oww9P+9AxnTt3zowZ0zN37tyPvP1x48Ymee/M5fdbf/0O2Wef/8rUqffkgQfuT+/efT7ytothlSHz888/n+HDh+eZZ57JlltumREjRuSFF17I+eefny5duuSMM84oVZ0AAEVx1FFH5a677krbtm0zZMiQ9OnTJ3V1deUuCwBgjTv99NM/8IyKn/70pyWuBgAAKs/OO38qf/nLY/nLXx7NgQcOKfhxr732Wh544L4kyQ9+cFZ+8IOzVjpu3LixLSNkvuCCC7Llllvm+OOPz6RJk3LiiSemTZs2GTFiRD772c+WqkYAgKIZPnx4zjzzzPzxj3/MuHHjcuGFF6ZXr14ZMmRIdt9993KXBwCwxmyxxRbLff3KK6/krrvuyqBBg8pUEQAAVJYBAwbnhhuuz9Sp9+SFF57PVltt/YFjFy9e3HSyy5QpE1NfX5/tt++RT3yi+0rHP/jg/XnssUfy8sv/TrdumxSl/o9ilSHzP/7xj/zxj39MXV1dPv3pT2e33XbL1KlT3asHAKgoNTU16dWrV3r16pW33norV1xxRb7yla/kuuuuy5577lnu8gAA1ohvfvObKyw79NBDc/nll5ehGgAAqDzdunXLMcccl6uuujzf+tYpufDCn6ZHj0+uMO6hh/6UkSNvyOWXv3ef5wkTxiVJTj/9rPTsucNKt3311Vfk+ut/nfHjb88JJ6zY25faKkPm+vr6pgR93XXXTbt27QTMAEBFevPNNzN58uSMGzcu8+fPz4knnpgePXqUuywAgKLq0aNHHn300XKXAQAAFeNrXzs6DQ0NufbaX+XrXz8yO+64c3r0+GTWWWedzJ8/P3/727S8+OLMpvD58cf/khkzpmebbbb9wIA5SQYNGpLf/ObaTJ48IcOGHZ/a2lXGvEW3ytkXL16cX/7yl01fv/vuu8t9nSSnnnpqcSoDACiBqVOn5vbbb8+0adPSu3fvnH766dltt93KXRYAwBr30EMPLff1u+++m8mTJ2fbbbctU0UAALRkDYsXZevhY8pdxgdqWLyobHMfffSx6d27T8aMGZ1p0/6SSZMmZPHiRVl//Q75xCe2y1FHfS37798/STJ+/O1JkgMPPGiV2+zWrVs+/enP5NFHH86DDz6QXr16F/15rMoqQ+ZBgwZl9uzZTV8PGDBgua8BAFq6E044IVtttVUGDRqUNm3a5MEHH8yDDz643BgfqgMAKsHw4cOX+3rdddfN9ttvn4suuqhMFQEA0JK98faS5O0l5S6j6B5+eNrHetxWW22d73znjA8d98MfXpAf/vCCgrZ5ySVXfKxaimGVIfOPf/zjVT546dKla7QYAIBSGzJkSKqqqvL666+XuxQAgKK69957y10CAABQIT7WxbqfffbZjBs3LhMnTlzhTB8AgJbkJz/5ySrX+1AdAFBJFixYkKlTp2bOnDnp0qVLevXqlQ4dOpS7LAAAoIWpLnTg/Pnzc8MNN+Sggw7KkCFD8uSTT65wmSUAgErx7LPPZsSIEfmv//qvcpcCALBG/PWvf03fvn1zyy235Nlnn80tt9yS/fbbL3/961/LXRoAANDCrPJM5vr6+tx77725/fbb8+CDD2bzzTfPgAED8vLLL+eXv/xlOnbsWKo6AQCKbv78+Zk4cWLGjRuXZ555JrvttpsP1QEAFePCCy/MOeeckwEDBjQtmzJlSs4///yMGTOmjJUBAAAtzSpD5r333jtVVVU5+OCDc/LJJ6dnz55Jkt/97nclKQ4AoNh8qA4AWFtMnz49BxxwwHLL+vXrl3POOadMFQEAAC3VKi+X3b1797z55pt54okn8uSTT2bBggWlqgsAoCT23nvvnH322dlqq60yatSoTJkyJSeddFJatWpV7tIAANaoLbbYIpMnT15u2Z133pnNNtusTBUBAAAt1SrPZL7pppvy73//O+PGjct1112X888/P/vss08WLlyYJUuWlKpGAICi6d69ex5//PE88cQT2WKLLbLppptm/fXXL3dZAABr3Pe+970cf/zxuemmm9KtW7f8+9//zowZM3LVVVeVuzQAAKCFWeWZzEmyySab5KSTTsrvf//7/OY3v0nnzp1TXV2dAw88MD/96U9LUSMAQNHcdNNN+cMf/pC999471113Xfbee+8cf/zxPlQHAFScXXfdNX/4wx/y5S9/OT179syRRx6Z3//+99l1113LXRoAANDCrPJM5v+0++67Z/fdd8/3v//9/OEPf8i4ceOKVBYAQOks+1DdSSedlL/85S8ZP35804fqDjnkkHz3u98td4kAAGvE+uuvn8GDB5e7DAAAoIX7SCHzMq1bt87AgQMzcODANV0PAEBZ+VAdAFCpXnzxxVx88cV5+umns3DhwuXW3XfffeUpCgAAaJE+VsgMAFDpfKgOAKg03/nOd7LZZpvljDPOyDrrrFPucgAAgBZMyAwAAACwFvjXv/6V3/3ud6muri53KQAAQAvnXQUAAADAWuDTn/50nnrqqXKXAQAAVABnMgMAAABUqF/+8pdN/95kk01y9NFHZ7/99kunTp2WG3fqqaeWujQAAFq4dddrldat6spdxgdaVL84C9+qL3cZFUvIDAAAAFChZs+evdzXvXv3zpIlS1ZYDgAAH1XrVnU5fNQJ5S7jA916xJVZmNULmR9//C856aRjs8suu+XKK69Z6ZiXX345Bx88MBtv3DXjxk1OkkyaNCHnn39ukmSXXXbNlVf++gMfe8ghg9LY2JgkefjhaR9Yy/XX/zpXX31FkmTUqLHZYostVzru/XMv06pVq3Tq1Dm77LJbjjrqq9lqq60/cJ5CCZkBAAAAKtSPf/zjcpcAAABrrZqa2vz1r9MyY8b0lYbCEybcnsbGxtTU1KahYckHbqexsTETJ45PVVVVGhsbM3787TnllNNWOfcnPrFd/uu/eiVJ3n77rUyb9nimTJmYe+75Qy6//KrssMNOq/PU3JMZAAAAoFK9+OKLBf0HAACsefvs87kk74XJ/6mhoSGTJ0/IJz/ZMxtuuOEqt/PIIw/l5Zf/nf79B2bDDTtmypSJqa9f9Vnan/hE9wwbdnyGDTs+//3f38kNN/w2/fsPyqJF7+aKKy77+E/q/ziTGQAAAKBC9e3bt+lshw9SVVWVp59+uoRVAQDA2mGrrbbO/PnzMmXKpJxwwjdTW9uqad2f/vRgXnnllRx99HG59tpfrXI748e/F1IPHnxw2rdfP7/73cjcd9+96du3X8G1VFVV5ZBDDsuUKRPz1FP/+HhP6H2cyQwAAABQoZ555pk8/fTTeeaZZz7wPwEzAAAUz+DBB+W1117LAw/cv9zy8ePHZt111/3QoHjevHn54x/vz+abb5Gddto5Awce2PT4j2rZh0+rqqo+8mP/k5AZAAAAAAAAoAj69Nkvbduut1woPHfu3Dz88J/Tp0+/tG3bdpWPnzx5QpYsWZIBAwYlSbbZZtt07759Hn/8L3nxxZkF19HY2JixY0cnSXr23OFjPJPluVw2AAAAQIU6+uijc+211yZJhg4d+oFnLNx8882lLAsAANYabdqsk/322z/jxo3Jyy+/nG7dumXSpPFpaGjI4MEHrfKxjY2NmTDh9lRXV+eAAwY2LR8w4MA8++xPM2HCuJx00ikrfey//vVsrrnmqiTJ22+/lWnTHs8///lsWrduk+OPP2m1n5eQGQAAAKBCDRkypOnfhx12WPkKAQCAtdjgwQfl9ttvy8SJ4zJs2PGZMGFctt32Ex96RvFf/vJoXnrppey5517ZaKONmpb367d/Lr30F5k8eWKOO+6E5e71vMy//vXP/Otf/0yS1NbWplOnTjnggAH5yle+nq222nq1n5OQGQAAAKBCDRo0qOnfBx206rMkAACA5VVXv3cloMbGpR84Ztm66uoPvkvx9tv3SPfu22fSpAnZYYcdM3v2rHz729/90PnHjXvvEtsDBhy43PL11++Qffb5r0ydek8eeOD+9O7dZ4XH9u8/KGeffd6HzvFxuSczAAAAQAX7xz/+kX/+859NX8+fPz/f/va3c+CBB+bss8/O22+/XcbqAACg+VpvvXZJkgULFnzgmNdff325sR9kyJCD88orczNixIVp3bpN9t9/wCrHv/baa3nggfuSJD/4wVnZc89dl/tv6tR7kvz/QXSpCZkBAAAAKtiFF16YV199tenr4cOHZ/r06TniiCPyr3/9Kz/72c/KWB0AADRfm2++Rerq6jJz5swsWPD6Ssf84x9/T5J84hOfWOW29tvvgKyzzjqZO3dOvvCFPmnXbtWh9JQpE1NfX5/tt++RQYOGrPS/DTbYII899khefvnfH+v5rQ6XywYAAACoYM8991x23333JMkbb7yRP/7xj5k4cWK22mqr9O7dO1/84hdz7rnnlrdIAABohlq3bp0+ffplypSJufTSizN8+DmpqqpqWj937pyMHHljkhUvaf2f2rZtm1/84rIsWPB6tt++x4fOPWHCuCTJ6aef9YH3br766ity/fW/zvjxt+eEE75Z4LNaM4TMAAAAABWsoaEhrVq1SpL87W9/S6dOnbLVVlslSbp27Zo33nijnOUBAECzduqpp+Xpp/8nkyZNyJNP/j177LFn2rZtm9mzZ+WBB+7PwoVv56ijvpZdd93tQ7f1qU/tUtCcjz/+l8yYMT3bbLPtBwbMSTJo0JD85jfXZvLkCRk27PjU1pYu+hUyAwAAAFSwbbfdNnfccUf69++fKVOmZK+99mpaN2fOnA+9TB8AAKzMovrFufWIK8tdxgdaVL94jWxn/fU75Nprb8ytt/4u998/NZMnT8yiRYuy/vrrZ5ddds0hhxyWz352nzUy1zLjx9+eJDnwwINWOa5bt2759Kc/k0cffTgPPvhAevXqvUbrWBUhMwAAAEAF+853vpMTTjgh5557bqqrq/Pb3/62ad2UKVOy6667lrE6AABaqoVv1Wdh6stdRkmsu+66+drXjs7XvnZ0QeMHDjwwAweu+vLZ7zdx4p3Lff3DH16QH/7wgoIee8klV6zW3B+XkBkAAACggu2+++6ZOnVqpk+fni233DLrrbde07rPf/7z6d+/fxmrAwAAWiIhMwAAAECFW2+99bLDDivey23rrbcuQzUAAEBLV13uAgAAAAAAAABoOYTMAAAAAAAAABSsZCHzCy+8kCOOOCL9+vXLEUcckenTp3/g2Oeffz4777xzRowYUaryAABWm34HAKhkeh0AAGCZkoXM55xzToYOHZq77rorQ4cOzdlnn73ScQ0NDTnnnHPSp0+fUpUGALBG6HcAgEqm1wEAAJYpScg8b968PPXUUxk4cGCSZODAgXnqqacyf/78Fcb+6le/Sq9evbLllluWojQAgDVCvwMAVDK9DgDA2qmxsbHcJVAmH7bva0tRxKxZs9KlS5fU1NQkSWpqarLRRhtl1qxZ2XDDDZvGPfPMM3nwwQdz44035oorrvhYc3XsuN4aqZmPr3PnduUugf9Tin1RVVXVordfijlKsR9atSr+Z4aqqou/L4qtEn4nqkuxH0owRSW+Vuh31i6V+DPcUhV7X1RCL1KK51AJ/U4l9DpJZfxOVEK/U4mvE3odAIC1T01NTRoalqS2tlW5S6EMGhqWNPX/K1OSkLkQ9fX1+cEPfpAf//jHqyz4w8yb91aWLl3zn6qoxDeIxfLKK2+Wu4Rmr1Q/T8XeF507tyv6p5hK8SmpYs9Riv1QX7+0qHMkSWMR/raWWiX8ThTjNW4FJZiiGPuiurqq2R+Q1O9UjlL8PaEwxdwXpfi7nhS/FynFc6iEfqcSep2kMn4nKqHfKdZ+aO79TnPvdQCA5q259zpro/bt22XhwrfTvn2HcpdCGby37z/4GFVJQuauXbtmzpw5aWho+L9PPTRk7ty56dq1a9OYV155JTNnzsyxxx6bJHnjjTfS2NiYt956Kz/60Y9KUSYAwMem3wEAKpleBwBg7dOxY8dMnz49SbLuum1TU1NbkqsbUT6NjY1paFiShQvfzrvvvpWNN97yA8eWJGTu2LFjevTokUmTJmXw4MGZNGlSevTosdzllLp165ZHHnmk6etLL700CxcuzBlnnFGKEgEAVot+BwCoZHodAIC1T+vWrbPllltm3rx5mTfvvQ8cUvlqamrSvn27bLzxlmnduvUHjivZ5bLPPffcnHnmmbniiivSvn37jBgxIkkybNiwnHLKKdlxxx1LVQoAQFHodwCASqbXAQBY+7Ru3TrdunVLt27lroTmpmQh8zbbbJPRo0evsPyaa65Z6fiTTz652CUBAKxR+h0AoJLpdQAAgGWqy10AAAAAAAAAAC2HkBkAAAAAAACAggmZAQAAAAAAACiYkBkAAAAAAACAggmZAQAAAAAAACiYkBkAAAAAAACAggmZAQAAAAAAACiYkBkAAAAAAACAggmZAQAAAAAAACiYkBkAAAAAAACAggmZAQAAAAAAACiYkBkAAAAAAACAggmZAQAAAAAAAChYbbkLgOZog/XrUlvXutxlAAAAAAAAQLMjZIaVqK1rnecvOKRo2996+JiibRsAAAAAAACKyeWyAQAAAAAAACiYkBkAAAAAAACAggmZAQAAAAAAACiYkBkAAAAAAACAggmZAQAAAAAAACiYkBkAAAAAAACAggmZAQAAAAAAACiYkBkAAAAAAACAggmZAQAAAAAAACiYkBkAAAAAAACAggmZAQAAAAAAACiYkBkAAAAAAACAggmZAQAAAAAAACiYkBkAAAAAAACAggmZAQAAAAAAACiYkBkAAAAAAACAgtWWuwD4qNq1XydtWvvRBQAAAAAAgHKQ1NHitGldm0HfHl/UOSZeNLio2wcAAAAAAICWyuWyAQAAAAAAACiYkBkAAAAAAACAggmZAQAAAAAAACiYkBkAAAAAAACAggmZAQAAAAAAACiYkBkAAAAAAACAggmZAQAAAAAAACiYkBkAAAAAAACAggmZAQAAAAAAACiYkBkAAAAAAACAggmZAQAAAAAAACiYkBkAAAAAAACAggmZAQAAAAAAACiYkBkAAAAAAACAggmZAQAAAAAAACiYkBkAAAAAAACAggmZAQAAAAAAACiYkBkAAAAAAACAggmZAQAAAAAAACiYkBkAAAAAAACAggmZAQAAAAAAACiYkBkAAAAAAACAggmZAQAAAAAAACiYkBkAAAAAAACAggmZAQAAAAAAACiYkBkAAAAAAACAggmZAQAAAAAAACiYkBkAAAAAAACAggmZAQAAAAAAACiYkBkAAAAAAACAgtWWuwAAAAAAAFhbtV9/nbSuK+6h+kWLl+SNBe8UdQ4A1i5CZgAAAAAAKJPWdbU55f9NLeocl3xn36JuH4C1j8tlAwAAAAAAAFAwITMA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SfxOFMpxttJtEyieqsbGxsZiT/KPf/wjZ5xxRiZPnty0rH///vnZz36Wnj17Ni0bNGhQLrjgguy0005JkmuuuSZz5szJ97///WKXCACwWvQ7AEAl0+sAAADvV5LLZXft2jVz5sxJQ0NDkqShoSFz585N165dVxj38ssvN309a9asbLzxxqUoEQBgteh3AIBKptcBAADeryQhc8eOHdOjR49MmjQpSTJp0qT06NFjucspJcn++++f0aNHZ+nSpZk/f37uvvvu9OvXrxQlAgCsFv0OAFDJ9DoAAMD7leRy2Uny3HPP5cwzz8wbb7yR9u3bZ8SIEdl6660zbNiwnHLKKdlxxx3T0NCQH/7wh/nTn/6UJBk2bFiOOOKIUpQHALDa9DsAQCXT6wAAAMuULGQGAAAAAAAAoOUryeWyAQAAAAAAAKgMQmYAAAAAAAAACiZkBgAAAAAAAKBgQmYAAAAAAAAACiZkBgAAAAAAAKBgQuYS6d27d/75z38mSd55550cffTROeuss9LQ0NA05qijjsqOO+6Y119/vWnZww8/nO7du2fEiBGlLrli1NfX55e//GX69euXAQMG5IADDshPfvKT1NfXF33u9+/3VfnNb36TefPmFb2eluCOO+7IkCFDMnjw4Oy///759re/nSQZPHhw3n333dXadqH7Y23Su3fv7L///jnwwAPTt2/fnHDCCZk2bVqSZOzYsdl9990zePDgDB48OAcddFAeeuihJEljY2MuueSSDBgwIAceeGD69++f66+/vmm7r7zySr773e/mC1/4QgYOHJghQ4bk1ltvXW7uU089NXvttdcKv4vdu3fPMcccs8Kyt99+uxjfgrJY2c/iwQcfnEceeSSXXnpp9tprrwwZMiT9+vXLIYcckhtvvHG514vu3btn0KBBTb8nv/jFL5rWPfzwwznssMMyePDgHHDAAfnKV76SpUuXJnlvv91www0ZMGBA+vfvn/333z/f//7388YbbzQ9/v7770/37t1z9913L1ffmWeemR133DEvv/zycstGjhy5Rr83tFx6nfLS77Qs+p3S0u+Uh36HSqTfKR+9Tsuj3ykdvU756HeAtV1tuQtY27z55ps59thj07NnzwwfPjxVVVXLrd92220zefLkfPnLX06S3H777enZs2c5Sq0YZ511VhYtWpQxY8ZkvfXWS319fcaOHZvFixenVatW5S4vSXLjjTfms5/9bDp27FjuUspq7ty5Oe+883L77bena9euaWxszDPPPJMkGT9+fJmrq1yXXHJJtttuuyTJ73//+xx77LG59tprkySf/exnc8kllyR5rzn94Q9/mDvuuCN33nlnHnrooYwdOzatW7fO4sWLM3PmzCTvHWw58sgjc/DBB+cnP/lJqqur88Ybb2TKlClNc77++ut56KGHstVWW2Xq1KnZb7/9lqvp+eefz6OPPpo99tijFN+CZmfIkCE544wzkiQvvvhiTj/99MycOTPf//73m8bccsstadu2bd55550MGDAgvXv3Ts+ePXPKKafkxhtvzPbbb58keeqpp5peay6++OI89thjueGGG9KpU6csXbo0d999dxYsWJD27dsnScaMGZM999wzt912W/r06bNcXZ07d86ll16aH//4x6X4NtBC6XXKQ7/Tcuh3ykO/0/zod2jJ9Dulp9dpWfQ7pafXaZ70O0ClEzKX0Lx58/Ld7343++67b0499dSVjjnooIMyfvz4fPnLX87bb7+dadOmpX///lm8eHHTmGuuuSZ33XVXGhoa0qVLl/zoRz9K586d89BDD+Xiiy/OokWL0tDQkOOPPz4DBgxI8t4naXfYYYf87W9/y9y5c3PAAQfkO9/5TpLksssuy6RJk9K6detUVVXlxhtvbHoxaummT5+eu+++O/fff3/WW2+9JEmrVq1yxBFHpKGhISNGjMgf//jHJMnnPve5fOc730lNTU3OPPPM1NXVZfr06XnxxRfTt2/f7Lvvvrn00ksze/bsfPWrX81Xv/rVJO99Ym3AgAGZNm1a5s6dm69+9as58sgjV6hl7ty5Of/88/Pyyy9n0aJFGTBgQI4//vhceeWVmTt3bk455ZS0bt06F110UTbffPP84he/yGOPPZb6+vpst912Offcc9O2bdvSffPK4NVXX01tbW06dOiQJKmqqkqPHj2SvPfJvmnTpqVt27bp3bt3Bg8enD//+c955ZVX8o1vfKPpe/6Xv/wl5513XpLkM5/5TO65555cffXVTY32Mh+0P9Z2++23X/7+97/n2muvTa9evZZb9+abb2b99ddPksyZMycbbLBB6urqkiR1dXXZdtttkySTJk1Khw4dctxxxzU9tn379vniF7/Y9PWECRPy+c9/Pvvss0/GjBmzwhuRk08+OT//+c9zyy23FONptiibbbZZLrjgghx44IE59dRT065du+XWv/POO1myZEnatWuXt99+OwsXLkynTp2a1n/yk59Mkrz99tu5/vrrM27cuKb11dXVy33vX3vttTz00EO54447MmDAgLzyyivp3Llz0/ovfvGLGTlyZP73f/+3aX/D++l1ykO/07Lod8pPv9P86HdoSfQ7pafXaXn0O+Wl12me9DtAJRIyl9B///d/Z+jQoR/4JiR578Wmrq4uzz33XP72t7+lT58+qa2tbXojMn78+MycOTO33nprqqur89vf/jY/+clPctFFF+WTn/xkfvvb36ampiavvvpqDj744Oyzzz5NjcOsWbNy88035+23306fPn1y6KGHZoMNNsi1116bhx56KG3atMlbb72VNm3alOT7UQpPPfVUtthii6bvwfuNGjUqTz/9dMaOHZskGTZsWEaNGpWhQ4cmSf71r3/lhhtuSENDQ3r37p0333wzI0eOzCuvvJL9998/hx56aNMbg1dffTU333xzXn311QwZMiS7775706fMljnjjDNy4okn5tOf/nQWL16cr33ta9lxxx1zwgknZPTo0ct94vCKK65Iu3btcttttyVJfvazn+VXv/pVTjvttKJ9r5qD7bffPjvttFN69eqVz3zmM9l1110zePDgbLDBBiuMfffddzNq1Ki89NJLGTRoUA466KC0atUq3/rWt/Lzn/88u+++e/7whz/kpptuWulcH7Q/9t5772I/zWZv5513zr333ptevXrlz3/+cwYPHpyFCxdm/vz5ufrqq5Mk/fv3z+9+97vst99+2X333bPnnntmwIABqa2tzf/8z/9kp512WuUcY8eOzRlnnJFddtklF154YebMmZMuXbo0rd9vv/1y88035+67717h05aVYtnBh2WmT5/+gWO32WabtGnTJi+88ELT93bZG7sZM2bkS1/6UrbeeuskyeGHH5799tsve+yxR3bdddcMGjQoXbt2zXPPPZe6urqmcSszfvz47LvvvunUqVP69u2bcePGZdiwYU3r11133Rx33HH5xS9+kcsvv3x1nj4VSq9THvqdlkW/0zzod0pDv0Ml0u+Unl6n5dHvlJ9ep3T0O8DaTMhcQp///OczZcqUfOlLX8pGG230geOGDBmS22+/PU888UR+8IMf5K677mpad++99+Yf//hHDjrooCRJQ0ND06c458+fn+9973uZMWNGampqsmDBgrzwwgv51Kc+lSTZf//9U11dnXbt2mWbbbbJzJkzs9lmm2WrrbbK6aefns997nPp1atX0/Yq3UMPPZSDDjqo6dN6Bx98cO6+++6mNyJ9+vRpWrfVVlvl85//fKqrq9OlS5e0b98+s2fPzjbbbJMkOfTQQ5MknTp1Sq9evfLoo48u90Zk4cKFefTRRzN//vymZW+//Xaee+65lTa99957b956662mfb948eIV3thUourq6lxxxRX55z//mcceeyx33313rr322kycOHGFsf3790+SbLrppk37o76+Pm3atMnuu++eJOnbt+9KP7n9UffH2qaxsbHp3++/pNIjjzySb33rW7nrrruy0UYbZfLkyfnb3/6Wxx9/PFdddVUmTJiQa6+9drnHr8xTTz2VN954I3vuuWeqqqrSt2/fjB8/Pscee+xy47797W/nggsuSO/evdf8k2wG3n/wIXnvb9BHsexySm+88Ua++tWvNr1pO/vss/P1r389Dz/8cB544IFcffXVGTNmzIful+S9N4hnnXVWkvfOvhg+fPhyb0KS997kXH/99XniiSc+Ur2sHfQ6zY9+p/nR7zQP+p3S0O9QifQ7zYtep3nS75SfXqd09DvA2kzIXELHHHNMpk6dmqOOOirHH398fvOb3yRJBg0alGOOOaZp3AEHHJABAwakU6dO2W677ZZ7I9LY2JgTTjihqfF9v3PPPTe9e/fOZZddlqqqqvTr1y+LFi1qWv/+T1TV1NSkoaEhNTU1ufXWWzNt2rQ8/PDDOfjgg/PrX/+6YpreT37yk5kxY0YWLFiwwideGxsbV7hv0vu//s/v18q+fyuzsu0uXbo0VVVVue222wq6V1BjY2POOeec7LXXXh86thJtt9122W677fLlL385/fv3z6OPPrrCmA/aH//5vV+Zj7o/1jZPPvlkPvGJT6yw/DOf+UyWLFmSf/3rX9lpp51SW1ub3XffPbvvvnsOOeSQ7L333nn99dezww47ZMyYMR+4/dtuuy1vvPFGvvCFLyR5741227ZtV3gjstdee6VTp06ZMGHCmn2CLdDzzz+fd999d6WfUm3fvn0++9nP5k9/+lPTJ4M322yzbLbZZjnssMOaXnsOP/zwLFq0KC+88EK22mqrFbbz5JNP5rnnnsvw4cObls2dOzfT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\n",
"text/plain": [
"<Figure size 1728x576 with 3 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plot_scores(\n",
" pd.concat([coil_raw_results_long, coil_pca_results_long, coil_umap_results_long]),\n",
" score_types=(\"ARI\", \"AMI\", \"Silhouette\")\n",
")"
]
},
{
"cell_type": "markdown",
"id": "c632ada2",
"metadata": {},
"source": [
"# MNIST Clustering"
]
},
{
"cell_type": "code",
"execution_count": 43,
"id": "5d01d2a4",
"metadata": {},
"outputs": [],
"source": [
"raw_mnist = mnist.data.astype(np.float32)[:35000]"
]
},
{
"cell_type": "code",
"execution_count": 44,
"id": "ac9379e2",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"CPU times: user 1h 4min 28s, sys: 23.3 s, total: 1h 4min 52s\n",
"Wall time: 1h 52s\n"
]
}
],
"source": [
"%%time\n",
"km_labels = cluster.KMeans(n_clusters=10).fit_predict(raw_mnist)\n",
"cl_labels = cluster.AgglomerativeClustering(n_clusters=10, linkage=\"complete\").fit_predict(raw_mnist)\n",
"sl_labels = cluster.AgglomerativeClustering(n_clusters=80, linkage=\"single\").fit_predict(raw_mnist)\n",
"db_labels = cluster.DBSCAN(eps=1000.0).fit_predict(raw_mnist)\n",
"hd_labels = hdbscan.HDBSCAN(min_samples=10, min_cluster_size=100).fit_predict(raw_mnist)"
]
},
{
"cell_type": "code",
"execution_count": 45,
"id": "a076a979",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"ARI: 0.3559\n",
"AMI: 0.4773\n",
"Silhouette: 0.0558\n",
"ARI: 0.1013\n",
"AMI: 0.2630\n",
"Silhouette: 0.0151\n",
"ARI: 0.0000\n",
"AMI: 0.0000\n",
"Silhouette: 0.1518\n",
"Pct clustered: 99.77%\n",
"ARI: 0.1101\n",
"AMI: 0.2756\n",
"Silhouette: -0.1342\n",
"Pct clustered: 24.01%\n",
"ARI: 0.9989\n",
"AMI: 0.9974\n",
"Silhouette: 0.2102\n",
"Pct clustered: 15.03%\n"
]
}
],
"source": [
"mnist_raw_results = pd.DataFrame(\n",
" [\n",
" eval_clusters(km_labels, mnist.target[:35000], raw_mnist, cluster_method=\"K-Means\"),\n",
" eval_clusters(cl_labels, mnist.target[:35000], raw_mnist, cluster_method=\"Complete\\nLinkage\"),\n",
" eval_clusters(sl_labels, mnist.target[:35000], raw_mnist, cluster_method=\"Single\\nLinkage\"),\n",
" eval_clusters(db_labels, mnist.target[:35000], raw_mnist, cluster_method=\"DBSCAN\"),\n",
" eval_clusters(hd_labels, mnist.target[:35000], raw_mnist, cluster_method=\"HDBSCAN\"),\n",
" ]\n",
")\n",
"mnist_raw_results_long = mnist_raw_results.melt([\"Method\", \"Pct Clustered\"], var_name=\"Score Type\", value_name=\"Score\")\n",
"mnist_raw_results_long[\"Dim Reduction\"] = \"None\""
]
},
{
"cell_type": "code",
"execution_count": 46,
"id": "b40e0ff5",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAABHQAAAI0CAYAAAB8hH7gAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAAsTAAALEwEAmpwYAABFKUlEQVR4nO3deZiVBd0//vcsIgqYgoggmEuPSKS5kHupCIoCAq6JWpmiWGqp9ahZopYLT4+5oOaS5loaLqC4E5ZpqJVUFKmFKC4IyIiyqMAwvz/8Or/mYRts5py58fW6rq4459xzn885N8x5+76XU1FXV1cXAAAAAAqjstwDAAAAALB6FDoAAAAABaPQAQAAACgYhQ4AAABAwSh0AAAAAApGoQMAAABQMAodAAAAgIJR6AAt1k9/+tN079493bt3z0svvbTcZe655576ZT763+c+97nsvffeOf300/P8888v9+dGjRqV7t27Z9SoUc35EgAAGljdfHPUUUetcF2vvfZatt566/pl/68V3Q+sGRQ6QItUV1eXu+66KxUVFUmS0aNHr3T5rbfeOieddFJOOumkHHnkkdlwww0zbty4HHroofnTn/5UipEBAFZqdfNNdXV1/vCHP6yw+Bk9enTq6upSXV3d5LMCLZ9CB2iRnnzyybz22msZMmRINtxww9x7771ZtGjRCpfv0aNHTj755Jx88sk566yzMnr06Bx++OFZtGhRLrvsstINDgCwAqubb/baa68kyy9+amtrc88992SbbbZJhw4dmmtkoAVT6AAt0kfB5dBDD83AgQPz9ttvZ/z48au1jkMOOSRJ8re//a3J5wMAWF2rm28+85nPZPvtt8+YMWOyePHiBo/95je/yaxZs3LYYYc168xAy6XQAVqct956KxMmTMhmm22WHXbYIQcddFCS5M477/xY63MYMgBQbh833xx66KGpqanJr3/96wb3jx49Ouuuu24OOOCAZpsZaNkUOkCLc88992Tx4sX1QWerrbZKz54988wzz+SVV15p9Hp+9atfJUl23HHHZpkTAKCxPm6+OeCAA9K2bdsGp13NnDkzTzzxRPr375+2bds2++xAy6TQAVqUurq6jB49OpWVlRk8eHD9/UOGDKl/bHn+8Y9/ZNSoURk1alQuuuiiHHzwwRk9enQ22mijnHHGGSWaHgBgWR833yTJOuuskwED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p3GaK+esKuOU5JSrDh06pEePHhk3blySZNy4cenRo0fat2/fYLkBAwbkySefTF1dXRYvXpynn346W2+9dSlGBABYbTIOAFAuJfva8nPPPTe33XZb9ttvv9x2220577zzkiTDhg3L5MmTkyT9+/dPhw4dcsABB2Tw4MH5zGc+k0MOOaRUIwIArDYZBwAoh4q6NeyKfA5FBqDUOnZsl8kvzCz3GC3aNt07rZGnXJWanANAKck4jdNcOadFnHIFAAAAQNNpUd9yBQBQDlOnTs3DDz+ct956KyNGjMjUqVOzePFi17kBAFqsRh+hM3Xq1Fx11VX154VPnTo1zz//fLMNBgBQCg899FCOOuqozJw5M2PHjk2SLFy4MBdffHGZJwMAWLFGFTqCDgCwprriiity44035vzzz09VVVWSZOutt7bjCgBo0Rp1ytVHQadHjx556KGHkgg6AMCaoaampv7UqoqKivr//+jPAAAtUaOO0BF0AIA1Vc+ePeuPQP7IAw88kG233bZMEwEArFqjjtD5KOgMHjy4/j5BBwBYE5x99tk59thjc9ddd2XhwoU59thjM23atNx4443lHg0AYIUaVegIOgDAmqiuri6tWrXKuHHj8sQTT2SvvfZK586ds9dee6VNmzblHg8AYIVWWegIOgDAmqqioiIDBw7Mc889lwMOOKDc4wAANNoqCx1BBwBYk/Xo0SPTpk3LlltuWe5RAAAarVGnXAk6AMCaaqeddsqwYcMyZMiQbLzxxg2+9OGQQw4p42QAACvWqEJH0AEA1lTPPfdcNtlkkzz77LMN7q+oqJBzAIAWq1GFjqADAKypbr311nKPAACw2hpV6Ag6AMCa7J133snjjz+emTNnplOnTtl7773zqU99qtxjAQCsUGVjF3znnXcyZsyYXHvttRkzZkzeeeed5pwLAKAkJk2alL59++aOO+7ICy+8kDvuuCN9+/bNpEmTyj0aAMAKNeoInUmTJuWEE07IFltskS5duuTxxx/PhRdemGuvvTbbb799c88IANBsLrzwwowYMSL9+/evv+/BBx/Mj370o9x9991lnAwAYMUaVegIOgDAmurll1/O/vvv3+C+/fbbLyNGjCjTRAAAq9aoU65WFHSmT5/eLEMBAJTKpz/96TzwwAMN7nv44YfTrVu3Mk0EALBqjTpC56OgM3DgwPr7BB0AYE3wve99L8OHD8+tt96aLl265PXXX88rr7ySa665ptyjAQCsUKMKHUEHAFhT7bDDDnnsscfym9/8JrNmzcree++dPffcM+uvv365RwMAWKFGFTqCDgCwppo5c2Zat26dQYMG1d/3zjvv1H+FOQBAS9Soa+jMnDkzSTJo0KAMGzYsgwYNSkVFRf39AABF9Y1vfCNvvvlmg/vefPPNnHTSSWWaCABg1RpV6Ag6AMCa6uWXX0737t0b3Ne9e/e89NJLZZoIAGDVGv0tV4IOALAmat++fV555ZUG973yyitOLQcAWrRGFTqCDgCwpjr44INz8skn5/HHH8+//vWvTJgwIaecckoOPfTQco8GALBCjboo8kdB59RTT023bt0yffr0XH755YIOAFB4xx9/fKqrqzNy5Mi8+eab2XjjjXPooYfmmGOOKfdoAAAr1KhCR9ABANZUlZWVOe6443LccceVexQAgEZrVKEj6AAAa5o33ngjlZWV2XjjjZMk7733Xq655pq8+OKL2X777XPsscemqqqqzFMCACzfSq+h88YbbzT4dqv33nsvl156aU488cRcd911qa2tbfYBAQCaw9lnn53JkyfX3z7//PPzwAMPZLPNNsvdd9+dyy+/vIzTAQCs3EoLHUEHAFhTPf/889l9992TJAsXLsyDDz6Yyy67LGeccUauvvrqPPDAA2WeEABgxVZa6Ag6AMCaavHixVl33XWTJJMnT06bNm3yuc99Lkmy5ZZb5u233y7neAAAK7XSQkfQAQDWVF27ds0zzzyTJJkwYUJ23nnn+sdqamqyzjrrlGs0AIBVWulFkT8KOjvvvLOgAwCsUU466aR885vfTLdu3fLSSy/l1ltvrX/s17/+dbbZZpsyTgcAsHIrLXQEHQBgTdWnT5/cc889+cc//pHPfvaz6datW/1jW2yxRbbbbrvyDQcAsAorLXQEHQBgTbbppptm0003Xeb+HXfcsQzTAAA03koLnUTQAQAAAGhpVnpRZAAAAABaHoUOAAAAQMEodAAAAAAKZpXX0AEAWBMNHTo0FRUVK13m9ttvL9E0AACrZ6WFjqADAKypDj300HKPAADwsa200BF0AIA11ZAhQ8o9AgDAx7bSQmdVQWfx4sVNOgwAQKmMGTNmlcsMHjy42ecAAPg4PtY1dBYtWpQ77rgjN9xwQ37729829UwAAM3uzDPPzKc//elsuOGGqaurW+bxiooKhQ4A0GKttNB56aWXcvbZZ+f555/PZpttlpEjR2batGn50Y9+lE6dOuWMM84o1ZwAAE3q6KOPziOPPJI2bdpk8ODB6dOnT1q1alXusQAAGqWibnm7pP6fY489NhtttFH69euXcePGZdKkSWndunW+973vZbfddivlnI02Z878LF26wpcEAE2uY8d2mfzCzHKP0aJt071TZs+e1yzrrqysSIcObT/Wz9bW1uZ3v/tdxowZkz/+8Y/Za6+9Mnjw4PTq1auJp2wacg4ApSTjNE5z5ZxVZZyVHqHzt7/9Lb/73e/SqlWrfOELX8iOO+6Yxx9/PBtvvHGTDwoAUGpVVVXZa6+9stdee2X+/Pm5+uqr85WvfCU33nhjdtlll3KPBwCwQistdBYvXlx/6PG6666bdu3aKXMAgDXKvHnz8sADD2TMmDGpqanJN77xjfTo0aPcYwEArNRKC51Fixbl8ssvr7/9/vvvN7idJN/61reaZzIAgGb0+OOP5957781zzz2X3r1757vf/W523HHHco8FANAoKy10Bg4cmDfffLP+dv/+/RvcBgAoqhNPPDGbb755Bg4cmNatW+fJJ5/Mk08+2WAZO64AgJZqpYXORRddtNIfXrp0aZMOAwBQKoMHD05FRUXmzp1b7lEAAFbbSgudFXnhhRcyZsyY3H///cvsyQIAKIKLL754pY9/knZctVtvnbRe+2PFwk+M9z9YknnvvlfuMQCgXqM/uWtqanL//fdnzJgxef7557Pjjjvm7LPPbs7ZAABK7pO446r12tUZePrYco/Rot1/yaA0/RfSAsDHt8pvuZowYULuvffePPnkk9l0003Tv3//vPHGG7n88svToUOHUs0JANBs7LgCAIpmpYXO7rvvnoqKihx00EE5+eST07NnzyTJL3/5y5IMBwDQXOy4AgCKbKWFTvfu3fOnP/0pf/nLX/LpT386Xbt2zac+9alSzQYA0GzsuAIAiqxyZQ/eeuuteeyxx7L77rvnxhtvzO67757hw4dn4cKFWbJkSalmBABoct27d8+8efPyl7/8JZMnT84777xT7pEAABptpYVOkmyyySb55je/mUcffTQ33XRTOnbsmMrKyhx44IH5n//5n1LMCADQ5Oy4AgCKbJWFzr/r1atXfvjDH+app57KD37wg7z44ovNNRcA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uemmmzJnzpxmn6cIHnrooQwePDiDBg1Kv379cvrppydJBg0alPfff/8/Wndjt8cnSe/evdOvX78ceOCB6du3b0488cQ899xzSZJ77rknvXr1yqBBgzJo0KAMGTIkEydOTJLU1dXliiuuSP/+/XPggQfmgAMOyM9//vP69c6ePTv//d//nX322ScDBgzI4MGD86tf/arBc3/rW9/Krrvuusy/xe7du+e4445b5r4FCxY0x1tQFsv7u3jQQQflmWeeyahRo7Lrrrtm8ODB2W+//XLwwQfnlltuafB50b179wwcOLD+38mll15a/9jTTz+dQw89NIMGDcr++++fr3zlK1m6dGmSD7fbzTffnP79++eAAw5Iv3798v3vfz/vvvtu/c//9re/Tffu3TN+/PgG85155pnZZptt8sYbbzS477bbbmvS94ZiknPKR84pFjmndGSc8pBxSq+63AN8ksybNy/HH398evbsmbPPPjsVFRUNHv/MZz6TBx54IEceeWSS5N57703Pnj3LMeoa46yzzsoHH3yQu+++O23bts3ixYtzzz33ZNGiRVlrrbXKPV6S5JZbbsluu+2WDh06lHuUspo1a1bOO++83HvvvencuXPq6ury/PPPJ0nGjh1b5unWXFdccUW22mqrJMmjjz6a448/PjfccEOSZLfddssVV1yR5MMPwfPPPz8PPfRQHn744UycODH33HNP1l577SxatCjTp09P8uF/zB111FE56KCDcvHFF6eysjLvvvtuHnzwwfrnnDt3biZOnJjNN988jz/+ePbdd98GM7300kt59tlns9NOO5XiLWhxBg8enDPOOCNJ8uqrr+a73/1upk+fnu9///v1y9xxxx1p06ZN3nvvvfTv3z+9e/dOz549c8opp+SWW27J1ltvnSSZMmVK/WfNZZddlj/84Q+5+eabs+GGG2bp0qUZP3583nnnnay33npJkrvvvju77LJL7rrrrvTp06fBXB07dsyoUaNy0UUXleJtoIDknNKTc4pDzik9GaflkXGankKnRObMmZP//u//zt57751vfetby11myJAhGTt2bI488sgsWLAgzz33XA444IAsWrSofpnrr78+jzzySGpra9OpU6f88Ic/TMeOHTNx4sRcdtll+eCDD1JbW5vhw4enf//+ST7cK/a5z30uf/7znzNr1qzsv//++c53vpMkufLKKzNu3LisvfbaqaioyC233FL/l77oXn755YwfPz6//e1v07Zt2yTJWmutlcMPPzy1tbUZOXJkfve73yVJvvjFL+Y73/lOqqqqcuaZZ6ZVq1Z5+eWX8+qrr6Zv377Ze++9M2rUqLz55pv56le/mq9+9atJPmyh+/fvn+eeey6zZs3KV7/61Rx11FHLzDJr1qz86Ec/yhtvvJEPPvgg/fv3z/Dhw/PTn/40s2bNyimnnJK11147l1xySTbddNNceuml+cMf/pDFixdnq622yrnnnps2bdqU7s0rg7feeivV1dVZf/31kyQVFRXp0aNHkg/b+ueeey5t2rRJ7969M2jQoPz+97/P7Nmz8/Wvf73+Pf/jH/+Y8847L0my884759e//nWuvfba+g/zj6xoe3zS7bvvvvnrX/+aG264IXvttVeDx+bNm5dPfepTSZKZM2dmgw02SKtWrZIkrVq1ymc+85kkybhx47L++uvnhBNOqP/Z9dZbL1/+8pfrb993333Zc889s8cee+Tuu+9eJuycfPLJ+clPfpI77rijOV5moXTr1i0XXHBBDjzwwHzrW99Ku3btGjz+3nvvZcmSJWnXrl0WLFiQhQsXZsMNN6x//LOf/WySZMGCBfn5z3+eMWPG1D9eWVnZ4L1/++23M3HixDz00EPp379/Zs+enY4dO9Y//uUvfzm33XZb/vWvf9Vvb/iInFN6ck6xyDnlJeO0PDJO01DolMi3v/3tDB06dIUhJ/nwL3WrVq0yderU/PnPf06fPn1SXV1dH3TGjh2b6dOn51e/+lUqKyvzi1/8IhdffHEuueSSfPazn80vfvGLVFVV5a233spBBx2UPfbYo/6X04wZM3L77bdnwYIF6dOnTw455JBssMEGueGGGzJx4sS0bt068+fPT+vWrUvyfpTClClT8ulPf7r+Pfh3d955Z/7xj3/knnvuSZIMGzYsd955Z4YOHZok+ec//5mbb745tbW16d27d+bNm5fbbrsts2fPTr9+/XLIIYfUB4+33nort99+e956660MHjw4vXr1qm+OP3LGGWfkG9/4Rr7whS9k0aJF+drXvpZtttkmJ554YkaPHt1gD8LVV1+ddu3a5a677kqS/PjHP851112XU089tdneq5Zg6623zrbbbpu99torO++8c3bYYYcMGjQoG2ywwTLLvv/++7nzzjvz2muvZeDAgRkyZEjWWmutnHbaafnJT36SXr165bHHHsutt9663Oda0fbYfffdm/tltnif//znM2HChOy11175/e9/n0GDBmXhwoWpqanJtddemyQ54IAD8stf/jL77rtvevXqlV122SX9+/dPdXV1/v73v2fbbbdd6XPcc889OeOMM7L99tvnwgsvzMyZM9OpU6f6x/fdd9/cfvvtGT9+/DJ7UNYUH/3HzUdefvnlFS675ZZbpnXr1pk2bVr9e/tReHzllVdyxBFHZIsttkiSHHbYYdl3332z0047ZYcddsjAgQPTuXPnTJ06Na1atapfbnnGjh2bvffeOxtuuGH69u2bMWPGZNiwYfWPr7vuujnhhBNy6aWX5qqrrvpPXj5rIDmn9OScYpFzyk/GKQ0Zp7QUOiWy55575sEHH8wRRxyRjTbaaIXLDR48OPfee2/+8pe/5Ac/+EEeeeSR+scmTJiQv/3tbxkyZEiSpLa2tn6PTE1NTb73ve/llVdeSVVVVd55551MmzYt2223XZKkX79+qaysTLt27bLllltm+vTp6datWzbffPN897vfzRe/+MXstdde9etb002cODFDhgypb98POuigjB8/vj7o9OnTp/6xzTffPHvuuWcqKyvTqVOnrLfeennzzTez5ZZbJkkOOeSQJMmGG26YvfbaK88++2yDoLNw4cI8++yzqampqb9vwYIFmTp16nI/WCdMmJD58+fXb/tFixYtE5zWRJWVlbn66qvz4osv5g9/+EPGjx+fG264Iffff/8yyx5wwAFJkq5du9Zvj8WLF6d169bp1atXkqRv377L3Qu7utvjk6aurq7+z/9+OPIzzzyT0047LY888kg22mijPPDAA/nzn/+cP/3pT7nmmmty33335YYbbmjw88szZcqUvPvuu9lll11SUVGRvn37ZuzYsTn++OMbLHf66afnggsuSO/evZv+RbYA//4fN8mHv4NWx0eHI7/77rv56le/Wh8MzznnnBxzzDF5+umn88QTT+Taa6/N3XffvcrtknwYQs8666wkHx5JcfbZZzcIO8mHYernP/95/vKXv6zWvKz55JyWRc5peeSc8pNxSkPGKS2FTokcd9xxefzxx3P00Udn+PDhuemmm5IkAwcObHBxrP333z/9+/fPhhtumK222qpB0Kmrq8uJJ55Y/8H6784999z07t07V155ZSoqKrLffvvlgw8+qH/831vSqqqq1NbWpqqqKr/61a/y3HPP5emnn85BBx2Un/3sZ2vMh+pnP/vZvPLKK3nnnXeW2XtVV1e3zLn9/377/75fy3v/lmd56126dGkqKipy1113Nep89rq6uowYMSK77rrrKpddE2211VbZaqutcuSRR+aAAw7Is88+u8wyK9oe//e9X57V3R6fNJMnT85//dd/LXP/zjvvnCVLluSf//xntt1221RXV6dXr17p1atXDj744Oy+++6ZO3duPve5z+Xuu+9e4frvuuuuvPvuu9lnn32SfBjk27Rps0zY2XXXXbPhhhvmvvvua9oXWEAvvfRS3n///eXueVpvvfWy22675amnnqrf09etW7d069Ythx56aP1nz2GHHZYPPvgg06ZNy+abb77MeiZPnpypU6fm7LPPrr9v1qxZee6557LDDjvU37fWWmvl5JNPziWXXJIuXbo0w6ulqOSc0pNziknOKR8Zp+WRcf5zvuWqhE444YQMGTIk11xzTa6//vqMHTt2mSudt2nTJv/93/9df7Gof9e7d+/84he/yDvvvJPkw18SH11Mbd68edlkk01SUVGRp556Kq+88soq55k/f35qamqy00475ZRTTslWW22Vf/7zn03wSluGzTbbLL17984555yT+fPnJ/lwb9/NN9+cnXfeOffee28WL16cxYsXZ8yYMR87WNx7771JPtx7+MQTTyxzkbO2bdtmxx13zHXXXVd/34wZMzJ79uwkH27zefPm1T/Wu3fv3HTTTfXfdjB//vxMnTr1Y81WJDNnzsykSZPqb7/55pupqalJ165dG/XzW2yxRRYuXJg//elPSZLx48c3uLL9R1a1PT7Jxo8fn1/+8pc55phjlnnshRdeyIIFC9K1a9f87W9/y2uvvVb/2N///vd86lOfynrrrZf+/funpqYmP/vZz+r3mLz77ru5+eabs2jRojzwwAO56667MmHChEyYMCFPPvlkKioq8sc//nGZ5zz99NMzatSo5nvBBfDaa6/l7LPPzhFHHLHcIwsWLVqUSZMmZbPNNsuCBQvy5JNPNnjfX3vttXTt2jVt2rTJ1772tZxzzjn13zZTV1eX++67L9OnT8/dd9+d4447rn67TJgwISeffPJyg+vAgQMzd+7c5f5HCJ9sck5pyTnFIueUl4zT8sg4TcMROiU2fPjw1NXV5eijj84tt9zS4JzKj3x0mOX/NXjw4MydO7f+wmh1dXU54ogjsvXWW+f000/Peeedl+uvvz7du3dP9+7dVznL/Pnzc/LJJ+f9999PXV1dPvvZzy5z4a6iu/jii3PVVVfl4IMPzlprrZWlS5dmzz33zKmnnprXX3+9/rDuPfbYI4cddtjHeo7OnTtn6NChmT17dk444YTlvvf/+7//m4suuigDBw5M8mG4ueCCC9KxY8d85Stfyfe+9720bt06l1xySY4//vhceeWVOeSQQ1JRUZGKioqcdNJJ9Yc+r6mWLFmSUaNG5fXXX0/r1q2zdOnSfPvb366/4NmqtGrVKpdccknOPffctG7dOrvssks23HDDZS6wlqx8e3zSnHLKKWnVqlXee++9bLnllrnuuuuy3Xbb5aWXXqo/v7yuri51dXW56KKL0r59+/z973/Peeedl/nz56dVq1ZZZ511ctVVV6WysjLrrrtubr311vz4xz/OPvvskzZt2qS6ujpDhw7N+PHjs+mmm2azzTZrMMOAAQNy99131x9G/pFtttkmPXv2bBCsPgnGjBmTiRMn5r333kvbtm0zcODAHH300Q2W+fKXv5zKysp88MEH2WmnnXLEEUdk0aJFuf322/PDH/4wa6+9dmprazNw4MD07ds3SXLaaaflpptuql9XXV1devXqlV133TUPPvhgfvnLXzZ4jgEDBuTAAw9ssEcr+fC0gVNPPfUTf4FNlk/OKS05pzjknNKTcVoeGafpVdQ15qQzYLl69+6da665ZplvF6A85s+fX9/wP/300znzzDMzYcKEVFY6GBEAVpec07LIOcD/5QgdYI3x6KOP5qabbkpdXV39niwhBwBYE8g5wP/lCB0AAACAglHp8onTu3fvvPjiiw3uGzZsWKZPn77Knz366KPz+OOPN9donyi2AwA0LZ+tLYdtAZSCU64gyfXXX1/uEYjtAABNzWdry2FbAE3NETqQhntRjj766IwcOTJHHHFE9tlnn/zv//7vcn/mgQceyMEHH5w333wz999/fw499NAMHjw4gwcPzsSJE+uX++Mf/5iBAwdm4MCB+dGPfpS99967/rleeumlHHfccTn44INz4IEHLvfr8z5JbAcAaFo+W1sO2wJoao7QgeWYMWNGbr/99ixYsCB9+vTJIYcc0uBrCK+//vo89dRTuemmm9KuXbvsscceGTBgQCoqKvLSSy/la1/7Wp544oksWrQop512Wn7yk5+kV69eeeyxx3Lrrbcm+fDrK7/zne/kxz/+cbbccsvMnz8/Bx98cLbbbrs1/qs7G8t2AICm5bO15bAtgP+UQgeWo1+/fqmsrEy7du2y5ZZbZvr06fUfsKNGjUqXLl1y3XXXpVWrVkmSV199NaeffnpmzpyZ6urqvPXWW5k9e3bmzJmT1q1bp1evXkmSvn37Zr311kuSvPzyy5k6dWpOO+20+uddvHhxXnrpJR+w/4/tAABNy2dry2FbAP8phQ4sx9prr13/56qqqtTW1tbf3m677fLUU0/ljTfeqP/QPe2003LmmWemT58+Wbp0aT7/+c/ngw8+SJJUVFQs9znq6uqywQYbZOzYsc33QgrOdgCApuWzteWwLYD/lGvowGr64he/mHPPPTfHH398/vnPfyZJ5s2bl65duyZJ7rrrrixatChJssUWW2ThwoX505/+lCQZP3583n333STJ5ptvntatW2fMmDH16546dWrmz59fwldTXLYDADQtn60th20BNIYjdPhEOuaYY1JVVVV/e8GCBav187vuumsuuuiinHjiibn88stz1lln5Rvf+EY6deqUnXbaKeuvv36SpFWrVrnkkkty7rnnpnXr1tlll12y4YYbpl27dqmurs4111yTCy+8MDfccEOWLl2aDh065LLLLmvCV9qy2Q4A0LR8trYctgXQ3Crq6urqyj0ErMnmz5+ftm3bJkmefvrpnHnmmZkwYUIqKx0gV0q2AwA0LZ+tLYdtAZ9MjtCBZvboo4/mpptuSl1dXf0eFB+upWc7AEDT8tnactgW8MnkCB0AAACAglHbAgAAABSMQgcAAACgYBQ6AAAAAAWj0AE+llGjRuU73/lOuccoqaOPPjqjR49uknWdeeaZufTSS5tkXQBA05Fx/jMyDpSOQgdYofvvvz8HHXRQtt9+++yxxx457rjj8sc//rHJ1v/aa6+le/fuWbJkSZOvc8iQIQ3ur6mpyec+97n07t27Uev5JIY5APikkHFkHFgTKHSA5fr5z3+eCy+8MMOHD89TTz2Vxx9/PEOHDs2vf/3rco9Wb2UhaeHChXnxxRfrb48bNy6bbLJJKcYCAFowGQdYUyh0gGXMmzcvV1xxRc4555zsu+++WXfddbPWWmuld+/eOeOMM5ZZ/plnnsmXvvSlBvf17t07v//975Mkf/3rX3PQQQdlhx12yG677ZaLLrooSXLUUUclSb7whS9k++23z6RJk5Ikd911V/bff/984QtfyLHHHpvXX3+9fr3du3fP7bffnn333Tf77rvvCl/DoEGDcu+999bfHjNmTAYPHtxgmZkzZ+bkk0/OLrvskt69e+eWW25JkjzxxBO59tpr89BDD2X77bfPgQceWP8zr7/+er785S9n++23z9e//vXU1NTUP/brX/86/fv3T69evXL00Udn6tSp9Y9NmTIlQ4YMyfbbb59vf/vb+eCDD1Y4OwDQPGQcGQfWJAodYBmTJk3KBx98kL59+zbJ+i644IJ85StfyXPPPZfHHnss+++/f5LktttuS5L84Q9/yKRJk7L99ttn/Pjxufbaa3PllVdm4sSJ2XHHHXP66ac3WN/48ePzq1/9Kg8++OAKn/PAAw/Mgw8+mNra2kydOjULFizI5z//+frHly5dmhNPPDHdu3fPE088kZtvvjk333xzfve73+VLX/pSTjjhhOy///6ZNGlS7rvvvvqfGzduXC666KJMnDgxixcvzo033pgkmTZtWk4//fR873vfy8SJE/OlL30pw4cPz6JFi7Jo0aJ885vfzKBBg/Lss8+mX79+efTRR5vkvQUAGk/GkXFgTaLQAZYxd+7cbLDBBqmurm6S9VVXV2f69OmpqalJmzZtst12261w2TvuuCPHH398ttxyy1RXV2f48OH5xz/+0WAP1vHHH5/1118/rVu3XuF6Nt5442y++eb5/e9/n3vvvXeZPVeTJ09OTU1NTjrppLRq1SrdunXLYYcdttIAlSQHHXRQNt9887Ru3Tr9+vXLP/7xjyTJgw8+mD333DO777571lprrRx77LF5//33M2nSpPzlL3/J4sWL89WvfjVrrbVW+vXrl2222WbVbxwA0KRknBWTcaB4muY3GbBGWX/99fP2229nyZIlTRJ4LrjgglxxxRXZf//907Vr15x00knZe++9l7vsG2+8kQsvvDAjR46sv6+uri4zZ86sPz+8c+fOjXrewYMH5957782kSZNy22235ZVXXql/7PXXX8+sWbPSq1ev+vtqa2sb3F6ejh071v95nXXWycKFC5Mks2bNSpcuXeofq6ysTOfOnTNz5sxUVVWlU6dOqaioqH/835cFAEpDxlkxGQeKR6EDLGP77bfP2muvnfHjx6dfv36rXH6dddbJ+++/X3+7tra2wXnXm222WX7yk59k6dKlefTRR3PKKafkmWeeafDh/5HOnTtn+PDhDc7p/r+W93PLs+++++b8889Pz549s8kmmzQIO507d07Xrl1XeFhwY5/jIxtttFGDCxTW1dVlxowZ9SFn5syZqaurq1/vG2+8kW7duq3WcwAA/xkZR8aBNYlTroBltGvXLqecckrOP//8jB8/Pu+9914WL16c3/72t/mf//mfZZbffPPN88EHH+Q3v/lNFi9enJ/+9KdZtGhR/eNjx45NTU1NKisrs9566yVJqqqq0r59+1RWVubVV1+tX/bLX/5yrrvuuvzzn/9M8uHFCx966KGP9TrWXXfd3HzzzbnggguWeWzbbbdN27Ztc9111+X9999PbW1tXnzxxfz1r39NknTo0CGvv/56li5d2qjn2n///fPb3/62wXnnrVq1yvbbb5/tttsu1dXVueWWW7JkyZI8+uijmTx58sd6TQDAxyfjyDiwJnGEDrBcxxxzTDp06JCrr7463/nOd9KmTZv07Nkzw4cPX2bZdu3aZcSIEfn+97+f2traHHfccdl4443rH//d736Xiy++OO+//366dOmSSy+9NGuvvXaSZPjw4TniiCOyZMmS/OxnP0vfvn2zYMGCnHbaaXn99dfTrl277LbbbvUXGVxdKzqPu6qqKj/96U8zcuTI7LPPPlm0aFE233zzfPvb306S9OvXL/fdd1923nnndO3atcG3SSzPFltskR//+Mf54Q9/mJkzZ6ZHjx655ppr0qpVqyTJqFGj8oMf/CCXXXZZ9txzzya7GCMAsHpkHBkH1hQVdXV1deUeAgAAAIDGc8oVAAAAQMEodAAAAAAKRqEDAAAAUDAKHQAAAICCUegAAAAAFIxCBwAAAKBgFDoAAAAABaPQAQAAACgYhQ4AAABAwfx/ji7cxfsST2YAAAAASUVORK5CYII=\n",
"text/plain": [
"<Figure size 1152x576 with 2 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plot_scores(mnist_raw_results_long)"
]
},
{
"cell_type": "code",
"execution_count": 47,
"id": "40775f52",
"metadata": {},
"outputs": [],
"source": [
"pca_mnist = PCA(n_components=32).fit_transform(raw_mnist)"
]
},
{
"cell_type": "code",
"execution_count": 48,
"id": "9a2d1651",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"CPU times: user 2min 32s, sys: 9.29 s, total: 2min 41s\n",
"Wall time: 2min 5s\n"
]
}
],
"source": [
"%%time\n",
"km_pca_labels = cluster.KMeans(n_clusters=10).fit_predict(pca_mnist)\n",
"cl_pca_labels = cluster.AgglomerativeClustering(n_clusters=10, linkage=\"complete\").fit_predict(pca_mnist)\n",
"sl_pca_labels = cluster.AgglomerativeClustering(n_clusters=80, linkage=\"single\").fit_predict(pca_mnist)\n",
"db_pca_labels = cluster.DBSCAN(eps=600.0).fit_predict(pca_mnist)\n",
"hd_pca_labels = hdbscan.HDBSCAN(min_samples=10, min_cluster_size=100).fit_predict(pca_mnist)"
]
},
{
"cell_type": "code",
"execution_count": 49,
"id": "445b7754",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"ARI: 0.3540\n",
"AMI: 0.4748\n",
"Silhouette: 0.0560\n",
"ARI: 0.1154\n",
"AMI: 0.3349\n",
"Silhouette: 0.0342\n",
"ARI: 0.0000\n",
"AMI: 0.0000\n",
"Silhouette: 0.1333\n",
"Pct clustered: 99.78%\n",
"ARI: 0.1220\n",
"AMI: 0.3098\n",
"Silhouette: -0.1781\n",
"Pct clustered: 26.87%\n",
"ARI: 0.9938\n",
"AMI: 0.9881\n",
"Silhouette: 0.2167\n",
"Pct clustered: 14.54%\n"
]
}
],
"source": [
"mnist_pca_results = pd.DataFrame(\n",
" [\n",
" eval_clusters(km_pca_labels, mnist.target[:35000], raw_mnist, cluster_method=\"K-Means\"),\n",
" eval_clusters(cl_pca_labels, mnist.target[:35000], raw_mnist, cluster_method=\"Complete\\nLinkage\"),\n",
" eval_clusters(sl_pca_labels, mnist.target[:35000], raw_mnist, cluster_method=\"Single\\nLinkage\"),\n",
" eval_clusters(db_pca_labels, mnist.target[:35000], raw_mnist, cluster_method=\"DBSCAN\"),\n",
" eval_clusters(hd_pca_labels, mnist.target[:35000], raw_mnist, cluster_method=\"HDBSCAN\"),\n",
" ]\n",
")\n",
"mnist_pca_results_long = mnist_pca_results.melt([\"Method\", \"Pct Clustered\"], var_name=\"Score Type\", value_name=\"Score\")\n",
"mnist_pca_results_long[\"Dim Reduction\"] = \"PCA\""
]
},
{
"cell_type": "code",
"execution_count": 50,
"id": "e5959d6d",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAABREAAAI0CAYAAACKxG4UAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAAsTAAALEwEAmpwYAABSgUlEQVR4nO3debhVddk//vcZBJRBBRFBUBQTCWcphywVQVFAcE7UyhTFsdRKy3IqB54eS0XNIXMIS0MUFDWNtEzDESuLHEIUBwblqAgow+H8/vDr+XUeYAkIex/g9bouL9lrffZa99oLzr7Pe00VdXV1dQEAAAAAWILKchcAAAAAADRuQkQAAAAAoJAQEQAAAAAoJEQEAAAAAAoJEQEAAACAQkJEAAAAAKCQEBEAAAAAKCREBBqtX/ziF+natWu6du2aV155ZbFj7rrrrvoxn/y39dZbZ6+99sqZZ56ZF154YbHvGzZsWLp27Zphw4atzE0AAGhgWfubo446aonLeuONN7LVVlvVj/2/ljQdAJaHEBFolOrq6nLnnXemoqIiSTJixIjC8VtttVVOOeWUnHLKKTnyyCOzwQYbZMyYMTn00EPz7LPPlqJkAIBCy9rfVFdX5+mnn15i2DhixIjU1dWlurp6hdcKAP+XEBFolB577LG88cYbOfDAA7PBBhvk7rvvzrx585Y4vlu3bjn11FNz6qmn5vvf/35GjBiRww8/PPPmzcvll19eusIBAJZgWfubPffcM8niw8ba2trcdddd2WabbdKmTZuVVTIA1BMiAo3SJ83yoYcemv79++fdd9/N2LFjl2kZhxxySJLkn//85wqvDwBgWS1rf7PFFltkhx12yKhRozJ//vwG8/70pz9l+vTpOeyww1ZqzQDwCSEi0Oi88847efjhh9O5c+fsuOOOOeigg5Ikd9xxx3ItzyU+AEC5LW9/c+ihh6ampiZ//OMfG0wfMWJE1llnney///4rrWYA+G9CRKDRueuuuzJ//vz65nrLLbdM9+7d8+STT+a1115b6uX87ne/S5LstNNOK6VOAICltbz9zf77758WLVo0uKR52rRpefTRR9O3b9+0aNFipdcOAIkQEWhk6urqMmLEiFRWVmbgwIH10w888MD6eYvz73//O8OGDcuwYcNyySWX5OCDD86IESOy4YYb5qyzzipR9QAAi1re/iZJ1l57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AABotObOnZtXX301zZq1SJs27VJVVd3g5DJWbXV1damtXZA5c2bn1VdfTefOnZcYJC5ViKi5BgBWZ++//34eeeSRTJs2Le3atctee+2Vddddt9xlAQCU3YwZM9KsWYu0arVeuUthJaioqEh19Vr1+3fGjBnp0KHDYsdWLu1C33///YwaNSrXXXddRo0alffff3+FFAsAUE7PPfdcevfundtvvz0vvvhibr/99vTu3TvPPfdcuUsDACi7mTM/yDrrNC93GZTAOus0z8yZHyxx/lKdifjcc8/lhBNOyOabb54OHTrkkUceycUXX5zrrrsuO+ywwworFgCg1C6++OKcd9556du3b/20+++/Pz/5yU8ycuTIMlYGAFB+tbW1qapaqviIVVxVVXXhPS+X6m+B5hoAWF29+uqr2W+//RpM23fffXPeeeeVqSIAgMbFPRDXDJ+2n5fqcuYlNdeTJ09e/soAABqBTTfdNPfdd1+Dab///e/TqVOnMlUEAACNz1KdifhJc92/f//6aZprAGB18IMf/CBDhgzJr3/963To0CFvvvlmXnvttVx77bXlLg0AABqNpQoRNdcAwOpqxx13zB/+8If86U9/yvTp07PXXntljz32yHrrrVfu0gAAoNFYqhBRcw0ArK6mTZuWZs2aZcCAAfXT3n///UybNi3t2rUrY2UAAI3f2us0TbOmjffBKx/NXZAP58z9zMvZZZcdkyQbbbRR7rjj7jRt2nSRMQMH9s3UqVPy2GNPpbq68X4my2uptkhzDQCsrk466aRcfPHFWXfddeunTZ06NT/84Q8zYsSIMlYGAND4NWtanf5nji53GUt072UDVkiI+ImpU6fmjjt+k6997ZgVtsxVxVI9WOWkk07K1KlTG0ybOnVqTjnllJVSFABAqbz66qvp2rVrg2ldu3bNK6+8UqaKAABojFq1apVWrdbNLbfclPfee7fc5ZTcUp2JqLkGAFZXrVu3zmuvvZZNN920ftprr73mti0AADTQtGmzHHnk0bn88svyy19en+9856ylfu/YsQ/lzjvvyMsvv5wFC+anY8dO2WefPjniiKPSpEmTBmMHDuybJLn99jtzww3XZuzYP6SmZkbatWuXAw44KEcf/fVUVFQsso5//vP53Hbbrfn73/+WmTPfT+vWbbLbbl/KsceekLZt2362jc9Snon4SXP93zTXAMDq4OCDD86pp56aRx55JP/5z3/y8MMP57TTTsuhhx5a7tIAAGhkDjnksHTs2DGjRo3M5MmvffobkvziF8Pywx+enVdfnZR99umTQw45LHV1dfnFL67Kt751chYsmL/Ie2prF+S0007OI488nF133S0HHDAwc+fOzTXXXJkbb7x+kfFjxozOCSd8M+PGPZ6dduqRww8flG7dPp977hmVY445MlOnTvnM275UZyJ+0lyffvrp6dSpUyZPnpwrrrhCcw0ArPKOP/74VFdXZ+jQoZk6dWo22mijHHrooTnmmDXvPjcAABSrrl4rJ510Wn7wg+/l6quvzNChlxWOf/75v+eWW25Ku3Yb5Ve/ujVt2myQJDnxxFNz1lln5vHH/5Lhw2/NN75xbIP3vf3229liiy1z5ZXXpFmzZkmSY489IYcdNjC3335bvvGNb6a6eq0kyeTJr+XSSy9K+/btc801v8yGG25Yv5xnnnkqp512Un7+8//91Fo/dduXZpDmGgBYXVVWVua4447LcccdV+5SAABYBfTs2SvbbLNt/vznR/K3vz2X7bffYYlj7733niTJMcccWx8gJkl1dXW+9a0zMm7c47nnnlGLhIhJcsYZ360PEJOPrxT+ylf2zP33j8lrr72WLl22SJLcddeILFiwIKef/t0GAWKS9OjxxXz5y3vksccezezZs9O8efPl3u6lChE11wDA6uatt95KZWVlNtpooyTJhx9+mGuvvTYvvfRSdthhhxx77LGpqqoqc5UAADRGp512egYPPiZXXvnz3HjjLYu9R2GSvPjiv5MkO+30hUXmbbLJptlwww3z1ltv5oMPPkjLli3r57Vo0SKdOm2yyHs23LBdkuSDD2bWT3v++X8kScaPfzYTJvxrkffU1NSktrY2r7/+Wrba6vPLsJUNFYaImmsAYHV1zjnnZNCgQfV9zoUXXpinn346vXv3zsiRIzNr1qycccYZZa4SAIDGaJtttkvPnr3y8MNjM3bsQ+nde9/Fjps9e1aSZIMNFv9gkzZtNsjUqVMza9b/DRFbLnb8Jzlcbe3C+mnvv/9+kuS2224trHnOnA8L53+awhBRcw0ArK5eeOGFfOlLX0qSzJkzJ/fff39uu+22bL311jnkkENy/PHH63MAAFiik046NY8++qf84hdXZc89ey52TPPmLZIkM2a8k44dOy0yf8aMd5IsOTRcGi1afLyOP/7x0fr1rQyFT2deXHN9+eWX56yzzso111yT++67b6UVBgCwMs2fPz/rrLNOkuT5559P8+bNs/XWWydJunTpknfffbec5QEA0Mh17NgpBx98aN5668387ne3L3bMlltuleTjS43/r9dfn5zp06enQ4eNG5yFuKy23nqbJMnf/vbcci9jaRSGiJprAGB11bFjxzz55JNJkocffjg777xz/byampqsvfba5SoNAIBVxDe/eXxatmyZW265MR9+uOjlwv37D0iS3HTTLxvkaLW1tRk27PIsXLiwfszyOuSQw1NdXZ3LL78skye/tsj8+fPn529/G/+Z1pF8yuXMnzTXO++8s+YaAFitnHLKKTn55JPTqVOnvPLKK/n1r39dP++Pf/xjttlmmzJWBwDAqmDdddfN17/+zVx11RWLnb/tttvlqKO+nuHDb8mgQYemZ8+906zZ2nniib9m4sT/ZLvtts9RR339M9XQufNmOeec83LRRRfkiCMOzS677JpNNtk0CxYsyLRpU/O3vz2X9ddfP3fccddnWk9hiKi5BgBWV7169cpdd92Vf//73/n85z+fTp3+/3vUbL755tl+++3LVxwAAKuMww47IiNHjsiUKW8tdv4pp3wrXbtulREj7sgDD9yXBQsWZOONO+aEE07KoEFHZ6211vrMNey3X9987nNb5je/GZ7x45/OU089kbXXXjsbbNA2PXvunV699vnM66ioq6urKxowefLkxTbXzz77bFq1apXPfe5zn7mIFWnGjFlZuLBwkwBghWrbtmWef3FauctoYJuu7TLtPy+Xu4x67bb4XN5++4OVsuzKyoq0abPybiDdmOhzACglPc7SWVl9TmPpcf71rwnp0GHTJc5fe52mada08By1svpo7oJ8OGduuctYZbz11mvp3v3zi533qXt5k002ySabbLLI9J122umzVwYAAADAKuvDOXOFdGuIwgerAAAAAAAIEQEAAACAQkJEAAAAAKBQ473zJQDASjRo0KBUVFQUjrnttttKVA0AADRuhSGi5hoAWF0deuih5S4BAABWGYUhouYaAFhdHXjggeUuAQAAVhmFIeKnNdfz589focUAAJTKqFGjPnXMwIEDV3odAACwKliueyLOmzcvt99+e2688cb8+c9/XtE1AQCsdGeffXY23XTTbLDBBqmrq1tkfkVFhRARAAD+n8IQ8ZVXXsk555yTF154IZ07d87QoUMzadKk/OQnP0m7du1y1llnlapOAIAV6uijj86DDz6Y5s2bZ+DAgenVq1eaNGlS7rIAAKBRKgwRL7roonTu3DlDhgzJmDFjctJJJ6VZs2YZOnRodtttt1LVCACwwp1zzjk5++yz85e//CWjRo3KxRdfnD333DMDBw5Mjx49yl0eAAA0KoUh4j//+c/85S9/SZMmTfKFL3whO+20Ux555JFstNFGpaoPAGClqaqqyp577pk999wzs2bNyjXXXJOvfe1r+dWvfpVddtml3OUBAECjURgizp8/v/6ynnXWWSctW7YUIAIAq5UPPvgg9913X0aNGpWampqcdNJJ6datW7nLAgCARqUwRJw3b16uuOKK+tcfffRRg9dJ8q1vfWvlVAYAsBI98sgjufvuuzN+/Pj07Nkz3/3ud7PTTjuVuywAAGiUCkPE/v37Z+rUqfWv+/bt2+A1AMCq6sQTT8xmm22W/v37p1mzZnnsscfy2GOPNRjjYCkAQLFWzatT1aRpuctYotp5czNz9oLPvJxddtmxwevKysq0bNkqW2yxRfr3H5g+ffZf7PtefXVS7rzzdxk//plMmzYtc+d+lPXWWy9bbrlV9tyzZ/bdd780bbr4z++mm36Z6667Jklyxx13ZdNNO3/m7fgsCkPESy65pPDNCxcuXKHFAACUysCBA1NRUZH33nuv3KUAAKyyqpo0zSsXHVzuMpZo83NGJisgRPzEsccenyRZsGBBJk9+LY8++qc8++wzeeGFf+fb3z6zwdgbb7w+N954fRYuXJitt94m++/fL+uss3ZqamoyfvyzufjiC3PXXSNy8823LbKeurq63Hvv6FRUVKSuri6jR9+d0047fYVtx/IoDBGX5MUXX8yoUaNy7733LnLEHgBgVXDppZcWzl+TDpa2bLV2mjVdrrZwpflo7oJ8MPPDcpcBANDA4MFDGrx++uknc9ppJ+WOO36Tww47Ih06dEiS3HzzjbnhhmvTrt1Gueiiodl6620WWdZjjz2a3/xm+GLX8+ST4/LWW2+mb9/+GTfur7n//ntz4omnZK211lrxG7WUlrpbrKmpyb333ptRo0blhRdeyE477ZRzzjlnZdYGAFBya+LB0mZNq9P/zNHlLqOB0UP3S9u2LctdRr0F8+bm3ffnlbsMAKCR+cIXds6mm3bOq69Oyr///a906NAhb731Vn75y+tSXV2dn/3synTpssVi37v77l/JF7+4y2LnjR59d5JkwICD0qrVuvntb4fnT396OL1777vStuXTfOrTmR9++OHcfffdeeyxx7LJJpukb9++eeutt3LFFVekTZs2paoTAGClcbC08amsbtKoLo3a/JyRSYSIAMCi6urqkiQVFRVJkvvuG50FCxakd+99lxggfqJJkyaLTJsxY0b+8pc/Z5NNNs22226X5s2b57e/HZ7Ro+9qvCHil770pVRUVOSggw7Kqaeemu7duydJfvvb35akOACAlcXBUgAAPqunnnoykye/loqKinTr9vkkyd///rckSY8eX1yuZd533z1ZsGBB+vbtnyTp0mWLdO26VZ599pm8/vrkdOq0yQqpfVkVhohdu3bNs88+m7///e/ZdNNN07Fjx6y77rqlqg0AYKVxsBQAgGV1ww3XJmn4YJW6urp89atHpn37j++H+M477yRJNtxww2Vefl1dXe655+5UVlZmv/361U/v2/eAvPji/+See0bl5JNPWwFbsuwKQ8Rf//rXefPNNzNq1Kj86le/yk9+8pPsvvvumTNnThYsWHFPtgEAKDUHSwEAWFY33nh9ko8vXW7ZsmW2226H9O8/IPvt17d+zP+9vHlZPPPMU3njjTeyyy67Nggh9923T4YN+3nuu+/enHDCiamuLv0DVj71wSobb7xxTj755Jx88sl55plnMnr06FRWVuaAAw7IwQcfnO9973ulqBMAYIVysBQAgGX1xBPjP3VM27Zt89prr2b69OnLvPxRo+5K8vGZh/9t3XXXy+67fyWPPPLHPPron9OzZ69lXvZnVbksg3v06JEf//jHefzxx/OjH/0oL7300sqqCwBgpfvkYOlDDz2Um2++OW3btq0/WPo///M/5S4PAIBV0HbbbZ/k47MKl8W7776bRx/9U5LkRz/6fnbZZccG/z3yyB+T/P9BY6l96pmIi9O0adP069cv/fr1+/TBAACrgB49eqRHjx754Q9/mD/84Q8ZNWpUuUsCAGAV1LfvgNxyy0155JE/ZtKkV7LZZpsvcey8efPqn9B8//33Zv78+dlqq2753Oe6Lnb8Y4/9OU8//WTeeuvNdOiw8Uqpf0mWK0QEAFhdOVgKAMBn0aFDhxx33Am59tqrc8YZp+Xii/+n/snN/23cuMczfPgtufrqj++zeM89o5Ik3/3u99O9+9aLXfZ1112Tm276ZUaPvjsnnnjKStuGxREiAgAAAMAK9I1vHJva2trceOP1OeaYo7LNNtulW7fPZ+21105NTU3+9rfxef31yfXh4rPPPpPXXns1XbpsscQAMUn69x+Ym2++Mffdd08GDx6S6urSRXtCRAAAAABYwY499vj07NkrI0eOyPjxz2TMmHsyb97crLvuevnc57bM0Ud/I3367J8kGT367iTJAQccWLjMDh065Atf2DlPPfVEHnvs0ey5Z8+Vvh2fECICAAAAsFxq583N5ueMLHcZS1Q7b+4KWc7SPJV5cTbbbPN85ztnfeq4Cy+8KBdeeNFSLfPKK69Zrlo+KyEiAAAAAMtl5uwFyewF5S6DEqgsdwEAAAAAQOMmRAQAAAAACgkRAQAAAIBCQkQAAAAAoJAQEQAAAAAoJEQEAAAAAAoJEQEAAABYorq6unKXQAl82n4WIgIAAACwWFVVVamtXVDuMiiB2toFqaqqWuJ8ISIAAAAAi9WqVcvMmTO73GVQAnPmzE6rVi2XOF+ICAAAAMBitWnTJh99NCszZ76XBQvmu7R5NVNXV5cFC+Zn5sz38tFHs9KmTZsljq0uYV0AAAAArEKaNm2azp07Z8aMGZkxY1pqa2vLXRIrWFVVVVq1apmNNuqcpk2bLnGcEBEAAACAJWratGk6dOiQDh3KXQnl5HJmAAAAAKCQEBEAAAAAKCREBAAAAAAKCREBAAAAgEJCRAAAAACgkBARAAAAAChUshBx0qRJOfzww7Pvvvvm8MMPz6uvvrrEsa+88kq22267DB06tFTlAQAsFz0OAABrgpKFiOedd14GDRqUBx98MIMGDcq555672HG1tbU577zz0qtXr1KVBgCw3PQ4AACsCUoSIs6YMSMTJkxIv379kiT9+vXLhAkTUlNTs8jY66+/PnvuuWc6d+5citIAAJabHgcAgDVFdSlWMmXKlLRr1y5VVVVJkqqqqmy44YaZMmVKWrduXT/uhRdeyGOPPZZbb70111xzzXKtq02bFiukZgBYFq1bNy93CYtobDW1bduy3CWscKXscRJ9Trmtjn+HAT5NY+snksZZk+8I1gQlCRGXxvz58/OjH/0ol1xySX0jvjxmzJiVhQvrVmBlAFCsbduWqamZXe4yGti4bYtGVVO71snbb3+wUpZdWVnRqMO1FdXjJCuvz/GLz9JZWX+HARorPc7SWVl9TmPvcVjzlCREbN++faZNm5ba2tpUVVWltrY206dPT/v27evHvP3225k8eXKOP/74JMnMmTNTV1eXWbNm5cc//nEpygQAWCZ6HAAA1hQlCRHbtGmTbt26ZcyYMRkwYEDGjBmTbt26NbjMp0OHDnnyySfrXw8bNixz5szJWWedVYoSAQCWmR4HAIA1Rcmeznz++edn+PDh2XfffTN8+PBccMEFSZLBgwfn+eefL1UZAAArlB4HAIA1QcnuidilS5eMGDFikek33HDDYsefeuqpK7skAIDPTI8DAMCaoGRnIgIAAAAAqyYhIgAAAABQSIgIAAAAABQSIgIAAAAAhYSIAAAAAEAhISIAAAAAUEiICAAAAAAUEiICAAAAAIWEiAAAAABAISEiAAAAAFBIiAgAAAAAFBIiAgAAAACFhIgAAAAAQCEhIgAAAABQSIgIAAAAABSqLncBq4qWrdZOs6aN6+P6aO6CfDDzw3KXAQAAAMBqrnGlYo1Ys6bV6X/m6HKX0cDoofulbduW5S6jgQXz5ubd9+eVuwwAAAAAViAh4iqssrpJXrno4HKX0cDm54xMIkQEAAAAWJ24JyIAAAAAUEiICAAAAAAUEiICAAAAAIWEiAAAAABAISEiAAAAAFBIiAgAAAAAFKoudwEAAEDjtP66TVLdpGm5y2hgwby5eff9eeUuAwDWOEJEAABgsaqbNM0rFx1c7jIa2PyckUmEiABQai5nBgAAAAAKCREBAAAAgEJCRAAAAACgkBARAAAAACgkRAQAAAAACgkRAQAAAIBCQkQAAAAAoJAQEQAAAAAoJEQEAAAAAAoJEQEAAACAQtXlLgAAAAAau9brr5Oq6qpyl9FA7YLa1Lw7p9xlAGsIISIAAAB8iqrqqkx5bly5y2ig/Q67lrsEYA3icmYAAAAAoJAQEQAAAAAoJEQEAAAAAAoJEQEAAACAQkJEAAAAAKCQEBEAAAAAKCREBAAAAAAKCREBAAAAgEJCRAAAAACgkBARAAAAACgkRAQAAAAACgkRAQAAAIBCQkQAAAAAoFB1uQsAAACA/7b++uukurqq3GUA8F+EiAAAADQq1dVVeXz86+Uuo4Ev7dip3CUAlJXLmQEAAACAQkJEAAAAAKCQEBEAAAAAKCREBAAAAAAKebAKAAA0Ai1brZ1mTbXnAEDjpEsBAIBGoFnT6vQ/c3S5y2jg3ssGlLsEAKCRcDkzAAAAAFBIiAgAAAAAFBIiAgAAAACFhIgAAAAAQCEhIgAAAABQSIgIAAAAABQSIgIAAAAAhYSIAAAAAEAhISIAAAAAUEiICAAAAAAUEiICAAAAAIWEiAAAAABAISEiAAAAAFBIiAgAAAAAFBIiAgAAAACFhIgAAAAAQCEhIgAAAABQSIgIAAAAABQSIgIAAAAAhYSIAAAAAEAhISIAAAAAUEiICAAAAAAUEiICAAAAAIWEiAAAAABAoepSrWjSpEk5++yz895772W99dbL0KFD07lz5wZjrr766tx///2pqqpKdXV1Tj/99Hz5y18uVYkAAMtMjwMAwJqgZCHieeedl0GDBmXAgAEZPXp0zj333Nx6660Nxmy77bb55je/mbXXXjsvvPBCjjrqqDz22GNp1qxZqcoEAFgmehwAANYEJbmcecaMGZkwYUL69euXJOnXr18mTJiQmpqaBuO+/OUvZ+21106SdO3aNXV1dXnvvfdKUSIAwDLT4wAAsKYoyZmIU6ZMSbt27VJVVZUkqaqqyoYbbpgpU6akdevWi33PqFGjsskmm2SjjTZapnW1adPiM9fLZ9O2bctylwBQcq1bNy93CYtobDWtjt8PpexxEn1Oua2Of4dXVfbFmmG99dYpdwmLWHfdxlfTyv730Nj6iaRx1uTnEmuCkl3OvCyeeuqpXHHFFfnVr361zO+dMWNWFi6sW+E1+YGw9N5++4NylwBQUm3btkxNzexyl9HAxm1bNKqa2rVeed8PlZUVq0y49ll6nESfU24ru8exH5aefnP117Zty7z33pxyl/F/tMn77zeumtbJyv33oMdZOiurz1mVehzWDCW5nLl9+/aZNm1aamtrkyS1tbWZPn162rdvv8jY5557Lt/97ndz9dVXZ/PNNy9FeQAAy0WPAwDAmqIkIWKbNm3SrVu3jBkzJkkyZsyYdOvWbZHLfP7xj3/k9NNPz5VXXpnu3buXojQAgOWmxwEAYE1RkhAxSc4///wMHz48++67b4YPH54LLrggSTJ48OA8//zzSZILLrggH330Uc4999wMGDAgAwYMyIsvvliqEgEAlpkeBwCANUHJ7onYpUuXjBgxYpHpN9xwQ/2fR44cWapyAABWCD0OAABrgpKdiQgAAAAArJqEiAAAAABAISEiAAAAAFBIiAgAAAAAFBIiAgAAAACFhIgAAAAAQCEhIgAAAABQSIgIAAAAABQSIgIAAAAAhYSIAAAAAEAhISIAAAAAUEiICAAAAAAUEiICAAAAAIWEiAAAAABAISEiAAAAAFBIiAgAAAAAFBIiAgAAAACFhIgAAAAAQCEhIgAAAABQSIgIAAAAABQSIgIAAAAAhYSIAAAAAEAhISIAAAAAUEiICAAAAAAUEiICAAAAAIWEiAAAAABAISEiAAAAAFBIiAgAAAAAFBIiAgAAAACFhIgAAAAAQKHqchcAwOql9frrpKq6qtxl1KtdUJuad+eUuwwAAIBVmhARgBWqqroqU54bV+4y6rXfYddylwAAALDKczkzAAAAAFDImYjwGa2/bpNUN2la7jIaWDBvbt59f165ywAAAABWE0JE+IyqmzTNKxcdXO4yGtj8nJFJhIgAAADAiiFEBFiFrb/+OqluRA8xAQAAYPUkRARYhVVXV+Xx8a+Xu4wGvrRjp3KXAAAAwArmwSoAAAAAQCEhIgAAAABQyOXMrHJatlo7zZr6qwsAAABQKpIYVjnNmlan/5mjy11GvXsvG1DuEgAAAABWKpczAwAAAACFhIgAAAAAQCEhIgAAAABQSIgIAAAAABQSIgIAAAAAhYSIAAAAAEAhISIAAAAAUEiICAAAAAAUEiICAAAAAIWEiAAAAABAISEiAAAAAFBIiAgAAAAAFBIiAgAAAACFhIgAAAAAQCEhIgAAAABQSIgIAAAAABQSIgIAAAAAhYSIAAAAAEAhISIAAAAAUEiICAAAAAAUEiICAAAAAIWEiAAAAABAISEiAAAAAFBIiAgAAAAAFBIiAgAAAACFhIgAAAAAQCEhIgAAAABQSIgIAAAAABQSIgIAAAAAhYSIAAAAAEAhISIAAAAAUEiICAAAAAAUEiICAAAAAIWEiAAAAABAISEiAAAAAFBIiAgAAAAAFBIiAgAAAACFhIgAAAAAQCEhIgAAAABQSIgIAAAAABQSIgIAAAAAhUoWIk6aNCmHH3549t133xx++OF59dVXFxlTW1ubCy64IL169Urv3r0zYsSIUpUHALBc9DgAAKwJShYinnfeeRk0aFAefPDBDBo0KOeee+4iY+69995Mnjw5Dz30UO64444MGzYsb7zxRqlKBABYZnocAADWBCUJEWfMmJEJEyakX79+SZJ+/fplwoQJqampaTDu/vvvz6GHHprKysq0bt06vXr1yu9///tSlAgAsMz0OAAArCmqS7GSKVOmpF27dqmqqkqSVFVVZcMNN8yUKVPSunXrBuM6dOhQ/7p9+/aZOnXqMq2rsrJixRS9GBuuv/ZKW/byql63bblLWMTK3AefaGz7Yk3dDzQOTZtUlbuERVQ1aVruEhooxb+Htaob322GK6tL8jW/1FbWfijnz7tS9jiJPqfc1sQeJ2l8+yHR56wp9DhLZ2X/e9DjLJ2VsR/8rKOxaXz/8j6j9ddvvtKWfeMP91lpy15em5xybblLWESbNi1W+joa275YU/cDjUOPrTt8+qAS27D7juUuoYFS/HvYqkvj+yW7befNyl1CA34ufXb6nPJaE3ucpPHth8TPkzWFHmfprOx/D3qcpePnEmuCkhxSaN++faZNm5ba2tokH99cfPr06Wnfvv0i4956663611OmTMlGG21UihIBAJaZHgcAgDVFSULENm3apFu3bhkzZkySZMyYMenWrVuDy3ySpE+fPhkxYkQWLlyYmpqajB07Nvvuu28pSgQAWGZ6HAAA1hQVdXV1daVY0cSJE3P22Wdn5syZadWqVYYOHZrNN988gwcPzmmnnZZtttkmtbW1ufDCC/P4448nSQYPHpzDDz+8FOUBACwXPQ4AAGuCkoWIAAAAAMCqqfE9ZgkAAAAAaFSEiAAAAABAISEiAAAAAFBIiAgAAAAAFBIiAgAAAACFhIgl0LNnz7z00ktJkg8//DDHHntsvv/976e2trZ+zNFHH51tttkm7733Xv20J554Il27ds3QoUNLXfJqY/78+bniiiuy7777pm/fvtlvv/1y6aWXZv78+St93f+934vcfPPNmTFjxkqvZ1XwwAMPZODAgRkwYED69OmTM888M0kyYMCAfPTRR59p2Uu7P9YkPXv2TJ8+fXLAAQekd+/eOfHEEzN+/PgkyV133ZUePXpkwIABGTBgQA488MCMGzcuSVJXV5crr7wyffv2zQEHHJD9998/N910U/1y33777Xzve9/L3nvvnX79+mXgwIH53e9+12Dd3/rWt7Lrrrsu8m+xa9euOe644xaZNnv27JXxEZTF4v4uHnTQQXnyySczbNiw7Lrrrhk4cGD23XffHHzwwbn11lsbfF907do1/fv3r/938vOf/7x+3hNPPJFDDz00AwYMyH777Zevfe1rWbhwYZKP99stt9ySvn37Zv/990+fPn3ywx/+MDNnzqx//5///Od07do1Y8eObVDf2WefnW222SZvvfVWg2nDhw9foZ8NqyZ9Tvnoc1Yt+pzS0eOUhx4HVn/V5S5gTfLBBx/k+OOPT/fu3XPOOeekoqKiwfwtttgi9913X4488sgkyd13353u3buXo9TVxve///3MnTs3I0eOTIsWLTJ//vzcddddmTdvXtZaa61yl5ckufXWW7PbbrulTZs25S6lrKZPn54LLrggd999d9q3b5+6urq88MILSZLRo0eXubrV15VXXpktt9wySfLQQw/l+OOPz4033pgk2W233XLllVcm+bjxuvDCC/PAAw/k97//fcaNG5e77rorTZs2zbx58zJ58uQkHwcIRx11VA466KBceumlqayszMyZM3P//ffXr/O9997LuHHjstlmm+WRRx7JPvvs06CmV155JU899VS++MUvluIjaHQGDhyYs846K0ny+uuv57vf/W4mT56cH/7wh/Vjbr/99jRv3jwffvhh+vbtm549e6Z79+457bTTcuutt2arrbZKkkyYMKH+u+byyy/P008/nVtuuSUbbLBBFi5cmLFjx+b9999Pq1atkiQjR47MLrvskjvvvDO9evVqUFfbtm0zbNiwXHLJJaX4GFgF6XNKT5+z6tDnlJ4ep/HR48CqT4hYIjNmzMj3vve97LXXXvnWt7612DEHHnhgRo8enSOPPDKzZ8/O+PHjs//++2fevHn1Y2644YY8+OCDqa2tTbt27fLjH/84bdu2zbhx43L55Zdn7ty5qa2tzZAhQ9K3b98kHx/933rrrfO3v/0t06dPz3777ZfvfOc7SZKrrroqY8aMSdOmTVNRUZFbb721/gftqu7VV1/N2LFj8+c//zktWrRIkqy11lo5/PDDU1tbm6FDh+Yvf/lLkuTLX/5yvvOd76Sqqipnn312mjRpkldffTWvv/56evfunb322ivDhg3L1KlT8/Wvfz1f//rXk3x8tK1v374ZP358pk+fnq9//es56qijFqll+vTp+clPfpK33norc+fOTd++fTNkyJD84he/yPTp03PaaaeladOmueyyy7LJJpvk5z//eZ5++unMnz8/W265Zc4///w0b968dB9eGbzzzjuprq7OeuutlySpqKhIt27dknx8VHL8+PFp3rx5evbsmQEDBuSvf/1r3n777Xzzm9+s/8yfeeaZXHDBBUmSnXfeOX/84x9z3XXX1TeQn1jS/ljT7bPPPvnHP/6RG2+8MXvuuWeDeR988EHWXXfdJMm0adOy/vrrp0mTJkmSJk2aZIsttkiSjBkzJuutt15OOOGE+ve2atUqX/3qV+tf33PPPdljjz2y++67Z+TIkYs02Keeemp+9rOf5fbbb18Zm7lK6dSpUy666KIccMAB+da3vpWWLVs2mP/hhx9mwYIFadmyZWbPnp05c+Zkgw02qJ//+c9/Pkkye/bs3HTTTRk1alT9/MrKygaf/bvvvptx48blgQceSN++ffP222+nbdu29fO/+tWvZvjw4fnPf/5Tv7/hE/qc0tPnrFr0OeWlx2l89DiwahIilsi3v/3tDBo0aImNdfLxD9ImTZpk4sSJ+dvf/pZevXqlurq6vrkePXp0Jk+enN/97neprKzMb37zm1x66aW57LLL8vnPfz6/+c1vUlVVlXfeeScHHXRQdt999/ovxClTpuS2227L7Nmz06tXrxxyyCFZf/31c+ONN2bcuHFp1qxZZs2alWbNmpXk8yiFCRMmZNNNN63/DP7bHXfckX//+9+56667kiSDBw/OHXfckUGDBiVJXn755dxyyy2pra1Nz54988EHH2T48OF5++2306dPnxxyyCH1ze4777yT2267Le+8804GDhyYHj161B8h+8RZZ52Vk046KV/4whcyb968fOMb38g222yTE088MSNGjGhwpPSaa65Jy5Ytc+eddyZJfvrTn+b666/P6aefvtI+q8Zgq622yrbbbps999wzO++8c3bccccMGDAg66+//iJjP/roo9xxxx1544030r9//xx44IFZa621csYZZ+RnP/tZevTokT/84Q/59a9/vdh1LWl/fOlLX1rZm9nobbfddnn44Yez55575q9//WsGDBiQOXPmpKamJtddd12SZP/9989vf/vb7LPPPunRo0d22WWX9O3bN9XV1fnXv/6VbbfdtnAdd911V84666zssMMOufjiizNt2rS0a9eufv4+++yT2267LWPHjl3kSPHq4pNfqD/x6quvLnFsly5d0qxZs0yaNKn+s/3kF5bXXnstRxxxRDbffPMkyWGHHZZ99tknX/ziF7Pjjjumf//+ad++fSZOnJgmTZrUj1uc0aNHZ6+99soGG2yQ3r17Z9SoURk8eHD9/HXWWScnnHBCfv7zn+fqq6/+LJvPakifU3r6nFWLPqf89DiloceB1ZsQsUT22GOP3H///TniiCOy4YYbLnHcwIEDc/fdd+fvf/97fvSjH+XBBx+sn/fwww/nn//8Zw488MAkSW1tbf2R55qamvzgBz/Ia6+9lqqqqrz//vuZNGlStt9++yRJnz59UllZmZYtW6ZLly6ZPHlyOnXqlM022yzf/e538+Uvfzl77rln/fJWd+PGjcuBBx5Yf5TxoIMOytixY+ub6169etXP22yzzbLHHnuksrIy7dq1S6tWrTJ16tR06dIlSXLIIYckSTbYYIPsueeeeeqppxo013PmzMlTTz2Vmpqa+mmzZ8/OxIkTF9vMPfzww5k1a1b9vp83b94izfrqqLKyMtdcc01eeumlPP300xk7dmxuvPHG3HvvvYuM3X///ZMkHTt2rN8f8+fPT7NmzdKjR48kSe/evRd7tsmy7o81TV1dXf2f//tSnyeffDJnnHFGHnzwwWy44Ya577778re//S3PPvtsrr322txzzz258cYbG7x/cSZMmJCZM2dml112SUVFRXr37p3Ro0fn+OOPbzDuzDPPzEUXXZSePXuu+I1sBP77F+rk459By+KTS31mzpyZr3/96/W/jJx77rk55phj8sQTT+TRRx/Nddddl5EjR37qfkk+/sXn+9//fpKPzxg755xzGjTYyccN/E033ZS///3vy1Qvqz99TuOiz2l89Dnlp8cpDT0OrN6EiCVy3HHH5ZFHHsnRRx+dIUOG5Oabb06S9O/fv8ENdvfbb7/07ds3G2ywQbbccssGzXVdXV1OPPHE+mbuv51//vnp2bNnrrrqqlRUVGTffffN3Llz6+f/99Ggqqqq1NbWpqqqKr/73e8yfvz4PPHEEznooIPyy1/+crVp5D7/+c/ntddey/vvv7/IUfq6urpF7tX036//7+e1uM9vcRa33IULF6aioiJ33nnnUt2fqK6uLuedd1523XXXTx27Otpyyy2z5ZZb5sgjj8z++++fp556apExS9of//ezX5xl3R9rmueffz6f+9znFpm+8847Z8GCBXn55Zez7bbbprq6Oj169EiPHj1y8MEH50tf+lLee++9bL311hk5cuQSl3/nnXdm5syZ2XvvvZN8/Mtj8+bNF2mwd91112ywwQa55557VuwGroJeeeWVfPTRR4s9wt6qVavstttuefzxx+vPaOjUqVM6deqUQw89tP6757DDDsvcuXMzadKkbLbZZoss5/nnn8/EiRNzzjnn1E+bPn16xo8fnx133LF+2lprrZVTTz01l112WTp06LAStpZVlT6n9PQ5qyZ9TvnocRofPQ6sejyduYROOOGEHHjggbn22mtzww03ZPTo0Ys8oat58+b53ve+V3/D2f/Ws2fP/OY3v8n777+f5OMvpk9uyPzBBx9k4403TkVFRR5//PG89tprn1rPrFmzUlNTky9+8Ys57bTTsuWWW+bll19eAVvaOHTu3Dk9e/bMueeem1mzZiX5+KyGW265JTvvvHPuvvvuzJ8/P/Pnz8+oUaOWu5m9++67k3x8lsSjjz66yI2SW7RokZ122inXX399/bQpU6bk7bffTvLxPv/ggw/q5/Xs2TM333xz/VP6Zs2alYkTJy5XbauSadOm5bnnnqt/PXXq1NTU1KRjx45L9f7NN988c+bMybPPPpskGTt2bIMnsn3i0/bHmmzs2LH57W9/m2OOOWaReS+++GJmz56djh075p///GfeeOON+nn/+te/su6666ZVq1bp27dvampq8stf/rL+yPDMmTNzyy23ZN68ebnvvvty55135uGHH87DDz+cxx57LBUVFXnmmWcWWeeZZ56ZYcOGrbwNXgW88cYbOeecc3LEEUcs9gyqefPm5bnnnkvnzp0ze/bsPPbYYw0+9zfeeCMdO3ZM8+bN841vfCPnnntu/VNS6+rqcs8992Ty5MkZOXJkjjvuuPr98vDDD+fUU09d7C9L/fv3z3vvvbfYX3xZs+lzSkufs2rR55SXHqfx0ePAqsmZiCU2ZMiQ1NXV5eijj86tt97a4B4Zn/jkEob/a+DAgXnvvffqb65cV1eXI444IltttVXOPPPMXHDBBbnhhhvStWvXdO3a9VNrmTVrVk499dR89NFHqaury+c///lFbv67qrv00ktz9dVX5+CDD85aa62VhQsXZo899sjpp5+eN998s/6Sqd133z2HHXbYcq2jffv2GTRoUN5+++2ccMIJi/3s//d//zeXXHJJ+vfvn+Tjhvqiiy5K27Zt87WvfS0/+MEP0qxZs1x22WU5/vjjc9VVV+WQQw5JRUVFKioqcsopp9RfVrS6WrBgQYYNG5Y333wzzZo1y8KFC/Ptb3+7/qbJn6ZJkya57LLLcv7556dZs2bZZZddssEGGyxyk+akeH+saU477bQ0adIkH374Ybp06ZLrr78+22+/fV555ZX6+wXV1dWlrq4ul1xySVq3bp1//etfueCCCzJr1qw0adIka6+9dq6++upUVlZmnXXWya9//ev89Kc/zd57753mzZunuro6gwYNytixY7PJJpukc+fODWro169fRo4cWX+J1ie22WabdO/evUEzvyYYNWpUxo0blw8//DAtWrRI//79c/TRRzcY89WvfjWVlZWZO3duvvjFL+aII47IvHnzctttt+XHP/5xmjZtmtra2vTv3z+9e/dOkpxxxhm5+eab65dVV1eXHj16ZNddd83999+f3/72tw3W0a9fvxxwwAENjtwnH1+Sd/rpp6/xN+ln8fQ5paXPWXXoc0pPj9P46HFg1VdRtzQ3EQAWq2fPnrn22msXeSoe5TFr1qz6I5lPPPFEzj777Dz88MOprHTSNQAsK31O46LPAaDcnIkIrDYeeuih3Hzzzamrq6s/Yq+xBgBWB/ocAMrNmYgAAAAAQCGHrljj9OzZMy+99FKDaYMHD87kyZM/9b1HH310HnnkkZVV2hrFfgCAFct3a+NhXwCwOnI5MyS54YYbyl0CsR8AYEXz3dp42BcArOqciQhpeLT46KOPztChQ3PEEUdk7733zv/+7/8u9j333XdfDj744EydOjX33ntvDj300AwcODADBw7MuHHj6sc988wz6d+/f/r375+f/OQn2WuvverX9corr+S4447LwQcfnAMOOCAjR45c+RvbiNkPALBi+W5tPOwLAFZ1zkSExZgyZUpuu+22zJ49O7169cohhxySzp0718+/4YYb8vjjj+fmm29Oy5Yts/vuu6dfv36pqKjIK6+8km984xt59NFHM2/evJxxxhn52c9+lh49euQPf/hDfv3rXydJFixYkO985zv56U9/mi5dumTWrFk5+OCDs/3226dLly5l2vLGxX4AgBXLd2vjYV8AsKoRIsJi9OnTJ5WVlWnZsmW6dOmSyZMn1zd1w4YNS4cOHXL99denSZMmSZLXX389Z555ZqZNm5bq6uq88847efvttzNjxow0a9YsPXr0SJL07t07rVq1SpK8+uqrmThxYs4444z69c6fPz+vvPKKpu7/sR8AYMXy3dp42BcArGqEiLAYTZs2rf9zVVVVamtr619vv/32efzxx/PWW2/VN3pnnHFGzj777PTq1SsLFy7Mdtttl7lz5yZJKioqFruOurq6rL/++hk9evTK25BVnP0AACuW79bGw74AYFXjnoiwjL785S/n/PPPz/HHH5+XX345SfLBBx+kY8eOSZI777wz8+bNS5JsvvnmmTNnTp599tkkydixYzNz5swkyWabbZZmzZpl1KhR9cueOHFiZs2aVcKtWXXZDwCwYvlubTzsCwAaI2ciskY65phjUlVVVf969uzZy/T+XXfdNZdccklOPPHEXHHFFfn+97+fk046Ke3atcsXv/jFrLfeekmSJk2a5LLLLsv555+fZs2aZZdddskGG2yQli1bprq6Otdee20uvvji3HjjjVm4cGHatGmTyy+/fAVuaeNmPwDAiuW7tfGwLwBY3VTU1dXVlbsIWJ3NmjUrLVq0SJI88cQTOfvss/Pwww+nstKJwKVkPwDAiuW7tfGwLwAoBWciwkr20EMP5eabb05dXV39kWINXenZDwCwYvlubTzsCwBKwZmIAAAAAEAhh6cAAAAAgEJCRAAAAACgkBARAAAAACgkRASWy7Bhw/Kd73yn3GWU1NFHH50RI0askGWdffbZ+fnPf75ClgUArDh6nM9GjwOw+hIiAkt077335qCDDsoOO+yQ3XffPccdd1yeeeaZFbb8N954I127ds2CBQtW+DIPPPDABtNramqy9dZbp2fPnku1nDXxFwgAWFPocfQ4ACw7ISKwWDfddFMuvvjiDBkyJI8//ngeeeSRDBo0KH/84x/LXVq9osZ8zpw5eemll+pfjxkzJhtvvHEpygIAGjE9DgAsHyEisIgPPvggV155Zc4999zss88+WWeddbLWWmulZ8+eOeussxYZ/+STT+YrX/lKg2k9e/bMX//61yTJP/7xjxx00EHZcccds9tuu+WSSy5Jkhx11FFJki984QvZYYcd8txzzyVJ7rzzzuy33375whe+kGOPPTZvvvlm/XK7du2a2267Lfvss0/22WefJW7DgAEDcvfdd9e/HjVqVAYOHNhgzLRp03Lqqadml112Sc+ePXPrrbcmSR599NFcd911eeCBB7LDDjvkgAMOqH/Pm2++ma9+9avZYYcd8s1vfjM1NTX18/74xz+mb9++6dGjR44++uhMnDixft6ECRNy4IEHZocddsi3v/3tzJ07d4m1AwArhx5HjwPA8hMiAot47rnnMnfu3PTu3XuFLO+iiy7K1772tYwfPz5/+MMfst9++yVJhg8fniR5+umn89xzz2WHHXbI2LFjc9111+Wqq67KuHHjstNOO+XMM89ssLyxY8fmd7/7Xe6///4lrvOAAw7I/fffn9ra2kycODGzZ8/OdtttVz9/4cKFOfHEE9O1a9c8+uijueWWW3LLLbfkL3/5S77yla/khBNOyH777Zfnnnsu99xzT/37xowZk0suuSTjxo3L/Pnz86tf/SpJMmnSpJx55pn5wQ9+kHHjxuUrX/lKhgwZknnz5mXevHk5+eSTM2DAgDz11FPp06dPHnrooRXy2QIAS0+Po8cBYPkJEYFFvPfee1l//fVTXV29QpZXXV2dyZMnp6amJs2bN8/222+/xLG33357jj/++HTp0iXV1dUZMmRI/v3vfzc4Un/88cdnvfXWS7NmzZa4nI022iibbbZZ/vrXv+buu+9e5Aj9888/n5qampxyyilp0qRJOnXqlMMOO6ywaU+Sgw46KJtttlmaNWuWPn365N///neS5P77788ee+yRL33pS1lrrbVy7LHH5qOPPspzzz2Xv//975k/f36+/vWvZ6211kqfPn2yzTbbfPoHBwCsUHqcJdPjAPBpVsy3J7BaWW+99fLuu+9mwYIFK6TJvuiii3LllVdmv/32S8eOHXPKKadkr732WuzYt956KxdffHGGDh1aP62uri7Tpk2rv99P+/btl2q9AwcOzN13353nnnsuw4cPz2uvvVY/780338z06dPTo0eP+mm1tbUNXi9O27Zt6/+89tprZ86cOUmS6dOnp0OHDvXzKisr0759+0ybNi1VVVVp165dKioq6uf/91gAoDT0OEumxwHg0wgRgUXssMMOadq0acaOHZs+ffp86vi11147H330Uf3r2traBvfR6dy5c372s59l4cKFeeihh3LaaaflySefbNBwfqJ9+/YZMmRIg3v0/F+Le9/i7LPPPrnwwgvTvXv3bLzxxg0a7Pbt26djx45LvORmadfxiQ033LDBTc7r6uoyZcqU+sZ62rRpqaurq1/uW2+9lU6dOi3TOgCAz0aPo8cBYPm5nBlYRMuWLXPaaaflwgsvzNixY/Phhx9m/vz5+fOf/5z/+Z//WWT8Zpttlrlz5+ZPf/pT5s+fn1/84heZN29e/fzRo0enpqYmlZWVadWqVZKkqqoqrVu3TmVlZV5//fX6sV/96ldz/fXX5+WXX07y8Q3QH3jggeXajnXWWSe33HJLLrrookXmbbvttmnRokWuv/76fPTRR6mtrc1LL72Uf/zjH0mSNm3a5M0338zChQuXal377bdf/vznPze4j1CTJk2yww47ZPvtt091dXVuvfXWLFiwIA899FCef/755domAGD56XH0OAAsP2ciAot1zDHHpE2bNrnmmmvyne98J82bN0/37t0zZMiQRca2bNky5513Xn74wx+mtrY2xx13XDbaaKP6+X/5y19y6aWX5qOPPkqHDh3y85//PE2bNk2SDBkyJEcccUQWLFiQX/7yl+ndu3dmz56dM844I2+++WZatmyZ3Xbbrf5G5ctqSfflqaqqyi9+8YsMHTo0e++9d+bNm5fNNtss3/72t5Mkffr0yT333JOdd945HTt2bPAUxMXZfPPN89Of/jQ//vGPM23atHTr1i3XXnttmjRpkiQZNmxYfvSjH+Xyyy/PHnvsscJu6A4ALBs9jh4HgOVTUVdXV1fuIgAAAACAxsvlzAAAAABAISEiAAAAAFBIiAgAAAAAFBIiAgAAAACFhIgAAAAAQCEhIgAAAABQSIgIAAAAABQSIgIAAAAAhYSIAAAAAECh/w8Ufo1cheJSdQAAAABJRU5ErkJggg==\n",
"text/plain": [
"<Figure size 1152x576 with 2 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plot_scores(pd.concat([mnist_raw_results_long, mnist_pca_results_long]))"
]
},
{
"cell_type": "code",
"execution_count": 51,
"id": "6819fe0e",
"metadata": {},
"outputs": [],
"source": [
"umap_mnist = umap.UMAP(n_neighbors=10, n_components=4, min_dist=1e-8, random_state=42, n_epochs=500).fit_transform(raw_mnist)"
]
},
{
"cell_type": "code",
"execution_count": 52,
"id": "534eda9d",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"CPU times: user 53.9 s, sys: 2.86 s, total: 56.8 s\n",
"Wall time: 52.1 s\n"
]
}
],
"source": [
"%%time\n",
"km_umap_labels = cluster.KMeans(n_clusters=10).fit_predict(umap_mnist)\n",
"cl_umap_labels = cluster.AgglomerativeClustering(n_clusters=10, linkage=\"complete\").fit_predict(umap_mnist)\n",
"sl_umap_labels = cluster.AgglomerativeClustering(n_clusters=80, linkage=\"single\").fit_predict(umap_mnist)\n",
"db_umap_labels = cluster.DBSCAN(eps=0.1).fit_predict(umap_mnist)\n",
"hd_umap_labels = hdbscan.HDBSCAN(min_samples=10, min_cluster_size=100).fit_predict(umap_mnist)"
]
},
{
"cell_type": "code",
"execution_count": 53,
"id": "47c49ab2",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"ARI: 0.7662\n",
"AMI: 0.8372\n",
"Silhouette: 0.0333\n",
"ARI: 0.7760\n",
"AMI: 0.8448\n",
"Silhouette: 0.0298\n",
"ARI: 0.7067\n",
"AMI: 0.8428\n",
"Silhouette: -0.0535\n",
"Pct clustered: 99.73%\n",
"ARI: 0.7940\n",
"AMI: 0.8110\n",
"Silhouette: -0.1874\n",
"Pct clustered: 92.53%\n",
"ARI: 0.9180\n",
"AMI: 0.9059\n",
"Silhouette: 0.0451\n",
"Pct clustered: 99.25%\n"
]
}
],
"source": [
"mnist_umap_results = pd.DataFrame(\n",
" [\n",
" eval_clusters(km_umap_labels, mnist.target[:35000], raw_mnist, cluster_method=\"K-Means\"),\n",
" eval_clusters(cl_umap_labels, mnist.target[:35000], raw_mnist, cluster_method=\"Complete\\nLinkage\"),\n",
" eval_clusters(sl_umap_labels, mnist.target[:35000], raw_mnist, cluster_method=\"Single\\nLinkage\"),\n",
" eval_clusters(db_umap_labels, mnist.target[:35000], raw_mnist, cluster_method=\"DBSCAN\"),\n",
" eval_clusters(hd_umap_labels, mnist.target[:35000], raw_mnist, cluster_method=\"HDBSCAN\"),\n",
" ]\n",
")\n",
"mnist_umap_results_long = mnist_umap_results.melt([\"Method\", \"Pct Clustered\"], var_name=\"Score Type\", value_name=\"Score\")\n",
"mnist_umap_results_long[\"Dim Reduction\"] = \"UMAP\""
]
},
{
"cell_type": "code",
"execution_count": 54,
"id": "5f9b8adc",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAABREAAAI0CAYAAACKxG4UAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAAsTAAALEwEAmpwYAABZfklEQVR4nO3deZiVdd0/8PcsLMoigojghmIioSZKblkpoaCA4J6klSmKppZaj5rlVmo8PeaCuWYuaaWI7JRGmqShplhppva4oYKgIMqiLMP8/vBxfhFwA8o5M8DrdV1el3Pu7/nenzNfZs5n3udeKmpra2sDAAAAALAClfVdAAAAAADQsAkRAQAAAIBCQkQAAAAAoJAQEQAAAAAoJEQEAAAAAAoJEQEAAACAQkJEAAAAAKCQEBFosK677rp07tw5nTt3zksvvbTcMffee2/dmI/+23HHHbPffvvlrLPOynPPPbfc5w0dOjSdO3fO0KFDS/kSAACWsrr9zTHHHLPCuV5//fXssMMOdWP/04oeB4CPQ4gINEi1tbW55557UlFRkSQZNmxY4fgddtghp556ak499dR85StfySabbJKxY8fmiCOOyJNPPlmOkgEACq1uf1NdXZ2//OUvKwwbhw0bltra2lRXV6/xWgHgPwkRgQbp4Ycfzuuvv55DDjkkm2yySUaMGJGFCxeucHyXLl1y2mmn5bTTTsu5556bYcOG5aijjsrChQtz5ZVXlq9wAIAVWN3+Zt99902y/LCxpqYm9957b3baaae0adOmVCUDQB0hItAgfdQsH3HEEenXr1/eeeedTJgwYbXmOPzww5MkzzzzzBqvDwBgda1uf7PddtulW7duGTlyZBYtWrTUtj/+8Y+ZMWNGjjzyyJLWDAAfESICDc7bb7+dBx54IB07dsyuu+6aQw89NEly1113faz5nOIDANS3j9vfHHHEEZk1a1b+8Ic/LPX4sGHDsuGGG+aggw4qWc0A8O+EiECDc++992bRokV1zfX222+frl275rHHHsurr766yvPcfffdSZLddtutJHUCAKyqj9vfHHTQQWnevPlSpzRPnz49EydOTJ8+fdK8efOS1w4AiRARaGBqa2szbNiwVFZWZsCAAXWPH3LIIXXbluef//xnhg4dmqFDh+ayyy7LYYcdlmHDhmXTTTfN2WefXabqAQCW9XH7myTZYIMN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1PixY0flsst+lEaNGuXzn/9iNt20XV5//bWMHj0yDz88MT//+W3ZbLP2a/R7kaxiiKi5BgDWVZMnT87mm2+exx9/fKnHKyoq9DkAAOux6upGOeWU0/O97/1XfvazqzNkyOWF459++m+57bZb0q7dZvnFL25PmzabJElOPvm0nH32WXnkkT/ljjtuz9e/fvxSz3vrrbey3Xbb5+qrr03Tpk2TJMcff1KOPHJAfvObO/P1r3+jLnicMuXV/PjHl6R9+/a59tqfZ9NNN62b54knHs/pp5+SK674n5XW+nGsUoiouQYA1lW//OUv67sEAAAaqB49emannXbOQw89mL/+9anssku3FY4dM2Z0kuS4446vCxCTpLq6Ot/61pmZNOmRjB49cpkQMUnOPPO7dQFikrRu3Tpf+MK+GT9+bF599dV06rRdkuTee4dl8eLFOeOM7y4VICZJ9+675/Of/2Iefnhi5s2bt8bvZbJKIaLmGgBYl7377rt58MEHM3369LRr1y777bdfNtpoo/ouCwCABuD008/IoEHH5eqrr8jNN9+23GsUJsnzz/8zSbLbbp9dZttWW22dTTfdNFOnvpE5c+akRYsWdduaN2+eLbfcapnnbLppuyTJnDnv1T329NN/T5JMnvxknn32H8s8Z9asWampqclrr72aHXb49Gq8ypVbpRAx0VwDAOump556KieddFK23XbbdOjQIQ8++GAuvfTS3HDDDenWbcWfNAMAsH7YaafPpEePnnnggQmZMOH+7L9/r+WOmzdvbpJkk02Wf2OTNm02yZtvvpm5c/8zRGyx3PFVVVVJkpqaJXWPvfvuu0mSO++8vbDm+fPfL9z+caxSiKi5BgDWVZdeemkuuOCC9OnTp+6x8ePH50c/+lGGDx9ej5UBANBQnHLKaZk48Y+57rprsu++PZY7plmz5kmSmTPfzhZbbLnM9pkz306y4tBwVTRv/uE+/vCHiXX7K5fKVRn0UXP9m9/8Jj/96U/zm9/8JhdeeGF+9KMflbo+AICSeuWVV3LggQcu9VivXr0yZcqUeqoIAICGZosttsxhhx2RqVPfyN13/2a5Y7bffockH55q/J9ee21KZsyYkQ4dNl/qKMTVteOOOyVJ/vrXpz72HB/XKoWImmsAYF219dZbZ9y4cUs99rvf/S5bbrnsp8cAAKy/vvGNE9OiRYvcdtvNef/9ZU8X7tevf5Lkllt+nnfeeafu8ZqamgwdemWWLFlSN+bjOvzwo1JdXZ0rr7w8U6a8usz2RYsW5a9/nfyJ9rEiq3Q680fNdb9+/eoe01wDAOuC733vexk8eHB++ctfpkOHDnnjjTfy6quv5vrrr6/v0gAAaEA22mijfO1r38g111y13O077/yZHHPM13LHHbdl4MAj0qPHl9K06QZ59NE/58UX/zef+cwuOeaYr32iGjp23CbnnXdBLrnkohx99BHZc8+9stVWW2fx4sWZPv3N/PWvT2XjjTfOXXfd+4n2szyrFCJqrgGAddWuu+6a3//+9/njH/+YGTNmZL/99ssXv/jFtGrVqr5LAwBoUD5YsDhjLv9kR9KV0gcLFpd8H0ceeXSGDx+WadOmLnf7qad+K50775Bhw+7Kb387LosXL87mm2+Rk046JQMHHptGjRp94hoOPLBPPvWp7fOrX92RyZP/kscffzQbbLBBNtmkbXr0+FJ69jzgE+9jeVYpRNRcAwDrqunTp6dp06bp3///N8Tvvvtupk+fnnbt2tVjZQAADcv78xfk/fkL6ruMknv00RWfDty4ceOMGDG28Pn7799rhXdw/k8jR45b4bZBgwZn0KDBy9223XafyvnnX7RK+1hTVumaiNOnT0+S9O/fP4MGDUr//v1TUVFR9zgAwNrqlFNOyZtvvrnUY2+++WZOPfXUeqoIAAAanlUKETXXAMC66pVXXknnzp2Xeqxz58556aWX6qkiAABoeFb57syaawBgXdS6deu8+urSd7Z79dVXXbYFAAD+zSqFiJprAGBdddhhh+W0007Lgw8+mP/93//NAw88kNNPPz1HHHFEfZcGAAANxirdWOWj5vqMM87IlltumSlTpuSqq67SXAMAa70TTzwx1dXVGTJkSN58881sttlmOeKII3LcccfVd2kAANBgrFKIqLkGANZVlZWVOeGEE3LCCSfUdykAANBgrVKIqLkGANY1U6dOTWVlZTbbbLMkyfvvv5/rr78+L7zwQrp165bjjz8+VVVV9VwlAAA0DIXXRJw6depSd2V+//33c8UVV+Tkk0/OjTfemJqampIXCABQCuedd16efvrpuq8vvvjijBs3Lh07dszw4cNz1VVX1WN1AADQsBSGiJprAGBd9dxzz+Vzn/tckmT+/PkZP358rrzyypx99tm59tprM27cuHquEAAAGo7CEFFzDQCsqxYtWpQNN9wwSfL000+nWbNm2XHHHZMknTp1yjvvvFOf5QEAQINSGCJqrgGAddUWW2yRxx57LEnywAMPZI899qjbNmvWrGywwQb1VRoAADQ4hTdW+ai53mOPPTTXAMA65dRTT803v/nNbLnllnnppZfyy1/+sm7bH/7wh+y00071WB0AADQshSGi5hoAWFf17Nkz9957b/75z3/m05/+dLbccsu6bdtuu2122WWX+isOAAAamMIQUXMNAKzLttpqq2y11VbLPL7bbrvVQzUAAA1by2bVqWrcpL7LWKGahQvy3rzF9V3GOqswREw01wAAAAAkVY2b5KVLDqvvMlZo2/OGJ2sgRNxzz12X+rqysjItWrTMdtttl379BqR374OW+7xXXnk599xzdyZPfiLTp0/PggUfpFWrVtl++x2y77490qvXgWnSZPkh7C23/Dw33HBtkuSuu+7N1lt3/MSvY01baYgIAAAAAOub448/MUmyePHiTJnyaiZO/GOefPKJPPfcP/Ptb5+11Nibb74xN998Y5YsWZIdd9wpBx3UNxtuuEFmzZqVyZOfzKWXXpx77x2WW2+9c5n91NbWZsyYUamoqEhtbW1GjRqR008/oyyvcXUIEQEAAADgPwwaNHipr//yl8dy+umn5K67fpUjjzw6HTp0SJLceuvNuemm69Ou3Wa55JIh2XHHZe8h8vDDE/OrX92x3P089tikTJ36Rvr06ZdJk/6c8ePH5OSTT02jRo3W/Iv6BCrruwAAAAAAaOg++9k9svXWHVNbW5t//vMfSZKpU6fm5z+/IdXV1fnpT69eboCYJPvs84VceeU1y902atSIJEn//oemV68DM3v27Pzxjw+U5kV8Ao5EBADWSwMHDkxFRUXhmDvvXPZ0EwAA1l+1tbVJUtdHjhs3KosXL87++/dKp07bFT63cePGyzw2c+bM/OlPD2WrrbbOzjt/Js2aNcuvf31HRo26N/vv32vNv4BPoDBE1FwDAOuqI444or5LAABgLfL4449lypRXU1FRkS5dPp0k+dvf/pok6d59948157hxo7N48eL06dMvSdKp03bp3HmHPPnkE3nttSnZcstlb3ZcXwpDRM01ALCuOuSQQ+q7BAAAGrCbbro+ydI3Vqmtrc2Xv/yVtG//4fUQ33777STJpptuutrz19bWZvToEamsrMyBB/ate7xPn4Pz/PP/ndGjR+ab3zx9DbySNaMwRFxZc71o0aI1WgwAQLmMHDlypWMGDBhQ8joAAGiYbr75xiQfnrrcokWLfOYz3dKvX/8ceGCfujH/eXrz6njiicfz+uuvZ88991oqhOzVq3eGDr0i48aNyUknnZzq6oZxg5WPdU3EhQsX5je/+U1uvvnmPPTQQ2u6JgCAkjvnnHOy9dZbZ5NNNqlr/v5dRUWFEBEAYD326KOTVzqmbdu2efXVVzJjxozVnn/kyHuTfHjk4b/baKNW2WefL+TBB/+QiRMfSo8ePVd77lIoDBFfeumlnHfeeXnuuefSsWPHDBkyJC+//HJ+9KMfpV27djn77LPLVScAwBp17LHH5r777kuzZs0yYMCA9OzZc7kXuwYAgBX5zGd2yRNP/CVPPPF4Dj54wCo/75133snEiX9MkvzgB+fmBz84d7njRo68d+0IES+55JJ07NgxgwcPztixY3PKKaekadOmGTJkSPbee+9y1QgAsMadd955Oeecc/KnP/0pI0eOzKWXXpp99903AwYMSPfu3eu7PAAA1gJ9+vTPbbfdkgcf/ENefvmlbLPNtiscu3DhwroPrcePH5NFixZlhx265FOf6rzc8Q8//FD+8pfHMnXqG+nQYfOS1L86CkPEZ555Jn/605/SuHHjfPazn81uu+2WBx98MJtttlm56gMAKJmqqqrsu+++2XfffTN37txce+21+epXv5pf/OIX2XPPPeu7PAAAGrgOHTrkhBNOyvXX/yxnnnl6Lr30v+vu3PzvJk16JHfccVt+9rMPr7M4evTIJMl3v3tuunbdcblz33DDtbnllp9n1KgROfnkU0v2GlZVYYi4aNGiuoR0ww03TIsWLQSIAMA6Zc6cORk3blxGjhyZWbNm5ZRTTkmXLl3quywAANYSX//68ampqcnNN9+Y4447Jjvt9Jl06fLpbLDBBpk1a1b++tfJee21KXXh4pNPPpFXX30lnTptt8IAMUn69RuQW2+9OePGjc6gQYNTXf2xbm2yxhTufeHChbnqqqvqvv7ggw+W+jpJvvWtb5WmMgCAEnrwwQczYsSITJ48OT169Mh3v/vd7LbbbvVdFgBAg1WzcEG2PW94fZexQjULF9Tbvo8//sT06NEzw4cPy+TJT2Ts2NFZuHBBNtqoVT71qe1z7LFfT+/eByVJRo0akSQ5+OBDCufs0KFDPvvZPfL444/m4YcnZt99e5T8dRQpDBH79euXN998s+7rPn36LPU1AMDa6uSTT84222yTfv36pWnTpnn44Yfz8MMPLzXGh6UAAP/fe/MWJ/MW13cZJbcqd2Venm222Tbf+c7Kb0J88cWX5OKLL1mlOa+++tqPVUspFIaIl112WeGTlyxZskaLAQAolwEDBqSioiKzZ8+u71IAAKDB+1gnUz///PMZOXJkxowZs8wn9gAAa4Mf//jHhdvXpw9LW7TcIE2blO4aOx8sWJw5771fsvkBACi9Ve4WZ82alTFjxmTkyJF57rnnsttuu+W8884rZW0AAGW3Pn5Y2rRJdfqdNapk848acmDatm1RsvkBACi9ld6d+YEHHsiIESPy8MMPZ6uttkqfPn0yderUXHXVVWnTpk256gQAKBkflpZWZXXjvHTJYSXdR0O+yDsAwLqgMET83Oc+l4qKihx66KE57bTT0rVr1yTJr3/967IUBwBQKj4sBQCAVVcYInbu3DlPPvlk/va3v2XrrbfOFltskY022qhctQEAlIwPSwEAYNVVFm385S9/md///vf53Oc+l1/84hf53Oc+l8GDB2f+/PlZvHjdv6U3ALDu6ty5c+bMmZO//e1vefrpp/Puu+/Wd0kAANBgFYaISbL55pvnm9/8Zu6///7ceuutadu2bSorK3PwwQfnv//7v8tRIwDAGufDUgAAWHUrDRH/Xffu3fPDH/4wjzzySH7wgx/khRdeKFVdAAAl58NSAABYNYXXRFyRJk2apG/fvunbt++argcAoF5079493bt3z/e///38/ve/z8iRI+u7JAAAaDA+VogIALCu8mEpAAAsa7VOZwYAAAAA1j9CRAAAAACgkNOZAQAAAFipDZs3SpNGjeu7jBVasGhh5s9dVN9lrLOEiAAAAACsVJNGjXPkXSfXdxkrdPdR12V+PlmI+OSTT+Sb3zwx3brtluuuu2m5Y6ZOnZpDD+2bzTZrn5EjxyVJxo4dnR/96MIkSbduu+a6636+wucedli/1NbWJkkefXTyCmu55Zaf54Ybrk2S3HXXvdl6647LHffv+/5Io0aNsskmbdOt22459tivZZtttl3hflaV05kBAAAAYA2oqqrOU09NzquvvrLc7aNHj0htbW2qqoqP66utrc2YMaNS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RxyR/v3758ADD8xXv/rVLFmyJMmH63bbbbelT58+Oeigg9K7d+98//vfz3vvvVf3/IceeiidO3fOhAkTlqrvnHPOyU477ZSpU6cu9dgdd9yxRr83rJ30OfVHn7N20eeUjx6nfuhxYN1XXd8FrE/mzJmTE088MV27ds15552XioqKpbZvt912GTduXL7yla8kSUaMGJGuXbvWR6nrjHPPPTcLFizI8OHD07x58yxatCj33ntvFi5cmEaNGtV3eUmS22+/PXvvvXfatGlT36XUqxkzZuSiiy7KiBEj0r59+9TW1ua5555LkowaNaqeq1t3XX311dl+++2TJPfff39OPPHE3HzzzUmSvffeO1dffXWSDxuviy++OL/97W/zu9/9LpMmTcq9996bJk2aZOHChZkyZUqSDwOEY445Joceemh+/OMfp7KyMu+9917Gjx9ft8/Zs2dn0qRJ2WabbfLggw/mgAMOWKqml156KY8//nh23333cnwLGpwBAwbk7LPPTpK89tpr+e53v5spU6bk+9//ft2Y3/zmN2nWrFnef//99OnTJz169EjXrl1z+umn5/bbb88OO+yQJHn22Wfr3muuvPLK/OUvf8ltt92WTTbZJEuWLMmECRPy7rvvpmXLlkmS4cOHZ88998w999yTnj17LlVX27ZtM3To0Fx22WXl+DawFtLnlJ8+Z+2hzyk/PU7Do8eBtZ8QsUxmzpyZ//qv/8p+++2Xb33rW8sdc8ghh2TUqFH5yle+knnz5mXy5Mk56KCDsnDhwroxN910U+67777U1NSkXbt2+eEPf5i2bdtm0qRJufLKK7NgwYLU1NRk8ODB6dOnT5IPP/3fcccd89e//jUzZszIgQcemO985ztJkmuuuSZjx45NkyZNUlFRkdtvv73uF+3a7pVXXsmECRPy0EMPpXnz5kmSRo0a5aijjkpNTU2GDBmSP/3pT0mSz3/+8/nOd76TqqqqnHPOOWncuHFeeeWVvPbaa9l///2z3377ZejQoXnzzTfzta99LV/72teSfPhpW58+fTJ58uTMmDEjX/va13LMMccsU8uMGTPyox/9KFOnTs2CBQvSp0+fDB48ONddd11mzJiR008/PU2aNMnll1+erbbaKldccUX+8pe/ZNGiRdl+++1z4YUXplmzZuX75tWDt99+O9XV1WnVqlWSpKKiIl26dEny4aeSkydPTrNmzdKjR4/0798/f/7zn/PWW2/lG9/4Rt33/IknnshFF12UJNljjz3yhz/8ITfccENdA/mRFa3H+u6AAw7I3//+99x8883Zd999l9o2Z86cbLTRRkmS6dOnZ+ONN07jxo2TJI0bN852222XJBk7dmxatWqVk046qe65LVu2zJe//OW6r0ePHp0vfvGL2WeffTJ8+PBlGuzTTjstP/3pT/Ob3/ymFC9zrbLlllvmkksuycEHH5xvfetbadGixVLb33///SxevDgtWrTIvHnzMn/+/GyyySZ12z/96U8nSebNm5dbbrklI0eOrNteWVm51Pf+nXfeyaRJk/Lb3/42ffr0yVtvvZW2bdvWbf/yl7+cO+64I//7v/9bt97wEX1O+elz1i76nPqlx2l49DiwdhIilsm3v/3tDBw4cIWNdfLhL9LGjRvnxRdfzF//+tf07Nkz1dXVdc31qFGjMmXKlNx9992prKzMr371q/z4xz/O5Zdfnk9/+tP51a9+laqqqrz99ts59NBDs88++9S9IU6bNi133nln5s2bl549e+bwww/PxhtvnJtvvjmTJk1K06ZNM3fu3DRt2rQs349yePbZZ7P11lvXfQ/+3V133ZV//vOfuffee5MkgwYNyl133ZWBAwcmSf71r3/ltttuS01NTXr06JE5c+bkjjvuyFtvvZXevXvn8MMPr2t233777dx55515++23M2DAgHTv3r3uE7KPnH322TnllFPy2c9+NgsXLszXv/717LTTTjn55JMzbNiwpT4pvfbaa9OiRYvcc889SZKf/OQnufHGG3PGGWeU7HvVEOywww7Zeeeds++++2aPPfbIrrvumv79+2fjjTdeZuwHH3yQu+66K6+//nr69euXQw45JI0aNcqZZ56Zn/70p+nevXt+//vf55e//OVy97Wi9fjc5z5X6pfZ4H3mM5/JAw88kH333Td//vOf079//8yfPz+zZs3KDTfckCQ56KCD8utf/zoHHHBAunfvnj333DN9+vRJdXV1/vGPf2TnnXcu3Me9996bs88+O926dcull16a6dOnp127dnXbDzjggNx5552ZMGHCMp8Urys++oP6I6+88soKx3bq1ClNmzbNyy+/XPe9/egPlldffTVHH310tt122yTJkUcemQMOOCC77757dt111/Tr1y/t27fPiy++mMaNG9eNW55Ro0Zlv/32yyabbJL9998/I0eOzKBBg+q2b7jhhjnppJNyxRVX5Gc/+9knefmsg/Q55afPWbvoc+qfHqc89DiwbhMilskXv/jFjB8/PkcffXQ23XTTFY4bMGBARowYkb/97W/5wQ9+kPvuu69u2wMPPJBnnnkmhxxySJKkpqam7pPnWbNm5Xvf+15effXVVFVV5d13383LL7+cXXbZJUnSu3fvVFZWpkWLFunUqVOmTJmSLbfcMttss02++93v5vOf/3z23XffuvnWdZMmTcohhxxS9ynjoYcemgkTJtQ11z179qzbts022+SLX/xiKisr065du7Rs2TJvvvlmOnXqlCQ5/PDDkySbbLJJ9t133zz++ONLNdfz58/P448/nlmzZtU9Nm/evLz44ovLbeYeeOCBzJ07t27tFy5cuEyzvi6qrKzMtddemxdeeCF/+ctfMmHChNx8880ZM2bMMmMPOuigJMkWW2xRtx6LFi1K06ZN07179yTJ/vvvv9yjTVZ3PdY3tbW1df//76f6PPbYYznzzDNz3333ZdNNN824cePy17/+NU8++WSuv/76jB49OjfffPNSz1+eZ599Nu+991723HPPVFRUZP/998+oUaNy4oknLjXurLPOyiWXXJIePXqs+RfZAPz7H9TJh7+DVsdHp/q89957+drXvlb3x8j555+f4447Lo8++mgmTpyYG264IcOHD1/puiQf/uFz7rnnJvnwiLHzzjtvqQY7+bCBv+WWW/K3v/1ttepl3afPaVj0OQ2PPqf+6XHKQ48D6zYhYpmccMIJefDBB3Psscdm8ODBufXWW5Mk/fr1W+oCuwceeGD69OmTTTbZJNtvv/1SzXVtbW1OPvnkumbu31144YXp0aNHrrnmmlRUVKRXr15ZsGBB3fZ//zSoqqoqNTU1qaqqyt13353Jkyfn0UcfzaGHHpqf//zn60wj9+lPfzqvvvpq3n333WU+pa+trV3mWk3//vV/fr+W9/1bnuXNu2TJklRUVOSee+5ZpesT1dbW5oILLshee+210rHrou233z7bb799vvKVr+Sggw7K448/vsyYFa3Hf37vl2d112N98/TTT+dTn/rUMo/vscceWbx4cf71r39l5513TnV1dbp3757u3bvnsMMOy+c+97nMnj07O+64Y4YPH77C+e+555689957+dKXvpTkwz8emzVrtkyDvddee2WTTTbJ6NGj1+wLXAu99NJL+eCDD5b7CXvLli2z995755FHHqk7omHLLbfMlltumSOOOKLuvefII4/MggUL8vLLL2ebbbZZZp6nn346L774Ys4777y6x2bMmJHJkydn1113rXusUaNGOe2003L55ZenQ4cOJXi1rK30OeWnz1k76XPqjx6n4dHjwNrH3ZnL6KSTTsohhxyS66+/PjfddFNGjRq1zB26mjVrlv/6r/+qu+Dsv+vRo0d+9atf5d13303y4RvTRxdknjNnTjbffPNUVFTkkUceyauvvrrSeubOnZtZs2Zl9913z+mnn57tt98+//rXv9bAK20YOnbsmB49euT888/P3Llzk3x4VMNtt92WPfbYIyNGjMiiRYuyaNGijBw58mM3syNGjEjy4VESEydOXOZCyc2bN89uu+2WG2+8se6xadOm5a233kry4ZrPmTOnbluPHj1y66231t2lb+7cuXnxxRc/Vm1rk+nTp+epp56q+/rNN9/MrFmzssUWW6zS87fddtvMnz8/Tz75ZJJkwoQJS92R7SMrW4/12YQJE/LrX/86xx133DLbnn/++cybNy9bbLFFnnnmmbz++ut12/7xj39ko402SsuWLdOnT5/MmjUrP//5z+s+GX7vvfdy2223ZeHChRk3blzuueeePPDAA3nggQfy8MMPp6KiIk888cQy+zzrrLMydOjQ0r3gtcDrr7+e8847L0cfffRyj6BauHBhnnrqqXTs2DHz5s3Lww8/vNT3/fXXX88WW2yRZs2a5etf/3rOP//8uruk1tbWZvTo0ZkyZUqGDx+eE044oW5dHnjggZx22mnL/WOpX79+mT179nL/8GX9ps8pL33O2kWfU7/0OA2PHgfWTo5ELLPBgwentrY2xx57bG6//falrpHxkY9OYfhPAwYMyOzZs+surlxbW5ujjz46O+ywQ84666xcdNFFuemmm9K5c+d07tx5pbXMnTs3p512Wj744IPU1tbm05/+9DIX/13b/fjHP87PfvazHHbYYWnUqFGWLFmSL37xiznjjDPyxhtv1J0ytc8+++TII4/8WPto3759Bg4cmLfeeisnnXTScr/3//M//5PLLrss/fr1S/JhQ33JJZekbdu2+epXv5rvfe97adq0aS6//PKceOKJueaaa3L44YenoqIiFRUVOfXUU+tOK1pXLV68OEOHDs0bb7yRpk2bZsmSJfn2t79dd9HklWncuHEuv/zyXHjhhWnatGn23HPPbLLJJstcpDkpXo/1zemnn57GjRvn/fffT6dOnXLjjTdml112yUsvvVR3vaDa2trU1tbmsssuS+vWrfOPf/wjF110UebOnZvGjRtngw02yM9+9rNUVlZmww03zC9/+cv85Cc/yZe+9KU0a9Ys1dXVGThwYCZMmJCtttoqHTt2XKqGvn37Zvjw4XWnaH1kp512SteuXZdq5tcHI0eOzKRJk/L++++nefPm6devX4499tilxnz5y19OZWVlFixYkN133z1HH310Fi5cmDvvvDM//OEP06RJk9TU1KRfv37Zf//9kyRnnnlmbr311rq5amtr07179+y1114ZP358fv3rXy+1j759++bggw9e6pP75MNT8s4444z1/iL9LJ8+p7z0OWsPfU756XEaHj0OrP0qalflIgLAcvXo0SPXX3/9MnfFo37MnTu37pPMRx99NOecc04eeOCBVFY66BoAVpc+p2HR5wBQ3xyJCKwz7r///tx6662pra2t+8ReYw0ArAv0OQDUN0ciAgAAAACFfHTFeqdHjx554YUXlnps0KBBmTJlykqfe+yxx+bBBx8sVWnrFesAAGuW99aGw1oAsC5yOjMkuemmm+q7BGIdAGBN897acFgLANZ2jkSELP1p8bHHHpshQ4bk6KOPzpe+9KX8z//8z3KfM27cuBx22GF58803M2bMmBxxxBEZMGBABgwYkEmTJtWNe+KJJ9KvX7/069cvP/rRj7LffvvV7eull17KCSeckMMOOywHH3xwhg8fXvoX24BZBwBYs7y3NhzWAoC1nSMRYTmmTZuWO++8M/PmzUvPnj1z+OGHp2PHjnXbb7rppjzyyCO59dZb06JFi+yzzz7p27dvKioq8tJLL+XrX/96Jk6cmIULF+bMM8/MT3/603Tv3j2///3v88tf/jJJsnjx4nznO9/JT37yk3Tq1Clz587NYYcdll122SWdOnWqp1fesFgHAFizvLc2HNYCgLWNEBGWo3fv3qmsrEyLFi3SqVOnTJkypa6pGzp0aDp06JAbb7wxjRs3TpK89tprOeusszJ9+vRUV1fn7bffzltvvZWZM2emadOm6d69e5Jk//33T8uWLZMkr7zySl588cWceeaZdftdtGhRXnrpJU3d/7EOALBmeW9tOKwFAGsbISIsR5MmTer+v6qqKjU1NXVf77LLLnnkkUcyderUukbvzDPPzDnnnJOePXtmyZIl+cxnPpMFCxYkSSoqKpa7j9ra2my88cYZNWpU6V7IWs46AMCa5b214bAWAKxtXBMRVtPnP//5XHjhhTnxxBPzr3/9K0kyZ86cbLHFFkmSe+65JwsXLkySbLvttpk/f36efPLJJMmECRPy3nvvJUm22WabNG3aNCNHjqyb+8UXX8zcuXPL+GrWXtYBANYs760Nh7UAoCFyJCLrpeOOOy5VVVV1X8+bN2+1nr/XXnvlsssuy8knn5yrrroq5557bk455ZS0a9cuu+++e1q1apUkady4cS6//PJceOGFadq0afbcc89ssskmadGiRaqrq3P99dfn0ksvzc0335wlS5akTZs2ufLKK9fgK23YrAMArFneWxsOawHAuqaitra2tr6LgHXZ3Llz07x58yTJo48+mnPOOScPPPBAKisdCFxO1gEA1izvrQ2HtQCgHByJCCV2//3359Zbb01tbW3dJ8UauvKzDgCwZnlvbTisBQDl4EhEAAAAAKCQj6cAAAAAgEJCRAAAAACgkBARAAAAACgkRAQ+lqFDh+Y73/lOfZdRVscee2yGDRu2RuY655xzcsUVV6yRuQCANUeP88nocQDWXUJEYIXGjBmTQw89NN26dcs+++yTE044IU888cQam//1119P586ds3jx4jU+5yGHHLLU47NmzcqOO+6YHj16rNI86+MfEACwvtDj6HEAWH1CRGC5brnlllx66aUZPHhwHnnkkTz44IMZOHBg/vCHP9R3aXWKGvP58+fnhRdeqPt67Nix2XzzzctRFgDQgOlxAODjESICy5gzZ06uvvrqnH/++TnggAOy4YYbplGjRunRo0fOPvvsZcY/9thj+cIXvrDUYz169Mif//znJMnf//73HHroodl1112z995757LLLkuSHHPMMUmSz372s+nWrVueeuqpJMk999yTAw88MJ/97Gdz/PHH54033qibt3PnzrnzzjtzwAEH5IADDljha+jfv39GjBhR9/XIkSMzYMCApcZMnz49p512Wvbcc8/06NEjt99+e5Jk4sSJueGGG/Lb3/423bp1y8EHH1z3nDfeeCNf/vKX061bt3zjG9/IrFmz6rb94Q9/SJ8+fdK9e/cce+yxefHFF+u2PfvssznkkEPSrVu3fPvb386CBQtWWDsAUBp6HD0OAB+fEBFYxlNPPZUFCxZk//33XyPzXXLJJfnqV7+ayZMn5/e//30OPPDAJMkdd9yRJPnLX/6Sp556Kt26dcuECRNyww035JprrsmkSZOy22675ayzzlpqvgkTJuTuu+/O+PHjV7jPgw8+OOPHj09NTU1efPHFzJs3L5/5zGfqti9ZsiQnn3xyOnfunIkTJ+a2227Lbbfdlj/96U/5whe+kJNOOikHHnhgnnrqqYwePbrueWPHjs1ll12WSZMmZdGiRfnFL36RJHn55Zdz1lln5Xvf+14mTZqUL3zhCxk8eHAWLlyYhQsX5pvf/Gb69++fxx9/PL17987999+/Rr63AMCq0+PocQD4+ISIwDJmz56djTfeONXV1Wtkvurq6kyZMiWzZs1Ks2bNsssuu6xw7G9+85uceOKJ6dSpU6qrqzN48OD885//XOqT+hNPPDGtWrVK06ZNVzjPZpttlm222SZ//vOfM2LEiGU+oX/66acza9asnHrqqWncuHG23HLLHHnkkYVNe5Iceuih2WabbdK0adP07t07//znP5Mk48ePzxe/+MV87nOfS6NGjXL88cfngw8+yFNPPZW//e1vWbRoUb72ta+lUaNG6d27d3baaaeVf+MAgDVKj7NiehwAVmbNvHsC65RWrVrlnXfeyeLFi9dIk33JJZfk6quvzoEHHpgtttgip556avbbb7/ljp06dWouvfTSDBkypO6x2traTJ8+ve56P+3bt1+l/Q4YMCAjRozIU089lTvuuCOvvvpq3bY33ngjM2bMSPfu3eseq6mpWerr5Wnbtm3d/2+wwQaZP39+kmTGjBnp0KFD3bbKysq0b98+06dPT1VVVdq1a5eKioq67f8+FgAoDz3OiulxAFgZISKwjG7duqVJkyaZMGFCevfuvdLxG2ywQT744IO6r2tqapa6jk7Hjh3z05/+NEuWLMn999+f008/PY899thSDedH2rdvn8GDBy91jZ7/tLznLc8BBxyQiy++OF27ds3mm2++VIPdvn37bLHFFis85WZV9/GRTTfddKmLnNfW1mbatGl1jfX06dNTW1tbN+/UqVOz5ZZbrtY+AIBPRo+jxwHg43M6M7CMFi1a5PTTT8/FF1+cCRMm5P3338+iRYvy0EMP5b//+7+XGb/NNttkwYIF+eMf/5hFixbluuuuy8KFC+u2jxo1KrNmzUplZWVatmyZJKmqqkrr1q1TWVmZ1157rW7sl7/85dx4443517/+leTDC6D/9re//VivY8MNN8xtt92WSy65ZJltO++8c5o3b54bb7wxH3zwQWpqavLCCy/k73//e5KkTZs2eeONN7JkyZJV2teBBx6Yhx56aKnrCDVu3DjdunXLLrvskurq6tx+++1ZvHhx7r///jz99NMf6zUBAB+fHkePA8DH50hEYLmOO+64tGnTJtdee22+853vpFmzZunatWsGDx68zNgWLVrkggsuyPe///3U1NTkhBNOyGabbVa3/U9/+lN+/OMf54MPPkiHDh1yxRVXpEmTJkmSwYMH5+ijj87ixYvz85//PPvvv3/mzZuXM888M2+88UZatGiRvffeu+5C5atrRdflqaqqynXXXZchQ4bkS1/6UhYuXJhtttkm3/72t5MkvXv3zujRo7PHHntkiy22WOouiMuz7bbb5ic/+Ul++MMfZvr06enSpUuuv/76NG7cOEkydOjQ/OAHP8iVV16ZL37xi2vsgu4AwOrR4+hxAPh4Kmpra2vruwgAAAAAoOFyOjMAAAAAUEiICAAAAAAUEiICAAAAAIWEiAAAAABAISEiAAAAAFBIiAgAAAAAFBIiAgAAAACFhIgAAAAAQCEhIgAAAABQ6P8B+CLB4xiDA1AAAAAASUVORK5CYII=\n",
"text/plain": [
"<Figure size 1152x576 with 2 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plot_scores(pd.concat([mnist_raw_results_long, mnist_pca_results_long, mnist_umap_results_long]))"
]
},
{
"cell_type": "code",
"execution_count": 55,
"id": "8e330b72",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAB5kAAAI0CAYAAAAnep4gAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAAsTAAALEwEAmpwYAAB0XklEQVR4nOzdd5hV5bk3/u8UilJEigiKPSJi11iieYMERCmCPSF6UhRr1GNMoobEkqMm5PxMjN0YNbZERKqAJShqNHai0YMajwpYKAqCCEoZ5veHL/NKKG6FPXtm+Hyuy0tmrWc/z71nMcy913fvtcqqq6urAwAAAAAAAAAFKC91AQAAAAAAAADUH0JmAAAAAAAAAAomZAYAAAAAAACgYEJmAAAAAAAAAAomZAYAAAAAAACgYEJmAAAAAAAAAAomZAYAAAAAWM+MGDEinTt3zogRI1bY3r1793Tv3r2gsQDA+kvIDNRp1157bTp37pzOnTvnjTfeWOWY5S90PvvfTjvtlAMPPDBnn312XnnllVU+7sorr0znzp1z5ZVXFvMpAACs0hftc4499tjVzvX2229nhx12qBn771a3HQBoWKqqqnLXXXfl2GOPzd57752uXbtmv/32S79+/TJ48OA8+OCDpS6xpJ566qk1ngsSpgNA4SpLXQDA6lRXV+fuu+9OWVlZqqurM2zYsJxzzjmrHb/DDjukR48eSZKPPvookyZNytixY/PAAw/kT3/6U/bcc8/aKh0AYI2+aJ9TWVmZZ555Jm+88Ua22WablfYPGzYs1dXVqayszNKlS4tZOgBQR1VVVeWkk07K3/72t7Rs2TLf+MY3summm2bevHmZNm1axo4dmzfeeCPf/OY3kyQ9e/bMrrvumk022aTElQMA9ZGQGaizHnvssbz99ts5/PDD8+ijj2bkyJE566yz0rhx41WO79KlS04//fQVtp1//vkZOnRoLr/88tx22221UTYAwOf6on1Ot27dMmHChFWG0VVVVRkxYkR23nnnzJo1KzNnzqyNpwAA1DFjx47N3/72t+ywww65/fbb06JFixX2f/zxx3nhhRdqvm7RosVKYwAACuVy2UCdNWzYsCTJUUcdlX79+uWDDz7IhAkTvtAcRx55ZJLkpZdeWuf1AQB8WV+0z9luu+2y++67Z9SoUVmyZMkK+x5++OHMmjUrRx99dFFrBgDqtn/84x9JksMOO2yV4fEGG2yQfffdt+brL3tp6CeffDLHHXdcdt999+yxxx458cQT8/rrr69y7KxZs3LRRRele/fu2WmnnbLvvvvmhz/84SrP0yy/rdlTTz210r633347nTt3zrnnnrvSvo8//jjXX399+vfvn9122y277757jjnmmIwdO3aFceeee27+4z/+I0ly1VVXrXDbtaeeeirHHXdczjvvvCTJeeedt8L+t99+u2aepUuX5o477sjRRx+dPfbYI7vuumsGDBiQ22+/PcuWLSv8GwkA9ZxPMgN10vvvv5+HHnooW221VfbYY480b948N998c4YOHZrevXt/4fkqK/1zBwDUDV+2zznqqKPys5/9LA8++GAOPvjgmu3Dhg3LhhtumN69e+eqq66qjacAANRBrVq1SpJMmTKlaGs8/PDDefDBB/P1r3893/rWt/L666/nkUceyYsvvphx48aldevWNWPfeuutDBw4MLNmzcq+++6bPn36ZPr06bnvvvvy8MMP58orr8yBBx64VvV8+OGH+e53v5vJkyena9euOeKII7Js2bI89thjOfvss/Paa6/lrLPOSpKaW6yNHDkye++9d/bee++aeTbbbLOacP7BBx/MN7/5zXTp0qVmf8uWLZMkS5Ysycknn5zHHnssW2+9dfr27ZsmTZrkqaeeyn/913/lhRdeyH//93+v1XMCgPpC6gLUSSNGjMiSJUty+OGHJ0m23377dO3aNU899VSmTp2aLbfcsqB57rrrriRxP2YAoM74sn1O7969c+mll2bYsGE1IfPMmTPz6KOP5vDDD0/z5s1r7TkAAHXPQQcdlD/+8Y+58847s2DBgvTs2TNdu3bNZpttts7WmDBhQm688cbst99+Ndsuu+yy/OEPf8jw4cMzaNCgmu0XXnhhZs2alf/8z//MKaecUrN94MCBOfbYY3PuuefmoYceSrNmzb50PZdeemkmT56cH//4xyusvWjRopx66qm5/vrrc/DBB6dLly7p0aNHWrRoURMy//st1zbffPMkyYMPPpgePXrU9Gqfdd111+Wxxx7Lsccem5/97GepqKhI8untS37xi19k+PDh6dWrV02gDQANmctlA3VOdXV1hg0blvLy8gwYMKBm+2GHHVazb1VefvnlXHnllbnyyivzq1/9KkcccUSGDRuWTTbZZKV7FwIAlMKX7XOSTy9x2bdv3zz++OM1l2y8++67U1VV5VLZAEB23HHH/OY3v0nbtm0zZsyYnH766enevXv22WefnHbaaXnooYfWeo3evXuvEDAnqelDXnzxxZptM2bMyGOPPZaOHTvmhBNOWGH8HnvskT59+mTu3Ln561//+qVr+eCDDzJmzJjstNNOKwTMSdKkSZP85Cc/SXV1de65554vvcZnLVu2LLfffnvatWuX8847ryZgTpKKioqce+65KSsrW2frAUBd55PMQJ3z5JNPZtq0aTnggAPSvn37mu19+/bNkCFDMnLkyJx55plp1KjRCo975ZVX8sorr6ywrWPHjrnjjjvSsWPHWqkdAGBNvmyfs9zRRx+dO++8M3fffXfOOOOMDB8+PJ07d84uu+xSW08BAKjDevfunZ49e+app57Kc889l5dffjnPPfdcJkyYkAkTJmTAgAH59a9/nbKysi81/0477bTStg4dOiRJ5s2bV7Nt8uTJST69styq+pp99903Y8aMyeTJk1d4490X8eKLL6aqqiplZWW58sorV9q/dOnSJMkbb7zxpeb/d2+++Wbmzp2brbbaKtdee+0qxzRt2nSdrQcAdZ2QGahzhg4dmiQrXZZo4403Tvfu3XP//fevdC/C5NNPAP36179OdXV1Zs+enbvvvjuXX355Tj755AwdOjQbbLBBrT0HAIBV+bJ9znJdu3ZN165dM2LEiOy2225555138otf/KLodQMA9UejRo1ywAEH5IADDkjy6aWc77///gwePDijRo1Kz549v/TlnJffm/izKis/PcW8bNmymm3z589PkrRr126V8yzfvnzclzF37twkn4bNn/0U9b9bsGDBl15jVetNmTIlV111VdHXA4C6TsgM1Clz5szJhAkTkiQ/+tGP8qMf/WiV4+66667VnnwtKytL27Ztc/LJJ2fevHm56aabcvnll+e8884rWt0AAJ9nXfQ5yaefZr7gggtywQUXpGnTpjn00EOLUi8A0DBUVFSkd+/e+de//pVrr702Tz75ZNHvGdyiRYskyfvvv7/K/e+9916SpHnz5jXbln+6uqqqaqXxqwqjl6/xve99r1bO+Sxfr2fPnmsMmQFgfSFkBuqUkSNHZsmSJenatWu6dOmyyjEPPfRQ/v73v+ett95Kp06d1jjfaaedllGjRuWOO+7Iscce+7njAQCKZV31OcsvrT1jxowMGDBglZ8oAgD4d82aNUuSVFdXF32tHXfcMUny3HPPZenSpTWfdl7uqaeeSvLpVVqW22ijjZIk06dPX2m+l156aaVtu+yyS8rLy/Pss88WXNfy+yivKshOkvLy8tXu32abbdKyZcs8//zzWbJkyWpvbwIA6wshM1CnDBs2LEly4YUXrvbegpdffnmuvfba3H333TnrrLPWOF/z5s0zaNCgDBkyJFdddVWGDBmyzmsGACjEuupzmjdvnhtuuCFz585d4cQsALB+Gzt2bDbeeOPst99+NWHpcu+9915NL7LXXnsVvZZNN900+++/fx5//PHccsstOf7442v2vfDCCxk7dmw22mijFT5Rvbw/GjFiRPr3718TTE+fPj1XX331Smu0adMm/fr1y+jRo3P11VfnpJNOWinMnjZtWsrKymrevNeqVauaOVdl4403Xu3+ysrKHHvssbnmmmty8cUX57zzzkvTpk1XGDNr1qx8+OGH2W677db4/QGAhkDIDNQZTz31VN58881sv/32qz3xmiRHHnlkrrvuugwfPjynn3765847cODA3HTTTRkzZkwGDRqk0QcAat267nNq4+QwAFC/vPDCC7n11lvTrl277LHHHtl8882TJG+//XYeeeSRfPLJJ/nmN7+5xttyrEsXXXRRvv3tb+c3v/lNHn/88ey0006ZPn167rvvvpSXl+fSSy9d4XLZu+66a7761a/mmWeeyVFHHZV9990377//fiZOnJgDDjhglcHv+eefn6lTp+aKK67ImDFjsscee6Rt27aZNWtWXn/99bz44ov57W9/WxMyb7311mnfvn3GjRuXRo0apUOHDikrK0v//v2z2WabZbfddssGG2yQW265JfPmzUubNm2SJMcdd1xatGiRU089Na+88kruvPPOTJw4Mfvuu2/at2+f2bNnZ+rUqZk0aVLOOuss554AWC8ImYE646677kqSHHXUUWsct/nmm+drX/taHn/88UycOPFz523atGlOOumkXHzxxfn973+fK6+8cp3UCwBQqGL1OQAAy/3gBz/IVlttlb///e959dVX89hjj2Xx4sVp1apV9t577/Tt2zf9+vWrufdxsXXq1CnDhw/PNddck0cffTRPP/10mjVrlq9//es5+eSTV/nGu2uuuSa/+c1v8uCDD+a2227LVlttlZ/85CfZf//9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67n66qtr7rfz+uuv55VXXlm76gAA6oh77703xx57bGbOnJnRo0cnSRYuXJhf//rXJa4MAGDdOPXUUzNjxowVts2YMSM//OEPS1QRAABQXxUUMjvpCgA0dFdccUVuuumm/PKXv0xFRUWSZIcddvCmOgCgwZgyZUo6d+68wrbOnTvnjTfeKFFFAABAfVVQyOykKwDQ0M2ZM6fmstjLLwVTVlbmkkAAQIPRunXrTJ06dYVtU6dOdU9mAADgCyvonsxOugIADV3Xrl0zevToDBgwoGbbuHHjsssuu5SuKACAdeiII47I6aefnrPOOiudOnXKtGnT8vvf/z5HHXVUqUsDAKAe2mDDJmnapKCosSQ+WbQ0Hy9cVOoyGqyCjryTrgBAQzd48OAcf/zxufvuu7Nw4cIcf/zxefPNN3PTTTeVujQAgHXixBNPTGVlZYYMGZIZM2Zk0003zVFHHZXvf//7pS4NAIB6qGmTyvQ7e3Spy1itey7rv05C5n333SNJsummm2bo0JFp0qTJSmMGDOiTGTOm57HHnk5lZd0N3telgp6lk64AQENWXV2dxo0bZ+zYsXn00UfTrVu3dOjQId26dUuzZs1KXR4AwDpRXl6eE044ISeccEKpSwEAgHpnxowZGTr0z/mP//AmzaSAkNlJVwCgoSsrK0u/fv0yadKk9O7du9TlAACsU++++27Ky8uz6aabJkk+/vjjXHfddfnXv/6V3XffPccff3wqKipKXCUAANRdLVu2TFKWW265OYceOiCtWm1c6pJK7nNDZiddAYD1QZcuXfLmm29m2223LXUpAADr1ODBgzNw4MCakPmXv/xlnnnmmfTs2TPDhw/PRx99lB/96EclrhIAAOquJk2a5jvfOS6XX35Z/vjHP+THPz6n4MdOmPBA7r57aF577bUsXbokm2/eKQcddHC+/e1j07hx4xXGDhjQJ0ly551354YbrsuECX/NnDmz0759+xx66OE57rjvpqysbKU1Xnrpxdxxx6154YXn8+GH89K6dZt87Wv75/jjT0q7du3W7smvRkGXy3bSFQBo6Pbee+8MGjQohx12WDbddNMVmrUjjzyyhJUBAKydV155Jfvvv3+SZOHChRk/fnzuuOOO7LTTTjnyyCNz4oknCpkBAOBzHHnk0bn77qEZNWp4jj76W9liiy0/9zHXXntlbrnl5rRq1SoHHXRwNtxwgzzxxN9z7bVX5cknn8iVV16TyspGKzymqmppzjjjtLz//nvZb7+vpaKiIo8++nCuueaKLF68KCeccNIK48eOHZ1f/eriNGrUKF//+jeyySbt8/bbb2XMmFF57LFH88c/3pJNN+2wTr8XSYEhs5OuAEBDN2nSpGy22WZ5+umnV9heVlam3wEA6rUlS5Zkww03TJK8+OKLadasWXbaaackybbbbpsPPviglOUBAEC9UFnZKKeeekZ+9rOf5uqrr8iQIZetcfyLL76QW265Oe3bb5qbbro1bdq0TZKccsrpOeecs/P443/L7bffmu997/gVHvfee+9lu+22zxVXXJOmTZsmSY4//qQcffSA3HnnHfne935QE0xPmzY1v/71JenQoUOuueaP2WSTTWrmefbZp3PGGafmd7/7/z631i+joJDZSVcAoKG77bbbSl0CAEBRbL755nnqqaeyzz775KGHHso+++xTs2/OnDnZYIMNSlgdAADUH92798jOO++SRx6ZmOef/0d222331Y69554xSZLvf//4moA5SSorK3PmmT/KE088njFjRq0UMifJj370k5qAOUlat26d//N/umX8+LGZOnVqtt12uyTJiBHDsnTp0px11k9WCJiTZK+99s7Xv/6NPPbYo1mwYEGaNWu2Vs/93xUUMjvpCgCsD+bNm5eJEydm5syZad++fQ488MBstNFGpS4LAGCt/PCHP8xpp52WTp065Y033ljhPM+DDz6YnXfeuYTVAQBA/XLGGWdl0KDv54orfpcbb7xllfdITpJXX305SbLnnl9dad8WW2yZTTbZJO+++07mz5+fFi1a1Oxr3rx5OnXaYqXHbLJJ+yTJ/Pkf1mx78cV/JkkmTXoukyf/z0qPmTNnTqqqqvLWW1Ozww47foFn+fkKCpkTJ10BgIbtH//4R0466aRss8026dixYyZOnJhLL700119/fXbfffXvSAQAqOt69OiRESNG5OWXX86OO+6YTp061ezbZpttsttuu5WuOAAAqGd23nnXdO/eIw89NCETJjyQnj17rXLcggUfJUnatm23yv1t2rTNjBkz8tFH/x4yt1jl+IqKiiRJVdWymm3z5s1Lktxxx61rrHnhwo/XuP/LKChkdtIVAGjoLr300lxwwQXp06dPzbbx48fn4osvzvDhw0tYGQDA2ttiiy2yxRYrfxpizz33LEE1AABQv5166ul59NGHc+21V6Vbt+6rHNOsWfMkyezZ72fzzTuttH/27PeTrD5ULkTz5p+u8eCDj9asV1vKCxm0/KTrnXfemd/+9re58847c+GFF+biiy8udn0AALViypQpOeSQQ1bY1qtXr0ybNq1EFQEAAAAAddHmm3fKEUcclXfffSd33XXnKsdsv/0OST69lPW/e+utaZk1a1Y6dtxshU8xf1E77fTprW+ef/4fX3qOL6ugkNlJVwCgodtyyy0zbty4Fbbdd999K1xOEgAAAAAgSX7wgxPTokWL3HLLjfn445UvR92vX/8kyc03/zEffPBBzfaqqqpceeXlWbZsWc2YL+vII49JZWVlLr/8skybNnWl/UuWLMnzz09aqzVWp6DLZS8/6dqvX7+abU66AgANyc9+9rOcfPLJue2229KxY8e88847mTp1aq677rpSlwYAAAAA1DEbbbRRvvvdH+Sqq36/yv277LJrjj32u7n99lsycOBR6d79m2nadIM8+eTf8/rr/5tdd90txx773bWqYautts7gwRfkkksuyre/fVT23Xe/bLHFllm6dGlmzpyR55//RzbeeOMMHTpirdZZlYJCZiddAYCGbo899shf//rXPPzww5k1a1YOPPDAfOMb30irVq1KXRoAwDqzZMmSvPDCC5k1a1Z69+6dhQsXJkk23HDDElcGAEB988mipbnnsrX7JG4xfbJoadHXOProb2f48GGZPv3dVe7/4Q/PTOfOO2TYsKG5995xWbp0aTbbbPOcdNKpGTjwuDRq1GitazjkkD75yle2z5//fHsmTXomTz/9ZDbYYIO0bdsu3bt/Mz16HLTWa6xKQSGzk64AQEM3c+bMNG3aNP37/7/GeN68eZk5c2bat29fwsoAANaNV199NaecckoaN26cmTNnpnfv3nnmmWcycuTIXH755aUuDwCAeubjhYvy8cJFpS6j6J58cvWXm27cuHFGjhy7xsf37NkrPXv2KmitUaPGrXbfoEEnZ9Cgk1e5b7vtvpLzz7+ooDXWlYLuyTxz5swkSf/+/TNo0KD0798/ZWVlNdsBAOq7U089NTNmzFhh24wZM/LDH/6wRBUBAKxbF154Yc4444zcd999qaz89HMHX/3qV/Pcc8+VuDIAAKC+KShkdtIVAGjopkyZks6dO6+wrXPnznnjjTdKVBEAwLr1v//7vzVXbSkrK0vy6WWyFy1q+J8+AQAA1q2CQmYnXQGAhq5169aZOnXqCtumTp3q9iAAQIOx2Wab5aWXXlph2z//+c9sscUWJaoIAACorwoKmZ10BQAauiOOOCKnn356Jk6cmP/93//NQw89lDPOOCNHHXVUqUsDAFgnzjzzzJx00km54oorsmTJklx//fU588wz85//+Z+lLg0AAKhnKgsZtPyk61lnnZVOnTpl2rRp+f3vf++kKwDQYJx44omprKzMkCFDMmPGjGy66aY56qij8v3vf7/UpQEArBMHHnhgbrjhhgwbNixf/epX88477+TKK6/MTjvtVOrSAACAeqagkNlJVwCgoSsvL88JJ5yQE044odSlAAAUxb333ptDDjkkXbt2XWH7fffdl4MPPrhEVQEAAPVRQSGzk64AQEP17rvvpry8PJtuummS5OOPP851112Xf/3rX9l9991z/PHHp6KiosRVAgCsvcGDB+eQQw5Zafv5558vZAYAAL6QNYbMTroCAA3d4MGDM3DgwJp+55e//GWeeeaZ9OzZM8OHD89HH32UH/3oRyWuEgDgy3vrrbeSJNXV1TV//uy+xo0bl6IsAACgHltjyOykKwDQ0L3yyivZf//9kyQLFy7M+PHjc8cdd2SnnXbKkUcemRNPPFG/AwDUaz179kxZWVmqq6vTs2fPFfa1bds2P/zhD0tUGQAAUF+tMWR20hUAaOiWLFmSDTfcMEny4osvplmzZtlpp52SJNtuu20++OCDUpYHALDWXnnllSTJsccem9tvv73E1QAAAA1B+Zp2OukKADR0m2++eZ566qkkyUMPPZR99tmnZt+cOXOywQYblKo0AIB1aocddljl9ksuuaSWKwEAAOq7NYbMTroCAA3dD3/4w5x22mk57LDDcuedd+b73/9+zb4HH3wwO++8cwmrAwBYd0aMGLHK7WPGjKnlSgAAgPpujZfLXn7StVOnTnnjjTdy22231exz0hUAaAh69OiRESNG5OWXX86OO+6YTp061ezbZpttsttuu5WuOACAdeDuu+9OklRVVdX8ebm33norrVq1KkFVAABAfbbGkNlJVwBgfbDFFltkiy22WGn7nnvuWYJqAADWrdGjRyf59LZoy/+cJGVlZWnbtm2GDBlSqtIAAKjHWjarTEXjJqUuY7WqFi/KhwuWlrqMBmuNIXPipCsAAABAfbb8ynS/+93vctZZZ5W4GgAAGoqKxk3yxiVHlLqM1dpm8PBkHYTM++67xwpfl5eXp0WLltluu+3Sr9+AHHxw71U+bsqUN3P33Xdl0qRnM3PmzCxa9ElatWqV7bffId26dU+vXoekSZNVh/Q33/zHXH/9NUmSoUNHZMstt1rr57GufW7IDAAAAED9d9ZZZ+WDDz7II488kvfffz8nnHBCZs6cmerq6my66aalLg8AAOq0448/MUmydOnSTJs2NY8++nCee+7ZvPLKy/nP/zx7hbE33viH3HjjH7Js2bLstNPO6d27bzbccIPMmTMnkyY9l0sv/WVGjBiWP/3pjpXWqa6uzj33jE5ZWVmqq6szevTInHFG3XuzqJAZAAAAYD3w9NNP5/TTT89OO+2USZMm5YQTTsjUqVNz00035brrrit1eQAAUKcNGnTyCl8/88xTOeOMUzN06J9z9NHfTseOHZMkf/rTjbnhhuvSvv2mueSSIdlpp51Xmuuxxx7Nn/98+yrXeeqpJ/Luu++kT59+eeKJv2f8+Htyyik/TKNGjdb9k1oL5aUuAAAAAIDiu/TSS3P55ZfnxhtvTGXlp5872HXXXfPPf/6zxJUBAED989Wv7pMtt9wq1dXVefnl/0mSvPvuu/njH69PZWVlfvvbK1YZMCfJAQf8n1x++VWr3Dd69MgkSf/+h6dXr0Myd+7cPPzwQ8V5EmvBJ5kBgPXawIEDU1ZWtsYxd9yx8mVrAADqm3feeSf77bdfktT0P40aNUpVVVUpywIAgHqruro6yf/rr8eNG52lS5emZ89e2Xbb7db42MaNG6+0bfbs2fnb3x7JFltsmV122TXNmjXLX/5ye0aPHpGePXut+yewFtYYMjvpCgA0dEcddVSpSwAAqBXbbrtt/va3v+XrX/96zba///3v2X777UtYFQAA1E9PP/1Upk2bmrKysnTpsmOS5IUXnk+S7LXX3l9qznHjxmTp0qXp06dfkmTbbbdL58475Lnnns1bb01Lp05brJPa14U1hsxOugIADd1hhx1W6hIAAGrFueeem5NOOindunXLJ598kvPPPz8PPfRQrrnmmlKXBgAAdd4NN1yXJFm6dGmmTZuaRx99ONXV1fnWt76TDh0+vR/z+++/nyTZZJNNvvD81dXVGTNmZMrLy3PIIX1rtvfpc2heffU3GTNmVE477Yx18EzWjTWGzJ930nXJkiXrtBgAgNo2atSozx0zYMCAotcBAFBsu+22W8aMGZMxY8bkiCOOSIcOHXL33Xdn0003LXVpAABQ59144x+SfHpp7BYtWmTXXXdPv379c8ghfWrG/Pvls7+IZ599Om+//Xb23Xe/FULqXr0OzpVX/i7jxt2Tk046JZWVjdbymawbX+qezIsXL86dd96ZG2+8MY888si6rgkAoNace+652XLLLdO2bduaJvCzysrKhMwAQIPRvn37DBo0qNRlAABAvfPkk5M+d0y7du0ydeqUzJo16wvPP2rUiCSffnL5szbaqFUOOOD/ZOLEB/Poo4+ke/ceX3juYlhjyPzGG29k8ODBeeWVV7LVVltlyJAhefPNN3PxxRenffv2Oeecc2qrTgCAojjuuONy//33p1mzZhkwYEB69OiRxo0bl7osAIB17ic/+clqP1Hxm9/8pparAQCAhmfXXXfLs88+k2effTqHHjqg4Md98MEHefTRh5Mkv/jFefnFL85b5bhRo0bUj5D5kksuyVZbbZWTTz45Y8eOzamnnpqmTZtmyJAh+drXvlZbNQIAFM3gwYNz7rnn5m9/+1tGjRqVSy+9NN26dcuAAQOy1157lbo8AIB1Zsstt1zh6/feey/3339/+vXrV6KKAACgYenTp39uueXmTJz4YN58841svfU2qx27ePHimg+7jB9/T5YsWZIdduiSr3yl8yrHP/bYI3nmmafy7rvvpGPHzYpS/xexxpD5pZdeyt/+9rc0btw4X/3qV7Pnnntm4sSJ7tUDADQoFRUV6datW7p165aPPvoo11xzTf7jP/4jN910U/bdd99SlwcAsE788Ic/XGnbkUcemauvvroE1QAAQMPTsWPHnHDCSbnuuqvzox+dkUsv/U26dNlxpXFPPPF4br/9llx99af3eR4zZlSS5Cc/OS9du+60yrmvv/6a3HzzHzN69MiccsrKvX1tW2PIvGTJkpoEfcMNN0yLFi0EzABAgzR//vyMGzcuo0aNypw5c3LqqaemS5cupS4LAKCounTpkqeffrrUZQAAQIPxve8dn6qqqtx44x/y/e8fm5133jVduuyYDTbYIHPmzMnzz0/KW29Nqwmfn3vu2UydOiXbbrvdagPmJOnXb0D+9KcbM27cmAwadHIqK9cY8xbdGldfvHhxfv/739d8/cknn6zwdZKceeaZxakMAKAWTJw4MSNHjsykSZPSvXv3/OQnP8mee+5Z6rIAANa5J554YoWvP/nkk4wbNy7bbbddiSoCAKA+q1q8KNsMHl7qMlaravGikq19/PEnpnv3Hhk+fFgmTXo2Y8eOyeLFi7LRRq3yla9sn+OO+14OPrh3kmT06JFJkkMPPWyNc3bs2DFf/eo+efrpJ/PYY4+mW7fuRX8ea7LGkLlfv36ZMWNGzdd9+vRZ4WsAgPrulFNOydZbb51+/fqladOmeeyxx/LYY4+tMMab6gCAhmDw4MErfL3hhhtmhx12yGWXXVaiigAAqM8+XLA0WbC01GUU3ZNPTvpSj9t6623y4x+f87njfvnLS/LLX15S0JxXXHHNl6qlGNYYMv/qV79a44OXLVu2TosBAKhtAwYMSFlZWebOnVvqUgAAiuqhhx4qdQkAAEAD8aUu1v3qq69m1KhRueeee1b6pA8AQH3y61//eo3716c31bVouUGaNinuvVw+WbQ08z/8uKhrAACrN2/evEycODEzZ85M+/bt061bt7Rq1arUZQEAAPVMwWcR58yZk3vuuSejRo3KK6+8kj333HOlyywBADQU6+Ob6po2qUy/s0cXdY3RQw5Ju3YtiroGALBq//jHP3LSSSdlm222SceOHTNx4sRceumluf7667P77ruXujwAAKAeWWPIvGTJkjz00EMZOXJkHnvssWyxxRbp06dP3n333fz+979PmzZtaqtOAICi86a64iuvbJw3LjmiaPNvM3h40eYGgPru0ksvzQUXXJA+ffrUbBs/fnwuvvjiDB/udygAAFC4NYbM+++/f8rKynL44Yfn9NNPT9euXZMkf/nLX2qlOACAYvOmOgBgfTFlypQccsghK2zr1atXLrjgghJVBAAA1Ffla9rZuXPnzJ8/Py+88EJefPHFzJs3r7bqAgCoFfvvv3/OP//8bL311hk6dGjGjx+f0047LY0aNSp1aQAA69SWW26ZcePGrbDtvvvuS6dOnUpUEQAAUF+t8ZPMt912W955552MGjUqN910Uy6++OIccMABWbhwYZYuXVpbNQIAFE3nzp3z3HPP5YUXXsiWW26ZzTffPBtttFGpywIAWOd+9rOf5eSTT85tt92Wjh075p133snUqVNz3XXXlbo0AACgnlnjJ5mTZLPNNstpp52WBx54IH/605/Srl27lJeX59BDD81vfvOb2qgRAKBobrvttvz1r3/N/vvvn5tuuin7779/Tj75ZG+qAwAanD322CN//etf853vfCddu3bNsccemwceeCB77LFHqUsDAADqmTV+kvnf7bXXXtlrr73y85//PH/9618zatSoIpUFAFB7lr+p7rTTTsuzzz6b0aNH17yp7ogjjshPf/rTUpcIALBObLTRRunfv3+pywAAAOq5LxQyL9ekSZP07ds3ffv2Xdf1AACUlDfVAQAN1VtvvZXLL788L7/8chYuXLjCvocffrg0RQEAAPXSlwqZAQAaOm+qAwAamh//+Mfp1KlTzjnnnGywwQalLgcAAKjHhMwAAAAA64HXXnstf/nLX1JeXl7qUgAAgHrOqwoAAACA9cBXv/rVTJ48udRlAAAADYBPMgMAAAA0UL///e9r/rzZZpvl+OOPz0EHHZS2bduuMO7MM8+s7dIAAKjnNmzeKE0aNS51Gau1aMniLPxoSanLaLCEzAAAAAAN1IwZM1b4unv37lm6dOlK2wEA4Itq0qhxjh56SqnLWK27jrk2C7N2IfNzzz2b0047MbvvvmeuvfaGVY559913c/jhfbPpph0yatS4JMnYsWNy8cUXJkl2332PXHvtH1f72COO6Jfq6uokyZNPTlptLTff/Mdcf/01SZKhQ0dkyy23WuW4z669XKNGjdK2bbvsvvueOe6472brrbdZ7TqFEjIDAAAANFC/+tWvSl0CAACstyoqKvOPf0zK1KlTVhkKjxkzMtXV1amoqExV1dLVzlNdXZ177hmdsrKyVFdXZ/TokTnjjLPWuPZXvrJ9/s//6ZYkWbDgo0ya9FzGj78nDz7411x99XXZaadd1uapuSczAAAAQEP11ltvFfQfAACw7h1wwNeTfBom/7uqqqqMGzcmO+7YNa1bt17jPE899UTeffed9O7dN61bt8n48fdkyZI1f0r7K1/pnEGDTs6gQSfnP//zx7nllj+nd+9+WbTok1xzzVVf/kn9Xz7JDAAAANBA9ezZs+bTDqtTVlaWl19+uRarAgCA9cPWW2+TOXNmZ/z4sTnllB+msrJRzb7HH38s7733Xo4//qTceOMf1jjP6NGfhtT9+x+eli03yl/+cnsefvih9OzZq+BaysrKcsQRR2X8+HsyefJLX+4JfYZPMgMAAAA0UK+88kpefvnlvPLKK6v9T8AMAADF07//Yfnggw/y6KOPrLB99OgR2XDDDT83KJ49e3b+9rdHssUWW2aXXXZN376H1jz+i1r+5tOysrIv/Nh/J2QGAAAAAAAAKIIePQ5Ks2bNVwiFZ82alSef/Ht69OiVZs2arfHx48aNydKlS9OnT78kybbbbpfOnXfIc889m7femlZwHdXV1RkxYliSpGvXnb7EM1mRy2UDAAAANFDHH398brzxxiTJwIEDV/uJhTvuuKM2ywIAgPVG06Yb5KCDDs6oUcPz7rvvpmPHjhk7dnSqqqrSv/9ha3xsdXV1xowZmfLy8hxySN+a7X36HJpXX/1NxowZldNOO2OVj33ttVdzww3XJUkWLPgokyY9l3/969U0adI0J5982lo/LyEzAAAAQAM1YMCAmj8fddRRpSsEAADWY/37H5aRI+/OPfeMyqBBJ2fMmFHZbruvfO4nip999um8/fbb2Xff/bLJJpvUbO/V6+BceeXvMm7cPTnppFNWuNfzcq+99q+89tq/kiSVlZVp27ZtDjmkT/7jP76frbfeZq2fk5AZAAAAoIHq169fzZ8PO2zNn5IAAABWVF7+6ZWAqquXrXbM8n3l5au/S/EOO3RJ5847ZOzYMdlpp50zY8b0nH32Tz93/VGjPr3Edp8+h66wfaONWuWAA/5PJk58MI8++ki6d++x0mN79+6X88+/6HPX+LLckxkAAACgAXvppZfyr3/9q+brOXPm5Oyzz86hhx6a888/PwsWLChhdQAAUHc1b94iSTJv3rzVjpk7d+4KY1dnwIDD8957szJkyKVp0qRpDj64zxrHf/DBB3n00YeTJL/4xXnZd989Vvhv4sQHk/y/ILq2CZkBAAAAGrBLL70077//fs3XgwcPzpQpU3LMMcfktddey3//93+XsDoAAKi7tthiyzRu3DjTpk3LvHlzVznmpZf+mST5yle+ssa5DjrokGywwQaZNWtmvvnNHmnRYs2h9Pjx92TJkiXZYYcu6ddvwCr/23jjjfPMM0/l3Xff+VLPb224XDYAAABAA/b6669nr732SpJ8+OGH+dvf/pZ77rknW2+9dbp3755vfetbufDCC0tbJAAA1EFNmjRJjx69Mn78PbnyysszePAFKSsrq9k/a9bM3H77rUlWvqT1v2vWrFl+97urMm/e3OywQ5fPXXvMmFFJkp/85LzV3rv5+uuvyc03/zGjR4/MKaf8sMBntW4ImQEAAAAasKqqqjRq1ChJ8vzzz6dt27bZeuutkyQdOnTIhx9+WMryAACgTjvzzLPy8sv/k7Fjx+TFF/+ZvffeN82aNcuMGdPz6KOPZOHCBTnuuO9ljz32/Ny5dttt94LWfO65ZzN16pRsu+12qw2Yk6RfvwH5059uzLhxYzJo0MmprKy96FfIDAAAANCAbbfddrn33nvTu3fvjB8/Pvvtt1/NvpkzZ37uZfoAAGBVFi1ZnLuOubbUZazWoiWL18k8G23UKjfeeGvuuusveeSRiRk37p4sWrQoG220UXbffY8cccRR+drXDlgnay03evTIJMmhhx62xnEdO3bMV7+6T55++sk89tij6dat+zqtY02EzAAAAAAN2I9//OOccsopufDCC1NeXp4///nPNfvGjx+fPfbYo4TVAQBQXy38aEkWZkmpy6gVG264Yb73vePzve8dX9D4vn0PTd++a7589mfdc899K3z9y19ekl/+8pKCHnvFFdes1dpflpAZAAAAoAHba6+9MnHixEyZMiVbbbVVmjdvXrPvG9/4Rnr37l3C6gAAgPpIyAwAAADQwDVv3jw77bTyvdy22WabElQDAADUd+WlLgAAAAAAAACA+kPIDAAAAAAAAEDBai1kfvPNN3PMMcekV69eOeaYYzJlypTVjn3jjTey6667ZsiQIbVVHgDAWtPvAAANmV4HAABYrtZC5gsuuCADBw7M/fffn4EDB+b8889f5biqqqpccMEF6dGjR22VBgCwTuh3AICGTK8DAAAsVysh8+zZszN58uT07ds3SdK3b99Mnjw5c+bMWWnsH/7wh3Tr1i1bbbVVbZQGALBO6HcAgIZMrwMAsH6qrq4udQmUyOcd+8raKGL69Olp3759KioqkiQVFRXZZJNNMn369LRu3bpm3CuvvJLHHnsst956a6655povtVabNs3XSc18ee3atSh1CfxfjkXd4DgUprysrOhr1MaxaN26Wb2eP0lS/EPRIH8u9Dvrl4b4d7i+cizqBsehMA2h36mNXqQh9DsN8WdCrwMAsP6pqKhIVdXSVFY2KnUplEBV1dKa/n9VaiVkLsSSJUvyi1/8Ir/61a/WWPDnmT37oyxb5l0Vq1MbL3Tfe29+0deo72rrhINj8fn8TNQN7dq1yLJaeEdc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Pn365JBDDsmvf/3rLFmypOhrf/a4r8mf/vSnzJ49u+j11Af33ntvBgwYkP79++fggw/O2WefnSTp379/Pvnkk7Wau9DjsT7p3r17Dj744Bx66KHp2bNnTjnllEyaNClJMmLEiOy1117p379/+vfvn8MOOyxPPPFEkqS6ujpXXHFF+vTpk0MPPTS9e/fOzTffXDPve++9l5/+9Kf55je/mb59+2bAgAG56667Vlj7zDPPzH777bfSz2Lnzp1zwgknrLRtwYIFxfgWlMSq/i4efvjheeqpp3LllVdmv/32y4ABA9KrV68cccQRufXWW1f4fdG5c+f069ev5ufkd7/7Xc2+J598MkcddVT69++fQw45JP/xH/+RZcuWJfn0uN1yyy3p06dPevfunYMPPjg///nP8+GHH9Y8/pFHHknnzp0zYcKEFeo799xzs/POO+fdd99dYdvtt9++Tr831F96ndLS79Qv+p3apd8pDf0ODZF+p3T0OvWPfqf26HVKR78DrO8qS13A+mb+/Pk58cQT07Vr1wwePDhlZWUr7N9uu+0ybty4fOc730mSjBw5Ml27di1FqQ3Geeedl0WLFmX48OFp3rx5lixZkhEjRmTx4sVp1KhRqctLktx666352te+ljZt2pS6lJKaNWtWLrrooowcOTIdOnRIdXV1XnnllSTJ6NGjS1xdw3XFFVdk++23T5I88MADOfHEE3PjjTcmSb72ta/liiuuSPJpc/rLX/4y9957b+6777488cQTGTFiRJo0aZLFixdn2rRpST492XLsscfm8MMPz69//euUl5fnww8/zPjx42vWnDt3bp544olsvfXWmThxYg466KAVanrjjTfy9NNPZ++9966Nb0GdM2DAgJxzzjlJkrfeeis/+clPMm3atPz85z+vGXPnnXemWbNm+fjjj9OnT5907949Xbt2zRlnnJFbb701O+ywQ5Jk8uTJNb9rLr/88jzzzDO55ZZb0rZt2yxbtiwTJkzIvHnz0rJlyyTJ8OHDs+++++buu+9Ojx49VqirXbt2ufLKK/OrX/2qNr4N1FN6ndLQ79Qf+p3S0O/UPfod6jP9Tu3T69Qv+p3ap9epm/Q7QEMnZK5Fs2fPzk9/+tMceOCBOfPMM1c55rDDDsvo0aPzne98JwsWLMikSZPSu3fvLF68uGbMDTfckPvvvz9VVVVp3759/uu//ivt2rXLE088kcsvvzyLFi1KVVVVTj755PTp0yfJp++k3WmnnfL8889n1qxZOeSQQ/LjH/84SXLVVVdl7NixadKkScrKynLrrbfW/DKq76ZMmZIJEybkkUceSfPmzZMkjRo1yjHHHJOqqqoMGTIkf/vb35IkX//61/PjH/84FRUVOffcc9O4ceNMmTIlb731Vnr27JkDDzwwV155ZWbMmJHvfve7+e53v5vk03es9enTJ5MmTcqsWbPy3e9+N8cee+xKtcyaNSsXX3xx3n333SxatCh9+vTJySefnGuvvTazZs3KGWeckSZNmuSyyy7LFltskd/97nd55plnsmTJkmy//fa58MIL06xZs9r75pXA+++/n8rKyrRq1SpJUlZWli5duiT59J19kyZNSrNmzdK9e/f0798/f//73/Pee+/lBz/4Qc33/Nlnn81FF12UJNlnn33y4IMP5vrrr69ptJdb3fFY3x100EH55z//mRtvvDHdunVbYd/8+fOz0UYbJUlmzpyZjTfeOI0bN06SNG7cONttt12SZOzYsWnVqlVOOumkmse2bNky3/rWt2q+HjNmTL7xjW/kgAMOyPDhw1d6IXL66afnt7/9be68885iPM16pVOnTrnkkkty6KGH5swzz0yLFi1W2P/xxx9n6dKladGiRRYsWJCFCxembdu2Nft33HHHJMmCBQty8803Z9SoUTX7y8vLV/jef/DBB3niiSdy7733pk+fPnnvvffSrl27mv3f+ta3cvvtt+d///d/a443fJZepzT0O/WLfqf09Dt1j36H+kS/U/v0OvWPfqe09Dp1k34HaIiEzLXoP//zPzNw4MDVvghJPv1l07hx47z++ut5/vnn06NHj1RWVta8EBk9enSmTZuWu+66K+Xl5fnzn/+cX//617nsssuy44475s9//nMqKiry/vvv5/DDD88BBxxQ0zhMnz49d9xxRxYsWJAePXrkyCOPzMYbb5wbb7wxTzzxRJo2bZqPPvooTZs2rZXvR22YPHlyttxyy5rvwWcNHTo0L7/8ckaMGJEkGTRoUIYOHZqBAwcmSV577bXccsstqaqqSvfu3TN//vzcfvvtee+993LwwQfnyCOPrHlh8P777+eOO+7I+++/nwEDBmSvvfaqeZfZcuecc05OPfXUfPWrX83ixYvzve99LzvvvHNOOeWUDBs2bIV3HF5zzTVp0aJF7r777iTJf//3f+cPf/hDzjrrrKJ9r+qCHXbYIbvssku6deuWffbZJ3vssUf69++fjTfeeKWxn3zySYYOHZq33347/fr1y2GHHZZGjRrlRz/6UX77299mr732yl//+tfcdtttq1xrdcdj//33L/bTrPN23XXXPPTQQ+nWrVv+/ve/p3///lm4cGHmzJmT66+/PknSu3fv/OUvf8lBBx2UvfbaK/vuu2/69OmTysrK/M///E922WWXNa4xYsSInHPOOdl9991z6aWXZubMmWnfvn3N/oMOOih33HFHJkyYsNK7LRuK5ScflpsyZcpqx2677bZp2rRp3nzzzZrv7fIXdlOnTs23v/3tbLPNNkmSo48+OgcddFD23nvv7LHHHunXr186dOiQ119/PY0bN64ZtyqjR4/OgQcemLZt26Znz54ZNWpUBg0aVLN/ww03zEknnZTf/e53ufrqq9fm6dNA6XVKQ79Tv+h36gb9Tu3Q79AQ6Xdqn16n/tHvlJ5ep/bod4D1mZC5Fn3jG9/I+PHj8+1vfzubbLLJascNGDAgI0eOzAsvvJBf/OIXuf/++2v2PfTQQ3nppZdy2GGHJUmqqqpq3sU5Z86c/OxnP8vUqVNTUVGRefPm5c0338xuu+2WJDn44INTXl6eFi1aZNttt820adPSqVOnbL311vnJT36Sr3/96+nWrVvNfA3dE088kcMOO6zm3XqHH354JkyYUPNCpEePHjX7tt5663zjG99IeXl52rdvn5YtW2bGjBnZdtttkyRHHnlkkqRt27bp1q1bnn766RVeiCxcuDBPP/105syZU7NtwYIFef3111fZ9D700EP56KOPao794sWLV3ph0xCVl5fnmmuuyb/+9a8888wzmTBhQm688cbcc889K43t3bt3kmTzzTevOR5LlixJ06ZNs9deeyVJevbsucp3bn/R47G+qa6urvnzZy+p9NRTT+VHP/pR7r///myyySYZN25cnn/++Tz33HO57rrrMmbMmNx4440rPH5VJk+enA8//DD77rtvysrK0rNnz4wePTonnnjiCuPOPvvsXHLJJenevfu6f5J1wGdPPiSf/hv0RSy/nNKHH36Y7373uzUv2s4///x8//vfz5NPPplHH300119/fYYPH/65xyX59AXieeedl+TTT18MHjx4hRchyacvcm6++ea88MILX6he1g96nbpHv1P36HfqBv1O7dDv0BDpd+oWvU7dpN8pPb1O7dHvAOszIXMtOuGEEzJx4sQcd9xxOfnkk/OnP/0pSdKvX7+ccMIJNeMOOeSQ9OnTJ23bts3222+/wguR6urqnHLKKTWN72ddeOGF6d69e6666qqUlZWlV69eWbRoUc3+z76jqqKiIlVVVamoqMhdd92VSZMm5cknn8zhhx+eP/7xjw2m6d1xxx0zderUzJs3b6V3vFZXV69036TPfv3v369Vff9WZVXzLlu2LGVlZbn77rsLuldQdXV1Lrjgguy3336fO7Yh2n777bP99tvnO9/5Tnr37p2nn356pTGrOx7//r1flS96PNY3L774Yr7yla+stH2fffbJ0qVL89prr2WXXXZJZWVl9tprr+y111454ogjsv/++2fu3LnZaaedMnz48NXOf/fdd+fDDz/MN7/5zSSfvtBu1qzZSi9E9ttvv7Rt2zZjxoxZt0+wHnrjjTfyySefrPJdqi1btszXvva1PP744zXvDO7UqVM6deqUo446quZ3z9FHH51FixblzTffzNZbb73SPC+++GJef/31DB48uGbbrFmzMmnSpOyxxx412xo1apTTTz89l112WTp27FiEZ0t9ptcpDf1O/aTfKS39Tt2j36G+0O/UPr1O/aXfKR29Tt2k3wEamvJSF7C+Oemkk3LYYYfluuuuyw033JDRo0ev8CIkSZo1a5af/vSnOeecc1Z6fPfu3fPnP/858+bNS/LpL/BXXnklyaf31Nhss81SVlaWxx9/PFOnTv3cej766KPMmTMne++9d84444xsv/32ee2119bBM60bttpqq3Tv3j3nn39+PvrooySfvkP4lltuyT777JORI0dmyZIlWbJkSUaNGvWlG/+RI0cm+fQdx48++mj23nvvFfY3b948e+65Z/7whz/UbJs+fXree++9JJ8e8/nz59fs6969e/70pz/lk08+SfLpcXr99de/VG31ycyZM/OPf/yj5usZM2Zkzpw52XzzzQt6/DbbbJOFCxfmueeeS5JMmDAhH3744UrjPu94rM8mTJiQv/zlL/n+97+/0r5XX301CxYsyOabb56XXnopb7/9ds2+//mf/8lGG22Uli1bpk+fPpkzZ07++Mc/1ry78sMPP/z/27vzoKrqPo7jH7bLVcRxTVFsQP6gNJNbaGqmIwoDkyCKOeKIaRJeSx0FZyIrc0nRxzXRVGwBl6kpHVxxBhFzRcti0ilncKBC0dAkJ0Hhstznj+rOwyMUKRcv8H79xdl+55z7/eP3OfzOorS0NFksFh06dEi7d+9Wdna2srOzderUKTk5Oen8+fP37TMhIUHJycn2O+Fm4OrVq3rrrbcUHR1d59MIFotFubm58vHxUVlZmU6dOlXrd7969aq8vb3l4eGhqVOnauHChbp165akP/7psX//fhUWFmrPnj2KjY211SU7O1uzZ8+u86IyPDxct2/frvMfBABZp+mRd5oX8s6jR95xPOQdNDfknaZF1ml+yDuPFlnHMZF3ALREPMn8CJjNZlmtVsXExGj79u21vlXxl79eFfP/IiMjdfv2bU2ePFnSHx1IdHS0nnjiCSUkJGjx4sXatm2b/P395e/v/4/HUlpaqtmzZ6u8vFxWq1V9+vRRSEjIw52gg1mxYoU2bdqkqKgoubm5qaamRsOHD9e8efNUVFRkez3V0KFDNWHChAfah5eXlyZNmqSbN29qxowZdf72q1evVlJSksLDwyX9cfGxbNkyde3aVVOmTNGCBQtkNBq1Zs0axcXFaePGjRo/frycnJzk5OSkWbNm2V7h1FJVVVUpOTlZRUVFMhqNqqmp0dy5c9WnT58GbW8wGLRmzRotWrRIRqNRgwYNUpcuXeTp6Xnfun9Xj9Zmzpw5MhgMunfvnvz8/JSSkqKAgAAVFBTYvttjtVpltVqVlJSkTp066fvvv9fixYtVWloqg8GgNm3aaNOmTXJ2dlbbtm21Y8cOrVq1SiNHjpSHh4dcXV01adIkZWVl6fHHH5ePj0+tYxg9erT27NljexXWX/r166e+ffvWuuhpDfbu3aucnBzdu3dP7dq1U3h4uGJiYmqtM3HiRDk7O6uiokIDBw5UdHS0LBaLdu3apaVLl8rd3V3V1dUKDw9XcHCwJCk+Pl6pqam2tqxWqwIDAzV48GBlZGTo008/rbWP0aNHKyIiotbdr9Ifrz6bN2+ezGazHX8FNGdknaZH3mk+yDuPBnnH8ZB30NyRd5oWWad5Ie80PbKOYyLvAGjpnKwNeYk/gHoFBQVpy5Yttb69gUentLTUdjfg2bNnlZiYqOzsbDk78+IGAAAeFHnHsZB3AABoXGQdx0PeAQDA8fEkM4AWJTMzU6mpqbJarbY7X7kAAQAALQl5BwAAtHTkHQAAHB9PMgMAAAAAAAAAAAAAGozbv9AqBQUFKS8vr9a8V199VYWFhf+4bUxMjI4dO2avQ2tVqAMAAPZBH+s4qAUAAPZBH+sYqAMAAK0Xr8sG/rRt27ZHfQgQdQAAwF7oYx0HtQAAwD7oYx0DdQAAoHXgSWbgT/9752VMTIxWrlyp6OhojRw5UqtXr65zm0OHDikqKkq//PKLDhw4oJdeekmRkZGKjIxUTk6Obb3z588rPDxc4eHheu+99zRixAjbvgoKChQbG6uoqChFRERoz5499j9ZB0YdAACwD/pYx0EtAACwD/pYx0AdAABoHXiSGajH9evXtWvXLpWVlWnUqFEaP368fHx8bMu3bdum06dPKzU1VZ6enho6dKhGjx4tJycnFRQUaOrUqTpx4oQsFovi4+O1du1aBQYG6siRI9qxY4ckqaqqSvPnz9eqVavk5+en0tJSRUVFKSAgQH5+fo/ozB0LdQAAwD7oYx0HtQAAwD7oYx0DdQAAoGVikBmoR2hoqJydneXp6Sk/Pz8VFhbaAnBycrJ69OihlJQUGQwGSdKVK1eUkJCg4uJiubq66tdff9XNmzd169YtGY1GBQYGSpKCg4PVvn17SdJPP/2k/Px8xcfH2/ZbWVmpgoICAvCfqAMAAPZBH+s4qAUAAPZBH+sYqAMAAC0Tg8xAPdzd3W1/u7i4qLq62jYdEBCg06dP69q1a7ZQHB8fr8TERI0aNUo1NTXq37+/KioqJElOTk517sNqtapjx47at2+f/U6kmaMOAADYB32s46AWAADYB32sY6AOAAC0THyTGXgAL7zwghYtWqS4uDhdvnxZknTnzh15e3tLknbv3i2LxSJJ6t27t+7evatvvvlGkpSVlaXff/9dkuTr6yuj0ai9e/fa2s7Pz1dpaWkTnk3zRR0AALAP+ljHQS0AALAP+ljHQB0AAGi+eJIZrda0adPk4uJimy4rK/tX2w8ePFhJSUmaOXOm3n//fb355pt67bXX1K1bNw0cOFAdOnSQJBkMBq1Zs0aLFi2S0WjUoEGD1KVLF3l6esrV1VVbtmzR8uXL9dFHH6mmpkadO3fW+vXrG/FMHRt1AADAPuhjHQe1AADAPuhjHQN1AACgdXKyWq3WR30QQEtXWlqqdu3aSZLOnj2rxMREZWdny9mZlwk0JeoAAIB90Mc6DmoBAIB90Mc6BuoAAIDj4ElmoAlkZmYqNTVVVqvVdtcl4bfpUQcAAOyDPtZxUAsAAOyDPtYxUAcAABwHTzIDAAAAAAAAAAAAABqM27wAAAAAAAAAAAAAAA3GIDMAAAAAAAAAAAAAoMEYZAYAAAAAAAAAAAAANBiDzAAeWHJysubPn/+oD6NJxcTE6IsvvmiUthITE7Vu3bpGaQsAADQ+ss7DIesAAOD4yDsPh7wDAGjNGGQG8LcOHDigcePGyWQyaejQoYqNjdX58+cbrf2rV6/K399fVVVVjd7m2LFja80vKSnRU089paCgoAa10xovtAAAaG3IOmQdAABaOvIOeQcAAHtgkBlAvT755BMtX75cZrNZp0+f1rFjxzRp0iQdPXr0UR+azd9dwNy9e1d5eXm26YMHD6pnz55NcVgAAKAZIOsAAICWjrwDAADshUFmAHW6c+eONmzYoIULFyokJERt27aVm5ubgoKC9MYbb9y3/rlz5zRs2LBa84KCgnTmzBlJ0oULFzRu3Dg988wzGjJkiJKSkiRJkydPliQNGDBAJpNJubm5kqTdu3crLCxMAwYM0PTp01VUVGRr19/fX7t27VJISIhCQkLqPYcxY8YoPT3dNr13715FRkbWWqe4uFizZ8/WoEGDFBQUpO3bt0uSTpw4oa1bt+rw4cMymUyKiIiwbVNUVKSJEyfKZDLplVdeUUlJiW3Z0aNH9eKLLyowMFAxMTHKz8+3Lfvhhx80duxYmUwmzZ07VxUVFfUeOwAAsC+yDlkHAICWjrxD3gEAwJ4YZAZQp9zcXFVUVCg4OLhR2lu2bJmmTJmib7/9VkeOHFFYWJgkaefOnZKkr7/+Wrm5uTKZTMrKytLWrVu1ceNG5eTk6Nlnn1VCQkKt9rKysvT5558rIyOj3n1GREQoIyND1dXVys/PV1lZmfr3729bXlNTo5kzZ8rf318nTpxQWlqa0tLSdPLkSQ0bNkwzZsxQWFiYcnNztX//ftt2Bw8eVFJSknJyclRZWamPP/5YkvTjjz8qISFBCxYsUE5OjoYNGyaz2SyLxSKLxaLXX39dY8aM0VdffaXQ0FBlZmY2ym8LAAD+PbIOWQcAgJaOvEPeAQDAnhhkBlCn27dvq2PHjnJ1dW2U9lxdXVVYWKiSkhJ5eHgoICCg3nU/++wzxcXFyc/PT66urjKbzbp06VKtO17j4uLUoUMHGY3Getvp3r27fH19debMGaWnp993p+vFixdVUlKiWbNmyWAwqFevXpowYcLfXtxI0rhx4+Tr6yuj0ajQ0FBdunRJkpSRkaHhw4fr+eefl5ubm6ZPn67y8nLl5ubqu+++U2VlpV5++WW5ubkpNDRU/fr1++cfDgAA2AVZp35kHQAAWgbyTv3IOwAAPLzGSRgAWpwOHTrot99+U1VVVaNcjCxbtkwbNmxQWFiYvL29NWvWLI0YMaLOda9du6bly5dr5cqVtnlWq1XFxcW27+54eXk1aL+RkZFKT09Xbm6udu7cqZ9//tm2rKioSDdu3FBgYKBtXnV1da3punTt2tX2d5s2bXT37l1J0o0bN9SjRw/bMmdnZ3l5eam4uFguLi7q1q2bnJycbMv/d10AANC0yDr1I+sAANAykHfqR94BAODhMcgMoE4mk0nu7u7KyspSaGjoP67fpk0blZeX26arq6trfc/Gx8dHa9euVU1NjTIzMzVnzhydO3euVjD/i5eXl8xmc61v5fy/urarS0hIiJYsWaK+ffuqZ8+etS5EvLy85O3tXe+rjRq6j7889thjysvLs01brVZdv37ddgFSXFwsq9Vqa/fatWvq1avXv9oHAABoHGQdsg4AAC0deYe8AwCAPfG6bAB18vT01Jw5c7RkyRJlZWXp3r17qqys1PHjx/Wf//znvvV9fX1VUVGhL7/8UpWVldq8ebMsFott+b59+1RSUiJnZ2e1b99ekuTi4qJOnTrJ2dlZV65csa07ceJEpaSk6PLly5KkO3fu6PDhww90Hm3btlVaWpqWLVt237Knn35a7dq1U0pKisrLy1VdXa28vDxduHBBktS5c2cVFRWppqamQfsKCwvT8ePHa33Px2AwyGQyKSAgQK6urtq+fbuqqqqUmZmpixcvPtA5AQCAh0fWIesAANDSkXfIOwAA2BNPMgOo17Rp09S5c2d98MEHmj9/vjw8PNS3b1+Zzeb71vX09NS7776rt99+W9XV1YqNjVX37t1ty0+ePKkVK1aovLxcPXr00Lp16+Tu7i5JMpvNio6OVlVVlT788EMFBwerrKxM8fHxKioqkqenp4YMGaKwsLAHOo/6vo/j4uKizZs3a+XKlRo5cqQsFot8fX01d+5cSVJoaKj279+v5557Tt7e3kpPT//b/fTu3VurVq3S0qVLVVxcrCeffFJbtmyRwWCQJCUnJ+udd97R+vXrNXz4cAUHBz/Q+QAAgMZB1iHrAADQ0pF3yDsAANiLk9VqtT7qgwAAAAAAAAAAAAAANA+8LhsAAAAAAAAAAAAA0GAMMgMAAAAAAAAAAAAAGoxBZgAAAAAAAAAAAABAgzHIDAAAAAAAAAAAAABoMAaZAQAAAAAAAAAAAAANxiAzAAAAAAAAAAAAAKDBGGQGAAAAAAAAAAAAADQYg8wAAAAAAAAAAAAAgAZjkBkAAAAAAAAAAAAA0GD/BeL0OpA6CIq3AAAAAElFTkSuQmCC\n",
"text/plain": [
"<Figure size 1728x576 with 3 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plot_scores(\n",
" pd.concat([mnist_raw_results_long, mnist_pca_results_long, mnist_umap_results_long]),\n",
" score_types=(\"ARI\", \"AMI\", \"Silhouette\")\n",
")"
]
},
{
"cell_type": "markdown",
"id": "c8049f97",
"metadata": {},
"source": [
"# USPS Clustering"
]
},
{
"cell_type": "code",
"execution_count": 56,
"id": "99d3eb7b",
"metadata": {},
"outputs": [],
"source": [
"raw_usps = usps.data.astype(np.float32)"
]
},
{
"cell_type": "code",
"execution_count": 57,
"id": "363c837d",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"CPU times: user 1min 33s, sys: 930 ms, total: 1min 34s\n",
"Wall time: 1min 17s\n"
]
}
],
"source": [
"%%time\n",
"km_labels = cluster.KMeans(n_clusters=10).fit_predict(raw_usps)\n",
"cl_labels = cluster.AgglomerativeClustering(n_clusters=10, linkage=\"complete\").fit_predict(raw_usps)\n",
"sl_labels = cluster.AgglomerativeClustering(n_clusters=80, linkage=\"single\").fit_predict(raw_usps)\n",
"db_labels = cluster.DBSCAN(eps=3.5).fit_predict(raw_usps)\n",
"hd_labels = hdbscan.HDBSCAN(min_samples=10, min_cluster_size=100).fit_predict(raw_usps)"
]
},
{
"cell_type": "code",
"execution_count": 58,
"id": "f60de117",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"ARI: 0.5361\n",
"AMI: 0.6128\n",
"Silhouette: 0.1582\n",
"ARI: 0.1881\n",
"AMI: 0.3712\n",
"Silhouette: 0.0414\n",
"ARI: 0.0000\n",
"AMI: 0.0000\n",
"Silhouette: 0.1075\n",
"Pct clustered: 99.13%\n",
"ARI: 0.1936\n",
"AMI: 0.4639\n",
"Silhouette: -0.1174\n",
"Pct clustered: 47.35%\n",
"ARI: 0.9369\n",
"AMI: 0.9251\n",
"Silhouette: 0.4302\n",
"Pct clustered: 27.37%\n"
]
}
],
"source": [
"usps_raw_results = pd.DataFrame(\n",
" [\n",
" eval_clusters(km_labels, usps.target, raw_usps, cluster_method=\"K-Means\"),\n",
" eval_clusters(cl_labels, usps.target, raw_usps, cluster_method=\"Complete\\nLinkage\"),\n",
" eval_clusters(sl_labels, usps.target, raw_usps, cluster_method=\"Single\\nLinkage\"),\n",
" eval_clusters(db_labels, usps.target, raw_usps, cluster_method=\"DBSCAN\"),\n",
" eval_clusters(hd_labels, usps.target, raw_usps, cluster_method=\"HDBSCAN\"),\n",
" ]\n",
")\n",
"usps_raw_results_long = usps_raw_results.melt([\"Method\", \"Pct Clustered\"], var_name=\"Score Type\", value_name=\"Score\")\n",
"usps_raw_results_long[\"Dim Reduction\"] = \"None\""
]
},
{
"cell_type": "code",
"execution_count": 59,
"id": "2c3a7ad2",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAABHQAAAI0CAYAAAB8hH7gAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAAsTAAALEwEAmpwYAABE0klEQVR4nO3deZxWdd0//tfMsCnghoggGmq3SKS5kHupCIoCAq6JWpmiuJZaqVluuXF3mwtqLmkuWBoioLiTlmmopVYUqd2I4sKiEMqigsN8//Dn/JqbbbCZ65ozPp+Phw+5zvlc57yv6wxz3rzOVlFTU1MTAAAAAAqjstwFAAAAALB6BDoAAAAABSPQAQAAACgYgQ4AAABAwQh0AAAAAApGoAMAAABQMAIdAAAAgIIR6ABN1s9+9rN079493bt3zyuvvLLcMffcc0/tmE/+++IXv5g999wzp59+el588cXlvm/kyJHp3r17Ro4c2ZgfAQCgjtXtb4444ogVLuuNN97IlltuWTv2/1rRdKB5EOgATVJNTU3uvvvuVFRUJElGjx690vFbbrllTjrppJx00kk5/PDDs/7662fChAk5+OCD89xzz5WiZACAlVrd/qZFixb54x//uMLgZ/To0ampqUmLFi0avFag6RPoAE3Sk08+mTfeeCNDhgzJ+uuvn7Fjx2bx4sUrHN+jR4+cfPLJOfnkk3PWWWdl9OjROfTQQ7N48eJcccUVpSscAGAFVre/2WOPPZIsP/iprq7OPffck6222iodOnRorJKBJkygAzRJnzQuBx98cAYOHJh//etfmThx4mot46CDDkqS/O1vf2vw+gAAVtfq9jef//zns+2222bcuHFZsmRJnXm//e1vM3v27BxyyCGNWjPQdAl0gCbnnXfeyWOPPZZu3bplu+22ywEHHJAkueuuuz7V8pyGDACU26ftbw4++ODMnTs3v/nNb+pMHz16dNZcc83st99+jVYz0LQJdIAm55577smSJUtqG50tttgiPXv2zDPPPJPXXnut3sv59a9/nSTZfvvtG6VOAID6+rT9zX777Zd27drVuexq1qxZeeKJJ9K/f/+0a9eu0WsHmiaBDtCk1NTUZPTo0amsrMzgwYNrpw8ZMqR23vL84x//yMiRIzNy5MhccsklOfDAAzN69OhssMEGOeOMM0pUPQDAsj5tf5Mka6yxRgYMGJCnnnoqb7zxRpLk7rvvTnV1tcut4DNOoAM0KU8//XSmT5+eXXbZJZ06daqdPmDAgLRs2TJjx45d5hryJHnxxRdz9dVX5+qrr84tt9ySv/3tb+nSpUvuuuuubLrppqX8CAAAdXza/uYThxxySO0TspYuXZoxY8ake/fu2XrrrUtRPtBECXSAJuWT68g/OR35E+uuu2569+6dd955Z5lryJOPj3C99NJLefHFF/PUU0/l1FNPzYwZMzJ8+PC8//77JakdAGB5Pm1/84mePXumZ8+eueeee/LEE0/kzTffdHYOINABmo65c+fWPunhtNNOS/fu3ev89/DDDyf5/++NszwVFRVZf/31M3z48Bx11FF56aWXPLYcACibhuhvko/P0pk1a1bOPffctGnTJvvvv3+j1w40bR79AjQZn5xu3LNnz/To0WO5Yx577LH84Q9/yOuvv56NN954pcs78cQTM27cuNxxxx054ogjVjkeAKChNVR/M2DAgIwYMSIzZ87M4MGDs9ZaazVm2UABCHSAJuOTGwKed955K7wm/IorrsjPfvaz3H333Tn11FNXurx27dpl2LBhGTFiRK6++uqMGDGiwWsGAFiZhupv2rVrlxtvvDHz5s1Lz549G61eoDhccgU0Cc8880ymTZuWLbbYYqU3+DvooINSUVGRMWPG5KOPPlrlcocOHZqOHTvm3nvvzf/+7/82ZMkAACvV0P1Nr1690qdPn3Tu3LkxygUKRqADNAmfXDd+8MEHr3Rc165ds8suu+Ttt9/O448/vsrltmnTJscdd1yWLl2aK6+8skFqBQCoj8bqbwCSpKKmpqam3EUAAAAAUH/O0AEAAAAoGIEOAAAAQMEIdAAAAAAKRqADAAAAUDACHQAAAICCEegAAAAAFEyLchfQ0P71r4VZutST2AHgs6KysiLrrtu23GWUhD4HAD47VtXjNLtAZ+nSGo0OANAs6XMAgE+45AoAAACgYAQ6AAAAAAUj0AEAAAAoGIEOAAAAQMEIdAAAAAAKRqADAAAAUDACHQAAAICCEegAAAAAFIxABwAAAKBgBDoAAAAABSPQAQAAACgYgQ4AAABAwQh0AAAAAApGoAMAAABQMAIdAAAAgIIR6AAAAAAUTEkCnREjRqR3797p3r17Xn755eWOqa6uzvnnn58+ffqkb9++GT16dClKAwD4j+hzAIBy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UFE/jfUzDNBU6XHqrzH2EavqcUpyyVWHDh3So0ePTJgwIUkyYcKE9OjRI+utt16dcQMGDMiTTz6ZmpqaLFmyJE8//XS23HLLUpQIALDa9DgAQLmU7LHl5513XkaNGpV99tkno0aNyvnnn58kGTZsWCZPnpwk6d+/fzp06JD99tsvgwcPzuc///kcdNBBpSoRAGC16XEAgHKoqGlmd+RzyRUApdaxY/s8/uyr5S6jSdtzh27N8pKrUmvMS64Gnj6+wZfbnNx32SCXXAGfOXqc+mmsPqdJXHIFAAAAQMNpUk+5AgAoh6lTp+ahhx7KO++8k3PPPTdTp07NkiVL3OcGAGiy6n2GztSpU3PNNdfUXhc+derUvPjii41WGABAKTz44IM54ogjMmvWrIwf//FlR4sWLcqll15a5soAAFasXoGORgcAaK6uuuqq3HzzzbngggtSVVWVJNlyyy0duAIAmrR6XXL1SaPTo0ePPPjgg0k0OgBA8zB37tzaS6sqKipq///JnwEAmqJ6naGj0QEAmquePXvWnoH8ifvvvz9bb711mSoCAFi1ep2h80mjM3jw4NppGh0AoDk4++yzc/TRR+fuu+/OokWLcvTRR2fatGm5+eaby10aAMAK1SvQ0egAAM1RTU1NWrVqlQkTJuSJJ57IHnvskc6dO2ePPfZI27Zty10eAMAKrTLQ0egAAM1VRUVFBg4cmOeffz777bdfucsBAKi3VQY6Gh0AoDnr0aNHpk2bls0337zcpQAA1Fu9LrnS6AAAzdUOO+yQYcOGZciQIdlwww3rPPThoIMOKmNlAAArVq9AR6MDADRXzz//fDbaaKM8++yzdaZXVFTocwCAJqtegY5GBwBorm6//fZylwAAsNrqFehodACA5uzdd9/N448/nlmzZqVTp07Zc889s/baa5e7LACAFaqs78B3330348aNy/XXX59x48bl3Xffbcy6AABK4oUXXkjfvn1z55135qWXXsqdd96Zvn375oUXXih3aQAAK1SvM3ReeOGFHHfccdlss83SpUuXPP7447n44otz/fXXZ9ttt23sGgEAGs3FF1+cc889N/3796+d9sADD+TCCy/MmDFjylgZAMCK1SvQ0egAAM3Vq6++mn333bfOtH322SfnnntumSoCAFi1el1ytaJGZ/r06Y1SFABAqXzuc5/L/fffX2faQw89lI033rhMFQEArFq9ztD5pNEZOHBg7TSNDgDQHPzgBz/I8OHDc/vtt6dLly55880389prr+W6664rd2kAACtUr0BHowMANFfbbbddHn300fz2t7/N7Nmzs+eee2b33XfPOuusU+7SAABWqF6BjkYHAGiuZs2alTZt2mTQoEG10959993aR5gDADRF9bqHzqxZs5IkgwYNyrBhwzJo0KBUVFTUTgcAKKoTTjghM2fOrDNt5syZOemkk8pUEQDAqtUr0NHoAADN1auvvpru3bvXmda9e/e88sorZaoIAGDV6v2UK40OANAcrbfeennttdfqTHvttddcWg4ANGn1uofOJ43O5z73udppn7VGp/1aa6RN63p9XZ9pH3z4Uea/9365ywCAejvwwANz8skn59RTT83GG2+c6dOn58orr8zBBx9c7tIAAFaoXgmFRidp07pFBp4+vtxlNHn3XTYo88tdBACshmOPPTYtWrTIiBEjMnPmzGy44YY5+OCDc9RRR5W7NACAFapXoKPRAQCaq8rKyhxzzDE55phjyl0KAEC91SvQ0egAAM3NW2+9lcrKymy44YZJkvfffz/XXXddXn755Wy77bY5+uijU1VVVeYqAQCWb6U3RX7rrbfqPN3q/fffz+WXX57jjz8+N9xwQ6qrqxu9QACAxnD22Wdn8uTJta8vuOCC3H///enWrVvGjBmTK6+8sozVAQCs3EoDHY0OANBcvfjii9l1112TJIsWLcoDDzyQK664ImeccUauvfba3H///WWuEABgxVYa6Gh0AIDmasmSJVlzzTWTJJMnT07btm3zxS9+MUmy+eab51//+lc5ywMAWKmVBjoaHQCgueratWueeeaZJMljjz2WHXfcsXbe3Llzs8Yaa5SrNACAVVrpTZE/aXR23HFHjQ4A0KycdNJJOfHEE7PxxhvnlVdeye2331477ze/+U222mqrMlYHALByKw10NDoAQHPVp0+f3HPPPfnHP/6RL3zhC9l4441r52222WbZZpttylccAMAqrDTQ0egAAM3ZJptskk022WSZ6dtvv30ZqgEAqL+VBjqJRgcAAACgqVnpTZEBAAAAaHoEOgAAAAAFI9ABAAAAKJhV3kMHAKA5Gjp0aCoqKlY65o477ihRNQAAq2elgY5GBwBorg4++OBylwAA8KmtNNDR6AAAzdWQIUPKXQIAwKe20kBnVY3OkiVLGrQYAIBSGTdu3CrHDB48uNHrAAD4ND7VPXQWL16cO++8MzfddFN+97vfNXRNAACN7swzz8znPve5rL/++qmpqVlmfkVFhUAHAGiyVhrovPLKKzn77LPz4osvplu3bhkxYkSmTZuWCy+8MJ06dcoZZ5xRqjoBABrUkUcemYcffjht27bN4MGD06dPn7Rq1arcZQEA1MtKA52LLroo3bp1y/DhwzNhwoSccMIJadOmTUaMGJFddtmlVDUCADS4s88+O2eeeWZ+//vfZ9y4cbn44ouzxx57ZPDgwenVq1e5ywMAWKmVBjp/+9vf8vvf/z6tWrXKl7/85Wy//fZ5/PHHs+GGG5aqPgCARlNVVZU99tgje+yxRxYsWJBrr702X//613PzzTdnp512Knd5AAArtNJAZ8mSJbWnHq+55ppp3769MAcAaFbmz5+f+++/P+PGjcvcuXNzwgknpEePHuUuCwBgpVYa6CxevDhXXnll7esPPvigzusk+fa3v904lQEANKLHH388Y8eOzfPPP5/evXvne9/7XrbffvtylwUAUC8rDXQGDhyYmTNn1r7u379/ndcAAEV1/PHHZ9NNN83AgQPTpk2bPPnkk3nyySfrjHHgCgBoqlYa6FxyySUrffPSpUsbtBgAgFIZPHhwKioqMm/evHKXAgCw2lYa6KzISy+9lHHjxuW+++5b5kgWAEARXHrppSud78AVANCU1TvQmTt3bu67776MGzcuL774YrbffvucffbZjVkbAEDJOXAFABTBKp9y9dhjj2Xs2LF58skns8kmm6R///556623cuWVV6ZDhw6lqhMAoNE4cAUAFM1KA51dd901FRUVOeCAA3LyySenZ8+eSZJf/epXJSkOAKCxOHAFABTZSgOd7t2757nnnstf/vKXfO5zn0vXrl2z9tprl6o2AIBG48AVAFBklSubefvtt+fRRx/Nrrvumptvvjm77rprhg8fnkWLFuWjjz4qVY0AAA2ue/fumT9/fv7yl79k8uTJeffdd8tdEgBAva3ypsgbbbRRTjzxxJx44on505/+lPHjx6eysjL7779/DjzwwHz/+98vRZ0AAA3q9ttvz5tvvplx48bl5ptvzoUXXpjddtvNgSuAJmCdddZMy5ZV5S6jyVuypDrz5i0qdxmUyWo9trxXr17p1atXfvjDH+bRRx/N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oAwaNChDhgzJpEmTkiQ1NTW56qqr0r9//+y///7Zb7/98otf/KJ2uW+//Xa+//3vZ6+99sqAAQMyePDg/PrXv66z7m9/+9vZeeedl/m72L179xxzzDHLTFu4cGFjfAVlsbyfxQMOOCDPPPNMRo4cmZ133jmDBw/OPvvskwMPPDC33XZbnf1F9+7dM3DgwNq/J5dffnntvKeffjoHH3xwBg0alH333Tdf//rXs3Tp0iQfb7dbb701/fv3z3777Zd+/frlhz/8Yd57773a9//ud79L9+7dM3HixDr1nXnmmdlqq63y1ltv1Zk2atSoBv1uKCZ9Tvnoc4pFn1M6epzy0OOUXotyF/BZMn/+/Bx77LHp2bNnzj777FRUVNSZ//nPfz73339/Dj/88CTJ2LFj07Nnz3KU2mycddZZ+fDDDzNmzJi0a9cuS5YsyT333JPFixenZcuW5S4vSXLbbbdll112SYcOHcpdSlnNnj07559/fsaOHZvOnTunpqYmL774YpJk/PjxZa6u+brqqquyxRZbJEkeeeSRHHvssbnpppuSJLvsskuuuuqqJB/vBC+44II8+OCDeeihhzJp0qTcc889ad26dRYvXpzp06cn+fgfc0cccUQOOOCAXHrppamsrMx7772XBx54oHad8+bNy6RJk7Lpppvm8ccfz957712npldeeSXPPvtsdthhh1J8BU3O4MGDc8YZZyRJXn/99Xzve9/L9OnT88Mf/rB2zJ133pm2bdvm/fffT//+/dO7d+/07Nkzp5xySm677bZsueWWSZIpU6bU7muuuOKK/PGPf8ytt96a9ddfP0uXLs3EiRPz7rvvZq211kqSjBkzJjvttFPuvvvu9OnTp05dHTt2zMiRI3PJJZeU4muggPQ5pafPKQ59TunpcZoePU7DE+iUyJw5c/L9738/e+65Z7797W8vd8yQIUMyfvz4HH744Vm4cGGef/757Lffflm8eHHtmBtvvDEPP/xwqqur06lTp/z4xz9Ox44dM2nSpFxxxRX58MMPU11dneHDh6d///5JPj4q9sUvfjF//vOfM3v27Oy777757ne/myS5+uqrM2HChLRu3ToVFRW57bbban/oi+7VV1/NxIkT87vf/S7t2rVLkrRs2TKHHnpoqqurM2LEiPz+979PknzlK1/Jd7/73VRVVeXMM89Mq1at8uqrr+b1119P3759s+eee2bkyJGZOXNmvvGNb+Qb3/hGko9T6P79++f555/P7Nmz841vfCNHHHHEMrXMnj07F154Yd566618+OGH6d+/f4YPH56f/exnmT17dk455ZS0bt06l112WTbZZJNcfvnl+eMf/5glS5Zkiy22yHnnnZe2bduW7ssrg3feeSctWrTIOuuskySpqKhIjx49knyc1j///PNp27ZtevfunUGDBuUPf/hD3n777XzrW9+q/c7/9Kc/5fzzz0+S7LjjjvnNb36T66+/vnZn/okVbY/Pur333jt//etfc9NNN2WPPfaoM2/+/PlZe+21kySzZs3Kuuuum1atWiVJWrVqlc9//vNJkgkTJmSdddbJcccdV/vetdZaK1/72tdqX997773Zfffds9tuu2XMmDHLNDsnn3xyfvrTn+bOO+9sjI9ZKBtvvHEuuuii7L///vn2t7+d9u3b15n//vvv56OPPkr79u2zcOHCLFq0KOuvv37t/C984QtJkoULF+YXv/hFxo0bVzu/srKyznf/r3/9K5MmTcqDDz6Y/v375+23307Hjh1r53/ta1/LqFGj8r//+7+12xs+oc8pPX1OsehzykuP0/TocRqGQKdEvvOd72To0KErbHKSj3+oW7VqlalTp+bPf/5z+vTpkxYtWtQ2OuPHj8/06dPz61//OpWVlfnlL3+ZSy+9NJdddlm+8IUv5Je//GWqqqryzjvv5IADDshuu+1W+8tpxowZueOOO7Jw4cL06dMnBx10UNZdd93cdNNNmTRpUtq0aZMFCxakTZs2Jfk+SmHKlCn53Oc+V/sd/Lu77ror//jHP3LPPfckSYYNG5a77rorQ4cOTZL885//zK233prq6ur07t078+fPz6hRo/L222+nX79+Oeigg2obj3feeSd33HFH3nnnnQwePDi9evWqTY4/ccYZZ+SEE07Il7/85SxevDjf/OY3s9VWW+X444/P6NGj6xxBuPbaa9O+ffvcfffdSZKf/OQnueGGG3Lqqac22nfVFGy55ZbZeuuts8cee2THHXfMdtttl0GDBmXdddddZuwHH3yQu+66K2+88UYGDhyYIUOGpGXLljnttNPy05/+NL169cqjjz6a22+/fbnrWtH22HXXXRv7YzZ5X/rSl/LYY49ljz32yB/+8IcMGjQoixYtyty5c3P99dcnSfbbb7/86le/yt57751evXplp512Sv/+/dOiRYv8/e9/z9Zbb73Sddxzzz0544wzsu222+biiy/OrFmz0qlTp9r5e++9d+64445MnDhxmSMozcUn/7j5xKuvvrrCsZtvvnnatGmTadOm1X63nzSPr732Wg477LBsttlmSZJDDjkke++9d3bYYYdst912GThwYDp37pypU6emVatWteOWZ/z48dlzzz2z/vrrp2/fvhk3blyGDRtWO3/NNdfMcccdl8svvzzXXHPNf/LxaYb0OaWnzykWfU756XFKQ49TWgKdEtl9993zwAMP5LDDDssGG2ywwnGDBw/O2LFj85e//CU/+tGP8vDDD9fOe+yxx/K3v/0tQ4YMSZJUV1fXHpGZO3dufvCDH+S1115LVVVV3n333UybNi3bbLNNkqRfv36prKxM+/bts/nmm2f69OnZeOONs+mmm+Z73/tevvKVr2SPPfaoXV5zN2nSpAwZMqQ2fT/ggAMyceLE2kanT58+tfM23XTT7L777qmsrEynTp2y1lprZebMmdl8882TJAcddFCSZP31188ee+yRZ599tk6js2jRojz77LOZO3du7bSFCxdm6tSpy92xPvbYY1mwYEHttl+8ePEyjVNzVFlZmWuvvTYvv/xy/vjHP2bixIm56aabct999y0zdr/99kuSdO3atXZ7LFmyJG3atEmvXr2SJH379l3uUdjV3R6fNTU1NbV//vfTkZ955pmcdtppefjhh7PBBhvk/vvvz5///Oc899xzue6663LvvffmpptuqvP+5ZkyZUree++97LTTTqmoqEjfvn0zfvz4HHvssXXGnX766bnooovSu3fvhv+QTcC//+Mm+fh30Or45HTk9957L9/4xjdqG8NzzjknRx11VJ5++uk88cQTuf766zNmzJhVbpfk4yb0rLPOSvLxmRRnn312nWYn+biZ+sUvfpG//OUvq1UvzZ8+p2nR5zQ9+pzy0+OUhh6ntAQ6JXLMMcfk8ccfz5FHHpnhw4fnlltuSZIMHDiwzs2x9t133/Tv3z/rr79+tthiizqNTk1NTY4//vjaHeu/O++889K7d+9cffXVqaioyD777JMPP/ywdv6/p6RVVVWprq5OVVVVfv3rX+f555/P008/nQMOOCA///nPm81O9Qtf+EJee+21vPvuu8scvaqpqVnm2v5/f/1/v6/lfX/Ls7zlLl26NBUVFbn77rvrdT17TU1Nzj333Oy8886rHNscbbHFFtliiy1y+OGHZ7/99suzzz67zJgVbY//+90vz+puj8+ayZMn57/+67+Wmb7jjjvmo48+yj//+c9svfXWadGiRXr16pVevXrlwAMPzK677pp58+bli1/8YsaMGbPC5d9999157733stdeeyX5uJFv27btMs3OzjvvnPXXXz/33ntvw37AAnrllVfywQcfLPfI01prrZVddtklTz31VO2Rvo033jgbb7xxDj744Np9zyGHHJIPP/ww06ZNy6abbrrMciZPnpypU6fm7LPPrp02e/bsPP/889luu+1qp7Vs2TInn3xyLrvssnTp0qURPi1Fpc8pPX1OMelzykeP0/Tocf5znnJVQscdd1yGDBmS6667LjfeeGPGjx+/zJ3O27Ztm+9///u1N4v6d717984vf/nLvPvuu0k+/iXxyc3U5s+fn4022igVFRV56qmn8tprr62yngULFmTu3LnZYYcdcsopp2SLLbbIP//5zwb4pE1Dt27d0rt375xzzjlZsGBBko+P9t16663ZcccdM3bs2CxZsiRLlizJuHHjPnVjMXbs2CQfHz184oknlrnJWbt27bL99tvnhhtuqJ02Y8aMvP3220k+3ubz58+vnde7d+/ccssttU87WLBgQaZOnfqpaiuSWbNm5YUXXqh9PXPmzMydOzddu3at1/s322yzLFq0KM8991ySZOLEiXXubP+JVW2Pz7KJEyfmV7/6VY466qhl5r300ktZuHBhunbtmr/97W954403auf9/e9/z9prr5211lor/fv3z9y5c/Pzn/+89ojJe++9l1tvvTWLFy/O/fffn7vvvjuPPfZYHnvssTz55JOpqKjIn/70p2XWefrpp2fkyJGN94EL4I033sjZZ5+dww47bLlnFixevDgvvPBCunXrloULF+bJJ5+s872/8cYb6dq1a9q2bZtvfvObOeecc2qfNlNTU5N7770306dPz5gxY3LMMcfUbpfHHnssJ5988nIb14EDB2bevHnL/UcIn236nNLS5xSLPqe89DhNjx6nYThDp8SGDx+empqaHHnkkbntttvqXFP5iU9Os/y/Bg8enHnz5tXeGK2mpiaHHXZYttxyy5x++uk5//zzc+ONN6Z79+7p3r37KmtZsGBBTj755HzwwQepqanJF77whWVu3FV0l156aa655poceOCBadmyZZYuXZrdd989p556at58883a07p32223HHLIIZ9qHZ07d87QoUPz9ttv57jjjlvud/8///M/ueSSSzJw4MAkHzc3F110UTp27Jivf/3r+cEPfpA2bdrksssuy7HHHpurr746Bx10UCoqKlJRUZGTTjqp9tTn5uqjjz7KyJEj8+abb6ZNmzZZunRpvvOd79Te8GxVWrVqlcsuuyznnXde2rRpk5122inrr7/+MjdYS1a+PT5rTjnllLRq1Srvv/9+Nt9889xwww3ZZptt8sorr9ReX15TU5OamppccsklWW+99fL3v/89559/fhYsWJBWrVpljTXWyDXXXJPKysqsueaauf322/OTn/wke+21V9q2bZsWLVpk6NChmThxYjbZZJN069atTg0DBgzImDFjak8j/8RWW22Vnj171mmsPgvGjRuXSZMm5f3330+7du0ycODAHHnkkXXGfO1rX0tlZWU+/PDD7LDDDjnssMOyePHi3HHHHfnxj3+c1q1bp7q6OgMHDkzfvn2TJKeddlpuueWW2mXV1NSkV69e2XnnnfPAAw/kV7/6VZ11DBgwIPvvv3+dI1rJx5cNnHrqqZ/5G2yyfPqc0tLnFIc+p/T0OE2PHqfhVdTU56IzYLl69+6d6667bpmnC1AeCxYsqE34n3766Zx55pl57LHHUlnpZEQAWF36nKZFnwP8X87QAZqNRx55JLfccktqampqj2RpcgCA5kCfA/xfztABAAAAKBiRLp85vXv3zssvv1xn2rBhwzJ9+vRVvvfII4/M448/3lilfabYDgDQsOxbmw7bAigFl1xBkhtvvLHcJRDbAQAamn1r02FbAA3NGTqQukdRjjzyyIwYMSKHHXZY9tprr/zP//zPct9z//3358ADD8zMmTNz33335eCDD87gwYMzePDgTJo0qXbcn/70pwwcODADBw7MhRdemD333LN2Xa+88kqOOeaYHHjggdl///2X+/i8zxLbAQAaln1r02FbAA3NGTqwHDNmzMgdd9yRhQsXpk+fPjnooIPqPIbwxhtvzFNPPZVbbrkl7du3z2677ZYBAwakoqIir7zySr75zW/miSeeyOLFi3Paaaflpz/9aXr16pVHH300t99+e5KPH1/53e9+Nz/5yU+y+eabZ8GCBTnwwAOzzTbbNPtHd9aX7QAADcu+temwLYD/lEAHlqNfv36prKxM+/bts/nmm2f69Om1O9iRI0emS5cuueGGG9KqVaskyeuvv57TTz89s2bNSosWLfLOO+/k7bffzpw5c9KmTZv06tUrSdK3b9+stdZaSZJXX301U6dOzWmnnVa73iVLluSVV16xg/3/2A4A0LDsW5sO2wL4Twl0YDlat25d++eqqqpUV1fXvt5mm23y1FNP5a233qrd6Z522mk588wz06dPnyxdujRf+tKX8uGHHyZJKioqlruOmpqarLvuuhk/fnzjfZCCsx0AoGHZtzYdtgXwn3IPHVhNX/nKV3Leeefl2GOPzT//+c8kyfz589O1a9ckyd13353FixcnSTbbbLMsWrQozz33XJJk4sSJee+995Ikm266adq0aZNx48bVLnvq1KlZsGBBCT9NcdkOANCw7FubDtsCqA9n6PCZdNRRR6Wqqqr29cKFC1fr/TvvvHMuueSSHH/88bnyyitz1lln5YQTTkinTp2yww47ZJ111kmStGrVKpdddlnOO++8tGnTJjvttFPWX3/9tG/fPi1atMh1112Xiy++ODfddFOWLl2aDh065IorrmjAT9q02Q4A0LDsW5sO2wJobBU1NTU15S4CmrMFCxakXbt2SZKnn346Z555Zh577LFUVjpBrpRsBwBoWPatTYdtAZ9NztCBRvbII4/klltuSU1NTe0RFDvX0rMdAKBh2bc2HbYFfDY5QwcAAACgYMS2AAAAAAUj0AEAAAAoGIEOAAAAQMEIdIBPZeTIkfnud79b7jJK6sgjj8zo0aMbZFlnnnlmLr/88gZZFgDQcPQ4/xk9DpSOQAdYofvuuy8HHHBAtt122+y222455phj8qc//anBlv/GG2+ke/fu+eijjxp8mUOGDKkzfe7cufniF7+Y3r1712s5n8VmDgA+K/Q4ehxoDgQ6wHL94he/yMUXX5zhw4fnqaeeyuOPP56hQ4fmN7/5TblLq7WyJmnRokV5+eWXa19PmDAhG220USnKAgCaMD0O0FwIdIBlzJ8/P1dddVXOOeec7L333llzzTXTsmXL9O7dO2ecccYy45955pl89atfrTOtd+/e+cMf/pAk+etf/5oDDjgg2223XXbZZZdccsklSZIjjjgiSfLlL3852267bV544YUkyd1335199903X/7yl3P00UfnzTffrF1u9+7dc8cdd2TvvffO3nvvvcLPMGjQoIwdO7b29bhx4zJ48OA6Y2bNmpWTTz45O+20U3r37p3bbrstSfLEE0/k+uuvz4MPPphtt902+++/f+173nzzzXzta1/Ltttum29961uZO3du7bzf/OY36d+/f3r16pUjjzwyU6dOrZ03ZcqUDBkyJNtuu22+853v5MMPP1xh7QBA49Dj6HGgORHoAMt44YUX8uGHH6Zv374NsryLLrooX//61/P888/n0Ucfzb777pskGTVqVJLkj3/8Y1544YVsu+22mThxYq6//vpcffXVmTRpUrbffvucfvrpdZY3ceLE/PrXv84DDzywwnXuv//+eeCBB1JdXZ2pU6dm4cKF+dKXvlQ7f+nSpTn++OPTvXv3PPHEE7n11ltz66235ve//32++tWv5rjjjsu+++6bF154Iffee2/t+yZMmJBLLrkkkyZNypIlS3LzzTcnSaZNm5bTTz89P/jBDzJp0qR89atfzfDhw7N48eIsXrw4J554YgYNGpRnn302/fr1yyOPPNIg3y0AUH96HD0ONCcCHWAZ8+bNy7rrrpsWLVo0yPJatGiR6dOnZ+7cuWnbtm222WabFY698847c+yxx2bzzTdPixYtMnz48PzjH/+ocwTr2GOPzTrrrJM2bdqscDkbbrhhNt100/zhD3/I2LFjlzlyNXny5MydOzcnnXRSWrVqlY033jiHHHLIShuoJDnggAOy6aabpk2bNunXr1/+8Y9/JEkeeOCB7L777tl1113TsmXLHH300fnggw/ywgsv5C9/+UuWLFmSb3zjG2nZsmX69euXrbbaatVfHADQoPQ4K6bHgeJpmN9kQLOyzjrr5F//+lc++uijBml4Lrroolx11VXZd99907Vr15x00knZc889lzv2rbfeysUXX5wRI0bUTqupqcmsWbNqrw/v3LlzvdY7ePDgjB07Ni+88EJGjRqV1157rXbem2++mdmzZ6dXr16106qrq+u8Xp6OHTvW/nmNNdbIokWLkiSzZ89Oly5daudVVlamc+fOmTVrVqqqqtKpU6dUVFTUzv/3sQBAaehxVkyPA8Uj0AGWse2226Z169aZOHFi+vXrt8rxa6yxRj744IPa19XV1XWuu+7WrVt++tOfZunSpXnkkUdyyimn5Jlnnqmz8/9E586dM3z48DrXdP9fy3vf8uy999654IIL0rNnz2y00UZ1mp3OnTuna9euKzwtuL7r+MQGG2xQ5waFNTU1mTFjRm2TM2vWrNTU1NQu96233srGG2+8WusAAP4zehw9DjQnLrkCltG+ffuccsopueCCCzJx4sS8//77WbJkSX73u9/lv//7v5cZv+mmm+bDDz/Mb3/72yxZsiQ/+9nPsnjx4tr548ePz9y5c1NZWZm11lorSVJVVZX11lsvlZWVef3112vHfu1rX8sNN9yQf/7zn0k+vnnhgw8++Kk+x5prrplbb701F1100TLztt5667Rr1y433HBDPvjgg1RXV+fll1/OX//61yRJhw4d8uabb2bp0qX1Wte+++6b3/3ud3WuO2/VqlW23XbbbLPNNmnRokVuu+22fPTRR3nkkUcyefLkT/WZAIBPT4+jx4HmxBk6wHIdddRR6dChQ6699tp897vfTdu2bdOzZ88MHz58mbHt27fPueeemx/+8Ieprq7OMccckw033LB2/u9///tceuml+eCDD9KlS5dcfvnlad26dZJk+PDhOeyww/LRRx/l5z//efr27ZuFCxfmtNNOy5tvvpn27dtnl112qb3J4Opa0XXcVVVV+dnPfpYRI0Zkr732yuLFi7PpppvmO9/5TpKkX79+uffee7Pjjjuma9eudZ4msTybbbZZfvKTn+THP/5xZs2alR49euS6665Lq1atkiQjR47Mj370o1xxxRXZfffdG+xmjADA6tHj6HGguaioqampKXcRAAAAANSfS64AAAAACkagAwAAAFAwAh0AAACAghHoAAAAABSMQAcAAACgYAQ6AAAAAAUj0AEAAAAoGIEOAAAAQMEIdAAAAAAK5v8Bqc2C1y1d9w0AAAAASUVORK5CYII=\n",
"text/plain": [
"<Figure size 1152x576 with 2 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plot_scores(usps_raw_results_long)"
]
},
{
"cell_type": "code",
"execution_count": 60,
"id": "d829d534",
"metadata": {},
"outputs": [],
"source": [
"pca_usps = PCA(n_components=32).fit_transform(raw_usps)"
]
},
{
"cell_type": "code",
"execution_count": 61,
"id": "1bf99d34",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"CPU times: user 19.2 s, sys: 655 ms, total: 19.8 s\n",
"Wall time: 11.1 s\n"
]
}
],
"source": [
"%%time\n",
"km_pca_labels = cluster.KMeans(n_clusters=10).fit_predict(pca_usps)\n",
"cl_pca_labels = cluster.AgglomerativeClustering(n_clusters=10, linkage=\"complete\").fit_predict(pca_usps)\n",
"sl_pca_labels = cluster.AgglomerativeClustering(n_clusters=80, linkage=\"single\").fit_predict(pca_usps)\n",
"db_pca_labels = cluster.DBSCAN(eps=2.0).fit_predict(pca_usps)\n",
"hd_pca_labels = hdbscan.HDBSCAN(min_samples=10, min_cluster_size=100).fit_predict(pca_usps)"
]
},
{
"cell_type": "code",
"execution_count": 62,
"id": "fe5ac8ee",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"ARI: 0.5394\n",
"AMI: 0.6148\n",
"Silhouette: 0.1585\n",
"ARI: 0.3321\n",
"AMI: 0.4730\n",
"Silhouette: 0.1053\n",
"ARI: 0.0000\n",
"AMI: 0.0000\n",
"Silhouette: 0.1896\n",
"Pct clustered: 99.12%\n",
"ARI: 0.9765\n",
"AMI: 0.8709\n",
"Silhouette: 0.3859\n",
"Pct clustered: 18.18%\n",
"ARI: 0.9606\n",
"AMI: 0.9390\n",
"Silhouette: 0.3968\n",
"Pct clustered: 29.19%\n"
]
}
],
"source": [
"usps_pca_results = pd.DataFrame(\n",
" [\n",
" eval_clusters(km_pca_labels, usps.target, raw_usps, cluster_method=\"K-Means\"),\n",
" eval_clusters(cl_pca_labels, usps.target, raw_usps, cluster_method=\"Complete\\nLinkage\"),\n",
" eval_clusters(sl_pca_labels, usps.target, raw_usps, cluster_method=\"Single\\nLinkage\"),\n",
" eval_clusters(db_pca_labels, usps.target, raw_usps, cluster_method=\"DBSCAN\"),\n",
" eval_clusters(hd_pca_labels, usps.target, raw_usps, cluster_method=\"HDBSCAN\"),\n",
" ]\n",
")\n",
"usps_pca_results_long = usps_pca_results.melt([\"Method\", \"Pct Clustered\"], var_name=\"Score Type\", value_name=\"Score\")\n",
"usps_pca_results_long[\"Dim Reduction\"] = \"PCA\""
]
},
{
"cell_type": "code",
"execution_count": 63,
"id": "a82a3e90",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAABREAAAI0CAYAAACKxG4UAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAAsTAAALEwEAmpwYAABSqklEQVR4nO3debhVddk//vcZGJRJRUQQFcVEwjEphywRQVBAcE7SyhRFU0ut1CyncuDpsVTUHDLFsDREQFHTSMs0nK0s0npwwIFBOYoCynA4vz/8en6dgCUg7H2A1+u6vGSv9dlr3Wuvc/a+z3sNu6Kurq4uAAAAAADLUFnuAgAAAACAxk2ICAAAAAAUEiICAAAAAIWEiAAAAABAISEiAAAAAFBIiAgAAAAAFBIiAgAAAACFhIhAo/Wzn/0sXbt2TdeuXfPiiy8udcydd95ZP+aj/7bffvvss88+OeOMM/L8888v9XkjRoxI165dM2LEiNW5CQAADaxof3PUUUctc1mvvfZatttuu/qx/21Z0wFgZQgRgUaprq4ud9xxRyoqKpIko0ePLhy/3Xbb5eSTT87JJ5+cL3/5y9l4440zYcKEHHbYYXn66adLUTIAQKEV7W+qq6vz5JNPLjNsHD16dOrq6lJdXb3KawWA/yZEBBqlRx55JK+99loOOuigbLzxxhk7dmwWLFiwzPHdunXLKaecklNOOSVnn312Ro8enSOOOCILFizI5ZdfXrrCAQCWYUX7m549eyZZethYW1ubO++8MzvssEPatm27ukoGgHpCRKBR+qhZPuywwzJw4MC8/fbbmThx4got49BDD02S/P3vf1/l9QEArKgV7W+22Wab7LLLLhk3blwWLlzYYN4f/vCHzJw5M4cffvhqrRkAPiJEBBqdt956Kw8++GA6d+6cz3zmMzn44IOTJLfffvtKLc8lPgBAua1sf3PYYYelpqYmv//97xtMHz16dNZff/0ccMABq61mAPhPQkSg0bnzzjuzcOHC+uZ62223Tffu3fP444/nlVdeWe7l/OY3v0mS7LrrrqulTgCA5bWy/c0BBxyQli1bNrikecaMGXn44YfTv3//tGzZcrXXDgCJEBFoZOrq6jJ69OhUVlZm8ODB9dMPOuig+nlL889//jMjRozIiBEjcskll+SQQw7J6NGjs8kmm+TMM88sUfUAAEta2f4mSdZbb70MGDAgjz76aF577bUkyR133JHa2lqXMgNQUkJEoFF57LHHMnXq1Oy5555p3759/fQBAwakSZMmGTt27BL3BEqS559/PldddVWuuuqq3Hzzzfn73/+ejh075vbbb89WW21Vyk0AAGhgZfubjxx++OH13+y8ePHijBkzJl27ds2OO+5YivIBIIkQEWhkProv0EeX+nxkww03TK9evfLWW28tcU+g5MMj+S+88EKef/75PProoznttNMybdq0DBs2LO+//35JagcAWJqV7W8+0r1793Tv3j133nlnHn744bz++uvOQgSg5ISIQKNRU1NT/w2Fp59+erp27drgv/vvvz/J/3+vw6WpqKjIxhtvnGHDhuWYY47JCy+8kMsvv7wU5QMALGFV9DfJh2cjzpgxI+edd16aN2+eAw88cLXXDgD/yVeWAo3GR5fydO/ePd26dVvqmAcffDB//vOf8+qrr2bzzTcvXN43vvGNjBs3LrfeemuOOuqojx0PALCqrar+ZsCAARk+fHimT5+ewYMHp3Xr1quzbABYghARaDQ+uqn4+eefv8x7/Fx++eX52c9+ljvuuCOnnXZa4fJatmyZoUOHZvjw4bnqqqsyfPjwVV4zAECRVdXftGzZMjfccEPeeeeddO/efbXVCwDL4nJmoFF4/PHH89JLL2XbbbctvEn4oYcemoqKiowZMyaLFi362OUOGTIk7dq1y1133ZX/+7//W5UlAwAUWtX9TY8ePdK7d+906NBhdZQLAIWEiECj8NF9gA477LDCcZ06dcqee+6ZN998Mw899NDHLrd58+Y54YQTsnjx4lxxxRWrpFYAgOWxuvobACiHirq6urpyFwEAAAAANF7ORAQAAAAACgkRAQAAAIBCQkQAAAAAoJAQEQAAAAAoJEQEAAAAAAoJEQEAAACAQtXlLmBVe/vtuVm8uK7cZQAAJVJZWZENN2xR7jJKQp8DAOuOdanHYc2w1oWIixfXaa4BgLWSPgcAgHJxOTMAAAAAUEiICAAAAAAUEiICAAAAAIWEiAAAAABAISEiAAAAAFBIiAgAAAAAFBIiAgAAAACFhIgAAAAAQCEhIgAAAABQSIgIAAAAABQSIgIAAAAAhYSIAAAAAEAhISIAAAAAUEiICAAAAAAUEiICAAAAAIWEiAAAAABAoZKEiMOHD0+vXr3StWvX/Otf/1rqmNra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+OH07NkzHTp0SM+ePdOiRYtylwcAAI3Gx4aImmsAYG1VUVGRgQMH5plnnskBBxxQ7nIAAKDR+tgQUXMNAKzNunXrlpdeeildunQpdykAANBoLdflzJprAGBt9bnPfS5Dhw7NQQcdlE033bTBF8cdeuihZawMAAAaj+UKETXXAMDa6plnnslmm22WJ554osH0iooKfQ4AQJL58+dn1qxZeffd91JbW1vucljFqqqq0rp1q7Rt2zbNmjVb5rjlChE11wDA2uqXv/xluUsAAGi05s+fn5dffjnNm7dM27btU1VV3eDkMtZsdXV1qa1dlHnz5ubll19O586dlxkkLleIqLkGANZms2fPzkMPPZQZM2akffv22WeffdKmTZtylwUAUHazZs1K8+Yt07r1BuUuhdWgoqIi1dVN6vfvrFmz0rFjx6WOrVzehc6ePTvjxo3Lddddl3HjxmX27NmrpFgAgHJ69tln06dPn9x222154YUXctttt6VPnz559tlny10aAEDZvfvue1l//RblLoMSWH/9Fnn33feWOX+5zkR89tlnc8IJJ2TrrbdOx44d89BDD+Xiiy/Oddddl1122WWVFQsAUGoXX3xxzjvvvPTv379+2r333psf/ehHGTNmTBkrAwAov9ra2lRVLVd8xBquqqq68J6Xy/VToLkGANZWL7/8cvbff/8G0/r27ZvzzjuvTBUBADQu7oG4bvi4/bxclzMvq7meOnXqylcGANAIbLnllrnnnnsaTPvtb3+bzTffvEwVAQBA47NcZyJ+1FwPHDiwfprmGgBYG3zve9/LsGHD8stf/jIdO3bM66+/nldeeSXXXnttuUsDAIBGY7lCRM01ALC2+sxnPpPf/e53+cMf/pCZM2dmn332yd57750NNtig3KUBAECjsVwhouYaAFhbzZgxI82bN8+gQYPqp82ePTszZsxI+/bty1gZAEDjt976zdK8WeP94pUP5i/K+/Pmf+Ll7L77Z5Ikm266aW6/fWyaNWu2xJjBg/tn+vRpeeSRJ1Jd3Xhfk5W1XFukuQYA1lYnnXRSLr744rRp06Z+2vTp0/P9738/o0ePLmNlAACNX/Nm1Rl4xvhyl7FMd182aJWEiB+ZPn16br/9V/nKV45ZZctcUyzXF6ucdNJJmT59eoNp06dPz8knn7xaigIAKJWXX345Xbt2bTCta9euefHFF8tUEQAAjVHr1q3TunWbjBx5U9555+1yl1Nyy3Umoua6cdqwTdNUN13y9NlyWrRgft6evaDcZQDActtoo43yyiuvZMstt6yf9sorr7htCwAADTRr1jxf/vLRufzyy/Lzn1+fb3/7zOV+7sSJD+SOO27Pv//97yxatDCdOm2e/fbrlyOPPCpNmzZtMHbw4P5JkttuuyM33HBtJk78XWpqZqV9+/Y58MCDc/TRX01FRcUS6/j735/Lrbfekr/+9S95993Z2Wijttlzz8/n2GNPSLt27T7Zxmc5Q0TNddKq9XqN8hr/Fy86pNwlNLD1OWOSCBEBWHMccsghOeWUU3Laaadl8803z9SpU3PFFVfksMMOK3dpAAA0MoceenjuuOP2jBs3Jocf/qVsscWWH/ucn/1sREaOvCkbbLBB9tuvX9Zff71MmvTn/OxnV+WxxyZlxIhrUl3dpMFzamsX5dRTv5G33noze+yxZ6qqqvLww3/INddcmQUL5ue4405oMH7ChPG55JIfpUmTJvnCF/bOJpu0z2uvvZq77hqXRx55OD//+chsummHT7Tty5WKaa4b5zX+d1826OMHAQCFjj/++FRXV2f48OGZPn16Nt100xx22GE55ph17z43AAAUq65ukpNOOjXf+953c/XVV2b48MsKxz/33F8zcuRNad9+0/ziF7ekbduNkyQnnnhKzjzzjDz66J8yatQt+drXjm3wvDfffDPbbLNtrrzymjRv3jxJcuyxJ+Twwwfntttuzde+9vX64HHq1Fdy6aUXpUOHDrnmmp9nk002qV/OU089kVNPPSk//en/fmytH7vtyzNIcw0ArK0qKytz3HHH5bjjjit3KQAArAF69eqdHXbYMX/840P5y1+ezc4777LMsXfffVeS5Jhjjq0PEJOkuro63/zm6Zk06dHcdde4JULEJDn99O/UB4jJh1cKf/GLPXPvvRPyyiuvpEuXbZIkd945OosWLcppp32nQYCYJD16fC5f+MLeeeSRhzN37ty0aNFipbd7uUJEzTUAsLZ54403UllZmU033TRJ8v777+faa6/Nv/71r+yyyy459thjU1VVVeYqAQBojE499bQMHXpMrrzyp7nxxpFLvUdhkrzwwj+TJLvu+tkl5m2xxZbZZJNN8sYbr+e9995Lq1at6ue1bNkym2++xRLP2WST9kmS9957t37ac8/9LUnyzDNPZ/LkfyzxnJqamtTW1ubVV1/Jdtt9egW2sqHCEFFzDQCsrc4555wMGTKkvs+58MIL8+STT6ZPnz4ZM2ZM5syZk9NPP73MVQIA0BjtsMNO6dWrdx58cGImTnwgffr0Xeq4uXPnJEk23njpX2zStu3GmT59eubM+e8QsdVSx3+Uw9XWLq6fNnv27CTJrbfeUljzvHnvF87/OIUhouYaAFhbPf/88/n85z+fJJk3b17uvffe3Hrrrdl+++1z6KGH5vjjj9fnAACwTCeddEoefvgP+dnPrkrPnr2WOqZFi5ZJklmz3kqnTpsvMX/WrLeSLDs0XB4tW364jt///uH69a0OlUUzl9ZcX3755TnzzDNzzTXX5J577llthQEArE4LFy7M+uuvnyR57rnn0qJFi2y//fZJki5duuTtt98uZ3kAADRynTptnkMOOSxvvPF6fvOb25Y6Ztttt0vy4aXG/+3VV6dm5syZ6dhxswZnIa6o7bffIUnyl788u9LLWB6FIaLmGgBYW3Xq1CmPP/54kuTBBx/MbrvtVj+vpqYm6623XrlKAwBgDfH1rx+fVq1aZeTIG/P++0teLjxw4KAkyU03/bxBjlZbW5sRIy7P4sWL68esrEMPPSLV1dW5/PLLMnXqK0vMX7hwYf7yl2c+0TqSj7mc+aPmerfddtNcAwBrlZNPPjnf+MY3svnmm+fFF1/ML3/5y/p5v//977PDDjuUsToAANYEbdq0yVe/+vVcddUVS52/44475aijvppRo0ZmyJDD0qvXvmnefL089tifM2XK/2WnnXbOUUd99RPV0LnzVjnnnPNy0UUX5MgjD8vuu++RLbbYMosWLcqMGdPzl788mw033DC3337nJ1pPYYiouQYA1la9e/fOnXfemX/+85/59Kc/nc03///vUbP11ltn5513Ll9xAACsMQ4//MiMGTM606a9sdT5J5/8zXTtul1Gj7499913TxYtWpTNNuuUE044KUOGHJ0mTZp84hr2379/PvWpbfOrX43KM888mSeeeCzrrbdeNt64XXr12je9e+/3iddRGCJqrgGAtdkWW2yRLbbYYonpu+66axmqAQBY83wwf1HuvuyTXY67On0wf9EqWc5jjy37cuCmTZtm7NgJhc/v06fvMr/B+b+NG7fs7yAZOnRYhg4dttR522zzqZx77gXLtY6VURgiJpprAAAAAJbu/Xnz8/68+eUugxIo/GIVAAAAAAAhIgAAAABQSIgIAAAAABT62HsiAgCsjYYMGZKKiorCMbfeemuJqgEAgMatMETUXAMAa6vDDjus3CUAAMAaozBE1FwDAGurgw46qNwlAADAGqMwRPy45nrhwoWrtBgAgFIZN27cx44ZPHjwaq8DAADWBCt1T8QFCxbktttuy4033pg//vGPq7omAIDV7qyzzsqWW26ZjTfeOHV1dUvMr6ioECICAMD/UxgivvjiiznnnHPy/PPPp3Pnzhk+fHheeuml/OhHP0r79u1z5plnlqpOAIBV6uijj87999+fFi1aZPDgwendu3eaNm1a7rIAAKBRKgwRL7roonTu3DnDhg3LhAkTctJJJ6V58+YZPnx49txzz1LVCACwyp1zzjk566yz8qc//Snjxo3LxRdfnJ49e2bw4MHp0aNHucsDAIBGpTBE/Pvf/54//elPadq0aT772c9m1113zUMPPZRNN920VPUBAKw2VVVV6dmzZ3r27Jk5c+bkmmuuyVe+8pX84he/yO67717u8gAAoNEoDBEXLlxYf1nP+uuvn1atWgkQAYC1ynvvvZd77rkn48aNS01NTU466aR069at3GUBAECjUhgiLliwIFdccUX94w8++KDB4yT55je/uXoqAwBYjR566KGMHTs2zzzzTHr16pXvfOc72XXXXctdFgAANEqFIeLAgQMzffr0+sf9+/dv8BgAYE114oknZquttsrAgQPTvHnzPPLII3nkkUcajHGwFACgWOsW1alq2qzcZSxT7YL5eXfuok+8nN13/0yDx5WVlWnVqnW22WabDBw4OP36HbDU57388ku5447f5JlnnsqMGTMyf/4H2WCDDbLtttulZ89e6dt3/zRrtvTX76abfp7rrrsmSXL77Xdmyy07f+Lt+CQKQ8RLLrmk8MmLFy9epcUAAJTK4MGDU1FRkXfeeafcpQAArLGqmjbLixcdUu4ylmnrc8YkqyBE/Mixxx6fJFm0aFGmTn0lDz/8hzz99FN5/vl/5lvfOqPB2BtvvD433nh9Fi9enO233yEHHDAg66+/XmpqavLMM0/n4osvzJ13js7NN9+6xHrq6upy993jU1FRkbq6uowfPzannnraKtuOlVEYIi7LCy+8kHHjxuXuu+9e4og9AMCa4NJLLy2c72ApAAD/bejQYQ0eP/nk4zn11JNy++2/yuGHH5mOHTsmSW6++cbccMO1ad9+01x00fBsv/0OSyzrkUcezq9+NWqp63n88Ul5443X07//wEya9Ofce+/dOfHEk9OkSZNVv1HLqXJ5B9bU1GTkyJE56KCDMnjw4Dz33HM555xzVmdtAAAl98ILL2T48OH54he/WO5SAABo5D772d2y5ZadU1dXl3/+8x9JkjfeeCM///l1qa6uzk9+cuVSA8Qk2WuvL+byy69a6rzx48cmSQYNOjh9++6fd955J3/4w4OrZyOW08d+O/ODDz6YsWPH5pFHHskWW2yR/v3754033sgVV1yRtm3blqpOAIDVpqamJnfffXfGjRuX559/PrvuuquDpZBkwzZNU93I7nO1aMH8vD17QbnLAIB6dXV1SZKKiookyT33jM+iRYvSp0/fdOmyTeFzmzZtusS0WbNm5U9/+mO22GLL7LjjTmnRokV+/etRGT/+zvTp03fVb8ByKgwRP//5z6eioiIHH3xwTjnllHTv3j1J8utf/7okxQEArC4OlsLHq26E97na+pwxSYSIADQOTzzxeKZOfSUVFRXp1u3TSZK//vUvSZIePT63Usu85567smjRovTvPzBJ0qXLNunadbs8/fRTefXVqdl88y1WSe0rqjBE7Nq1a55++un89a9/zZZbbplOnTqlTZs2paoNAGC1cbAUAIAVdcMN1yZp+MUqdXV1+dKXvpwOHT68H+Jbb72VJNlkk01WePl1dXW5666xqayszP77D6if3r//gXnhhf/JXXeNyze+ceoq2JIVVxgi/vKXv8zrr7+ecePG5Re/+EV+9KMfZa+99sq8efOyaNGq+2YbAIBSc7AUAIAVdeON1yf58NLlVq1aZaeddsnAgYOy//7968f89+XNK+Kpp57Ia6+9lt1336NBCNm3b7+MGPHT3HPP3TnhhBNTXV36L1j52G9n3myzzfKNb3wj3/jGN/LUU09l/PjxqayszIEHHphDDjkk3/3ud0tRJwDAKuVgKUDjtcEG66dJk6pylwGwhMcee+Zjx7Rr1y6vvPJyZs6cucLLHzfuziQfnnn4n9q02SB77fXFPPTQ7/Pww39Mr169V3jZn9THhoj/qUePHunRo0e+//3v53e/+13GjRu3msoCAFj9HCwFaJyaNKnKzXc9V+4yGvjagUv/dlWA/7bTTjvnqaeezFNPPZEDDxy83M97++238/DDf0iS/OAHZ+cHPzh7qePGjbuz8YeIH2nWrFkGDBiQAQMGfPxgAIA1gIOlAACsCv37D8rIkTfloYd+n5deejFbbbX1MscuWLCg/hua77337ixcuDDbbdctn/pU16WOf+SRP+bJJx/PG2+8no4dN1st9S/LSoWIAABrKwdLAQD4JDp27Jjjjjsh1157dU4//dRcfPH/1H9z83+aNOnRjBo1Mldf/eF9Fu+6a1yS5DvfOTvdu2+/1GVfd901uemmn2f8+LE58cSTV9s2LI0QEQAAAABWoa997djU1tbmxhuvzzHHHJUddtgp3bp9Ouutt15qamryl788k1dfnVofLj799FN55ZWX06XLNssMEJNk4MDBufnmG3PPPXdl6NBhqa4uXbQnRAQAAACAVezYY49Pr169M2bM6DzzzFOZMOGuLFgwP23abJBPfWrbHH3019Kv3wFJkvHjxyZJDjzwoMJlduzYMZ/97G554onH8sgjD6dnz16rfTs+IkQEAAAAYKXULpifrc8ZU+4ylql2wfxVspzl+Vbmpdlqq63z7W+f+bHjLrzwolx44UXLtcwrr7xmpWr5pISIAAAAAKyUd+cuSuYuKncZlEBluQsAAAAAABo3ISIAAAAAUEiICAAAAAAUEiICAAAAAIWEiAAAAABAISEiAAAAAFBIiAgAAADAMtXV1ZW7BErg4/azEBEAAACApaqqqkpt7aJyl0EJ1NYuSlVV1TLnCxEBAAAAWKrWrVtl3ry55S6DEpg3b25at261zPlCRAAAAACWqm3btvnggzl59913smjRQpc2r2Xq6uqyaNHCvPvuO/nggzlp27btMsdWl7AuAAAAANYgzZo1S+fOnTNr1qzMmjUjtbW15S6JVayqqiqtW7fKppt2TrNmzZY5TogIAAAAwDI1a9YsHTt2TMeO5a6EcnI5MwAAAABQSIgIAAAAABQSIgIAAAAAhYSIAAAAAEAhISIAAAAAUEiICAAAAAAUKlmI+NJLL+WII45I3759c8QRR+Tll19e5tgXX3wxO+20U4YPH16q8gAAVooeBwCAdUHJQsTzzjsvQ4YMyf33358hQ4bk3HPPXeq42tranHfeeendu3epSgMAWGl6HAAA1gUlCRFnzZqVyZMnZ8CAAUmSAQMGZPLkyampqVli7PXX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HS9BWSztZ/Hggw/O448/nhEjRmSPPfbI4MGD07dv3xxyyCG55ZZbGnxedO3aNQMHDqz/PfnpT39aP++xxx7LYYcdlkGDBmX//ffPV77ylSxevDjJh/tt5MiR6d+/fw444ID069cv3//+9/Puu+/WP/+Pf/xjunbtmokTJzao76yzzsoOO+yQN954o8G0UaNGrdLXhjWTPqd89DlrFn1O6ehxykOPA2u/6nIXsC557733cvzxx6d79+4555xzUlFR0WD+Nttsk3vuuSdf/vKXkyRjx45N9+7dy1HqWuPss8/O/PnzM2bMmLRs2TILFy7MnXfemQULFqRJkyblLi9Jcsstt2TPPfdM27Zty11KWc2cOTMXXHBBxo4dmw4dOqSuri7PP/98kmT8+PFlrm7tdeWVV2bbbbdNkjzwwAM5/vjjc+ONNyZJ9txzz1x55ZVJPmy8Lrzwwtx333357W9/m0mTJuXOO+9Ms2bNsmDBgkydOjXJhwHCUUcdlYMPPjiXXnppKisr8+677+bee++tX+c777yTSZMmZauttspDDz2U/fbbr0FNL774Yp544ol87nOfK8VL0OgMHjw4Z555ZpLk1VdfzXe+851MnTo13//+9+vH3HbbbWnRokXef//99O/fP7169Ur37t1z6qmn5pZbbsl2222XJJk8eXL9Z83ll1+eJ598MiNHjszGG2+cxYsXZ+LEiZk9e3Zat26dJBkzZkx233333HHHHendu3eDutq1a5cRI0bkkksuKcXLwBpIn1N6+pw1hz6n9PQ4jY8eB9Z8QsQSmTVrVr773e9mn332yTe/+c2ljjnooIMyfvz4fPnLX87cuXPzzDPP5IADDsiCBQvqx9xwww25//77U1tbm/bt2+eHP/xh2rVrl0mTJuXyyy/P/PnzU1tbm2HDhqV///5JPjz6v/322+cvf/lLZs6cmf333z/f/va3kyRXXXVVJkyYkGbNmqWioiK33HJL/Rvtmu7ll1/OxIkT88c//jEtW7ZMkjRp0iRHHHFEamtrM3z48PzpT39KknzhC1/It7/97VRVVeWss85K06ZN8/LLL+fVV19Nnz59ss8++2TEiBGZPn16vvrVr+arX/1qkg+PtvXv3z/PPPNMZs6cma9+9as56qijlqhl5syZ+dGPfpQ33ngj8+fPT//+/TNs2LD87Gc/y8yZM3PqqaemWbNmueyyy7LFFlvkpz/9aZ588sksXLgw2267bc4///y0aNGidC9eGbz11luprq7OBhtskCSpqKhIt27dknx4VPKZZ55JixYt0qtXrwwaNCh//vOf8+abb+brX/96/Wv+1FNP5YILLkiS7Lbbbvn973+f6667rr6B/Miy9se6br/99svf/va33HjjjenZs2eDee+9917atGmTJJkxY0Y23HDDNG3aNEnStGnTbLPNNkmSCRMmZIMNNsgJJ5xQ/9zWrVvnS1/6Uv3ju+66K3vvvXf22muvjBkzZokG+5RTTslPfvKT3HbbbatjM9com2++eS666KIceOCB+eY3v5lWrVo1mP/+++9n0aJFadWqVebOnZt58+Zl4403rp//6U9/Okkyd+7c3HTTTRk3blz9/MrKygav/dtvv51JkyblvvvuS//+/fPmm2+mXbt29fO/9KUvZdSoUfm///u/+v0NH9HnlJ4+Z82izykvPU7jo8eBNZMQsUS+9a1vZciQIctsrJMP30ibNm2aKVOm5C9/+Ut69+6d6urq+uZ6/PjxmTp1an7zm9+ksrIyv/rVr3LppZfmsssuy6c//en86le/SlVVVd56660cfPDB2Wuvveo/EKdNm5Zbb701c+fOTe/evXPooYdmww03zI033phJkyalefPmmTNnTpo3b16S16MUJk+enC233LL+NfhPt99+e/75z3/mzjvvTJIMHTo0t99+e4YMGZIk+fe//52RI0emtrY2vXr1ynvvvZdRo0blzTffTL9+/XLooYfWN7tvvfVWbr311rz11lsZPHhwevToUX+E7CNnnnlmTjrppHz2s5/NggUL8rWvfS077LBDTjzxxIwePbrBkdJrrrkmrVq1yh133JEk+fGPf5zrr78+p5122mp7rRqD7bbbLjvuuGN69uyZ3XbbLZ/5zGcyaNCgbLjhhkuM/eCDD3L77bfntddey8CBA3PQQQelSZMmOf300/OTn/wkPXr0yO9+97v88pe/XOq6lrU/Pv/5z6/uzWz0dtpppzz44IPp2bNn/vznP2fQoEGZN29eampqct111yVJDjjggPz617/Ofvvtlx49emT33XdP//79U11dnX/84x/ZcccdC9dx55135swzz8wuu+ySiy++ODNmzEj79u3r5++333659dZbM3HixCWOFK8tPvqD+iMvv/zyMsd26dIlzZs3z0svvVT/2n70B8srr7ySI488MltvvXWS5PDDD89+++2Xz33uc/nMZz6TgQMHpkOHDpkyZUqaNm1aP25pxo8fn3322Scbb7xx+vTpk3HjxmXo0KH189dff/2ccMIJ+elPf5qrr776k2w+ayF9Tunpc9Ys+pzy0+OUhh4H1m5CxBLZe++9c++99+bII4/MJptsssxxgwcPztixY/PXv/41P/jBD3L//ffXz3vwwQfz97//PQcddFCSpLa2tv7Ic01NTb73ve/llVdeSVVVVWbPnp2XXnopO++8c5KkX79+qaysTKtWrdKlS5dMnTo1m2++ebbaaqt85zvfyRe+8IX07Nmzfnlru0mTJuWggw6qP8p48MEHZ+LEifXNde/evevnbbXVVtl7771TWVmZ9u3bp3Xr1pk+fXq6dOmSJDn00EOTJBtvvHF69uyZJ554okFzPW/evDzxxBOpqampnzZ37txMmTJlqc3cgw8+mDlz5tTv+wULFizRrK+NKisrc8011+Rf//pXnnzyyUycODE33nhj7r777iXGHnDAAUmSTp061e+PhQsXpnnz5unRo0eSpE+fPks922RF98e6pq6urv7f/3mpz+OPP57TTz89999/fzbZZJPcc889+ctf/pKnn3461157be66667ceOONDZ6/NJMnT867776b3XffPRUVFenTp0/Gjx+f448/vsG4M844IxdddFF69eq16jeyEfjPP6iTD9+DVsRHl/q8++67+epXv1r/x8i5556bY445Jo899lgefvjhXHfddRkzZszH7pfkwz98zj777CQfnjF2zjnnNGiwkw8b+Jtuuil//etfV6he1n76nMZFn9P46HPKT49TGnocWLsJEUvkuOOOy0MPPZSjjz46w4YNy80335wkGThwYIMb7O6///7p379/Nt5442y77bYNmuu6urqceOKJ9c3cfzr//PPTq1evXHXVVamoqEjfvn0zf/78+vn/eTSoqqoqtbW1qaqqym9+85s888wzeeyxx3LwwQfn5z//+VrTyH3605/OK6+8ktmzZy9xlL6urm6JezX95+P/fr2W9votzdKWu3jx4lRUVOSOO+5YrvsT1dXV5bzzzssee+zxsWPXRttuu2223XbbfPnLX84BBxyQJ554Yokxy9of//3aL82K7o91zXPPPZdPfepTS0zfbbfdsmjRovz73//OjjvumOrq6vTo0SM9evTIIYccks9//vN55513sv3222fMmDHLXP4dd9yRd999N/vuu2+SD/94bNGixRIN9h577JGNN944d91116rdwDXQiy++mA8++GCpR9hbt26dPffcM48++mj9GQ2bb755Nt988xx22GH1nz2HH3545s+fn5deeilbbbXVEst57rnnMmXKlJxzzjn102bOnJlnnnkmn/nMZ+qnNWnSJKecckouu+yydOzYcTVsLWsqfU7p6XPWTPqc8tHjND56HFjz+HbmEjrhhBNy0EEH5dprr80NN9yQ8ePHL/ENXS1atMh3v/vd+hvO/qdevXrlV7/6VWbPnp3kww+mj27I/N5772WzzTZLRUVFHn300bzyyisfW8+cOXNSU1OTz33uczn11FOz7bbb5t///vcq2NLGoXPnzunVq1fOPffczJkzJ8mHZzWMHDkyu+22W8aOHZuFCxdm4cKFGTdu3Eo3s2PHjk3y4VkSDz/88BI3Sm7ZsmV23XXXXH/99fXTpk2bljfffDPJh/v8vffeq5/Xq1ev3HzzzfXf0jdnzpxMmTJlpWpbk8yYMSPPPvts/ePp06enpqYmnTp1Wq7nb7311pk3b16efvrpJMnEiRMbfCPbRz5uf6zLJk6cmF//+tc55phjlpj3wgsvZO7cuenUqVP+/ve/57XXXquf949//CNt2rRJ69at079//9TU1OTnP/95/ZHhd999NyNHjsyCBQtyzz335I477siDDz6YBx98MI888kgqKiry1FNPLbHOM844IyNGjFh9G7wGeO2113LOOefkyCOPXOoZVAsWLMizzz6bzp07Z+7cuXnkkUcavO6vvfZaOnXqlBYtWuRrX/tazj333PpvSa2rq8tdd92VqVOnZsyYMTnuuOPq98uDDz6YU045Zal/LA0cODDvvPPOUv/wZd2mzyktfc6aRZ9TXnqcxkePA2smZyKW2LBhw1JXV5ejjz46t9xyS4N7ZHzko0sY/tvgwYPzzjvv1N9cua6uLkceeWS22267nHHGGbngggtyww03pGvXrunatevH1jJnzpyccsop+eCDD1JXV5dPf/rTS9z8d0136aWX5uqrr84hhxySJk2aZPHixdl7771z2mmn5fXXX6+/ZGqvvfbK4YcfvlLr6NChQ4YMGZI333wzJ5xwwlJf+//93//NJZdckoEDByb5sKG+6KKL0q5du3zlK1/J9773vTRv3jyXXXZZjj/++Fx11VU59NBDU1FRkYqKipx88sn1lxWtrRYtWpQRI0bk9ddfT/PmzbN48eJ861vfqr9p8sdp2rRpLrvsspx//vlp3rx5dt9992y88cZL3KQ5Kd4f65pTTz01TZs2zfvvv58uXbrk+uuvz84775wXX3yx/n5BdXV1qauryyWXXJKNNtoo//jHP3LBBRdkzpw5adq0adZbb71cffXVqayszPrrr59f/vKX+fGPf5x99903LVq0SHV1dYYMGZKJEydmiy22SOfOnRvUMGDAgIwZM6b+Eq2P7LDDDunevXuDZn5dMG7cuEyaNCnvv/9+WrZsmYEDB+boo49uMOZLX/pSKisrM3/+/Hzuc5/LkUcemQULFuTWW2/ND3/4wzRr1iy1tbUZOHBg+vTpkyQ5/fTTc/PNN9cvq66uLj169Mgee+yRe++9N7/+9a8brGPAgAE58MADGxy5Tz68JO+0005b52/Sz9Lpc0pLn7Pm0OeUnh6n8dHjwJqvom55biIALFWvXr1y7bXXLvGteJTHnDlz6o9kPvbYYznrrLPy4IMPprLSSdcAsKL0OY2LPgeAcnMmIrDWeOCBB3LzzTenrq6u/oi9xhoAWBvocwAoN2ciAgAAAACFHLpindOrV6/861//ajBt6NChmTp16sc+9+ijj85DDz20ukpbp9gPALBq+WxtPOwLANZGLmeGJDfccEO5SyD2AwCsaj5bGw/7AoA1nTMRIQ2PFh999NEZPnx4jjzyyOy777753//936U+55577skhhxyS6dOn5+67785hhx2WwYMHZ/DgwZk0aVL9uKeeeioDBw7MwIED86Mf/Sj77LNP/bpefPHFHHfccTnkkENy4IEHZsyYMat/Yxsx+wEAVi2frY2HfQHAms6ZiLAU06ZNy6233pq5c+emd+/eOfTQQ9O5c+f6+TfccEMeffTR3HzzzWnVqlX22muvDBgwIBUVFXnxxRfzta99LQ8//HAWLFiQ008/PT/5yU/So0eP/O53v8svf/nLJMmiRYvy7W9/Oz/+8Y/TpUuXzJkzJ4ccckh23nnndOnSpUxb3rjYDwCwavlsbTzsCwDWNEJEWIp+/fqlsrIyrVq1SpcuXTJ16tT6pm7EiBHp2LFjrr/++jRt2jRJ8uqrr+aMM87IjBkzUl1dnbfeeitvvvlmZs2alebNm6dHjx5Jkj59+qR169ZJkpdffjlTpkzJ6aefXr/ehQsX5sUXX9TU/T/2AwCsWj5bGw/7AoA1jRARlqJZs2b1/66qqkptbW3945133jmPPvpo3njjjfpG7/TTT89ZZ52V3r17Z/Hixdlpp50yf/78JElFRcVS11FXV5cNN9ww48ePX30bsoazHwBg1fLZ2njYFwCsadwTEVbQF77whZx//vk5/vjj8+9//ztJ8t5776VTp05JkjvuuCMLFixIkmy99daZN29enn766STJxIkT8+677yZJttpqqzRv3jzjxo2rX/aUKVMyZ86cEm7Nmst+AIBVy2dr42FfANAYORORddIxxxyTqqqq+sdz585doefvscceueSSS3LiiSfmiiuuyNlnn52TTjop7du3z+c+97lssMEGSZKmTZvmsssuy/nnn5/mzZtn9913z8Ybb5xWrVqluro61157bS6++OLceOONWbx4cdq2bZvLL798FW5p42Y/AMCq5bO18bAvAFjbVNTV1dWVuwhYm82ZMyctW7ZMkjz22GM566yz8uCDD6ay0onApWQ/AMCq5bO18bAvACgFZyLCavbAAw/k5ptvTl1dXf2RYg1d6dkPALBq+WxtPOwLAErBmYgAAAAAQCGHpwAAAACAQkJEAAAAAKCQEBEAAAAAKCREBFbKiBEj8u1vf7vcZZTU0UcfndGjR6+SZZ111ln56U9/ukqWBQCsOnqcT0aPA7D2EiICy3T33Xfn4IMPzi677JK99torxx13XJ566qlVtvzXXnstXbt2zaJFi1b5Mg866KAG02tqarL99tunV69ey7WcdfEPCABYV+hx9DgArDghIrBUN910Uy6++OIMGzYsjz76aB566KEMGTIkv//978tdWr2ixnzevHn517/+Vf94woQJ2WyzzUpRFgDQiOlxAGDlCBGBJbz33nu58sorc+6552a//fbL+uuvnyZNmqRXr14588wzlxj/+OOP54tf/GKDab169cqf//znJMnf/va3HHzwwfnMZz6TPffcM5dcckmS5KijjkqSfPazn80uu+ySZ599Nklyxx13ZP/9989nP/vZHHvssXn99dfrl9u1a9fceuut2W+//bLffvstcxsGDRqUsWPH1j8eN25cBg8e3GDMjBkzcsopp2T33XdPr169cssttyRJHn744Vx33XW57777sssuu+TAAw+sf87rr7+eL33pS9lll13y9a9/PTU1NfXzfv/736d///7p0aNHjj766EyZMqV+3uTJk3PQQQdll112ybe+9a3Mnz9/mbUDAKuHHkePA8DKEyICS3j22Wczf/789OnTZ5Us76KLLspXvvKVPPPMM/nd736X/fffP0kyatSoJMmTTz6ZZ599NrvssksmTpyY6667LldddVUmTZqUXXfdNWeccUaD5U2cODG/+c1vcu+99y5znQceeGDuvffe1NbWZsqUKZk7d2522mmn+vmLFy/OiSeemK5du+bhhx/OyJEjM3LkyPzpT3/KF7/4xZxwwgnZf//98+yzz+auu+6qf96ECRNyySWXZNKkSVm4cGF+8YtfJEleeumlnHHGGfne976XSZMm5Ytf/GKGDRuWBQsWZMGCBfnGN76RQYMG5Yknnki/fv3ywAMPrJLXFgBYfnocPQ4AK0+ICCzhnXfeyYYbbpjq6upVsrzq6upMnTo1NTU1adGiRXbeeedljr3tttty/PHHp0uXLqmurs6wYcPyz3/+s8GR+uOPPz4bbLBBmjdvvszlbLrpptlqq63y5z//OWPHjl3iCP1zzz2XmpqanHzyyWnatGk233zzHH744YVNe5IcfPDB2WqrrdK8efP069cv//znP5Mk9957b/bee+98/vOfT5MmTXLsscfmgw8+yLPPPpu//vWvWbhwYb761a+mSZMm6devX3bYYYePf+EAgFVKj7NsehwAPs6q+fQE1iobbLBB3n777SxatGiVNNkXXXRRrrzyyuy///7p1KlTTj755Oyzzz5LHfvGG2/k4osvzvDhw+un1dXVZcaMGfX3++nQocNyrXfw4MEZO3Zsnn322YwaNSqvvPJK/bzXX389M2fOTI8ePeqn1dbWNni8NO3atav/93rrrZd58+YlSWbOnJmOHTvWz6usrEyHDh0yY8aMVFVVpX379qmoqKif/59jAYDS0OMsmx4HgI8jRASWsMsuu6RZs2aZOHFi+vXr97Hj11tvvXzwwQf1j2traxvcR6dz5875yU9+ksWLF+eBBx7Iqaeemscff7xBw/mRDh06ZNiwYQ3u0fPflva8pdlvv/1y4YUXpnv37tlss80aNNgdOnRIp06dlnnJzfKu4yObbLJJg5uc19XVZdq0afWN9YwZM1JXV1e/3DfeeCObb775Cq0DAPhk9Dh6HABWnsuZgSW0atUqp556ai688MJMnDgx77//fhYuXJg//vGP+Z//+Z8lxm+11VaZP39+/vCHP2ThwoX52c9+lgULFtTPHz9+fGpqalJZWZnWrVsnSaqqqrLRRhulsrIyr776av3YL33pS7n++uvz73//O8mHN0C/7777Vmo71l9//YwcOTIXXXTREvN23HHHtGzZMtdff30++OCD1NbW5l//+lf+9re/JUnatm2b119/PYsXL16ude2///754x//2OA+Qk2bNs0uu+ySnXfeOdXV1bnllluyaNGiPPDAA3nuuedWapsAgJWnx9HjALDynIkILNUxxxyTtm3b5pprrsm3v/3ttGjRIt27d8+wYcOWGNuqVaucd955+f73v5/a2tocd9xx2XTTTevn/+lPf8qll16aDz74IB07dsxPf/rTNGvWLEkybNiwHHnkkVm0aFF+/vOfp0+fPpk7d25OP/30vP7662nVqlX23HPP+huVr6hl3ZenqqoqP/vZzzJ8+PDsu+++WbBgQbbaaqt861vfSpL069cvd911V3bbbbd06tSpwbcgLs3WW2+dH//4x/nhD3+YGTNmpFu3brn22mvTtGnTJMmIESPygx/8IJdffnn23nvvVXZDdwBgxehx9DgArJyKurq6unIXAQAAAAA0Xi5nBgAAAAAKCREBAAAAgEJCRAAAAACgkBARAAAAACgkRAQAAAAACgkRAQAAAIBCQkQAAAAAoJAQEQAAAAAoJEQEAAAAAAr9fxlERQ6sgNApAAAAAElFTkSuQmCC\n",
"text/plain": [
"<Figure size 1152x576 with 2 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plot_scores(pd.concat([usps_raw_results_long, usps_pca_results_long]))"
]
},
{
"cell_type": "code",
"execution_count": 64,
"id": "926fdc21",
"metadata": {},
"outputs": [],
"source": [
"umap_usps = umap.UMAP(n_neighbors=10, n_components=4, min_dist=1e-8, random_state=42, n_epochs=500).fit_transform(raw_usps)"
]
},
{
"cell_type": "code",
"execution_count": 65,
"id": "1fcd529b",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"CPU times: user 6.03 s, sys: 224 ms, total: 6.25 s\n",
"Wall time: 3.68 s\n"
]
}
],
"source": [
"%%time\n",
"km_umap_labels = cluster.KMeans(n_clusters=10).fit_predict(umap_usps)\n",
"cl_umap_labels = cluster.AgglomerativeClustering(n_clusters=10, linkage=\"complete\").fit_predict(umap_usps)\n",
"sl_umap_labels = cluster.AgglomerativeClustering(n_clusters=80, linkage=\"single\").fit_predict(umap_usps)\n",
"db_umap_labels = cluster.DBSCAN(eps=0.15).fit_predict(umap_usps)\n",
"hd_umap_labels = hdbscan.HDBSCAN(min_samples=10, min_cluster_size=100).fit_predict(umap_usps)"
]
},
{
"cell_type": "code",
"execution_count": 66,
"id": "0ee60d43",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"ARI: 0.9386\n",
"AMI: 0.9206\n",
"Silhouette: 0.1424\n",
"ARI: 0.7325\n",
"AMI: 0.8476\n",
"Silhouette: 0.0832\n",
"ARI: 0.9402\n",
"AMI: 0.9217\n",
"Silhouette: 0.0710\n",
"Pct clustered: 98.95%\n",
"ARI: 0.8943\n",
"AMI: 0.8772\n",
"Silhouette: -0.1237\n",
"Pct clustered: 97.26%\n",
"ARI: 0.9383\n",
"AMI: 0.9206\n",
"Silhouette: 0.1428\n",
"Pct clustered: 99.81%\n"
]
}
],
"source": [
"usps_umap_results = pd.DataFrame(\n",
" [\n",
" eval_clusters(km_umap_labels, usps.target, raw_usps, cluster_method=\"K-Means\"),\n",
" eval_clusters(cl_umap_labels, usps.target, raw_usps, cluster_method=\"Complete\\nLinkage\"),\n",
" eval_clusters(sl_umap_labels, usps.target, raw_usps, cluster_method=\"Single\\nLinkage\"),\n",
" eval_clusters(db_umap_labels, usps.target, raw_usps, cluster_method=\"DBSCAN\"),\n",
" eval_clusters(hd_umap_labels, usps.target, raw_usps, cluster_method=\"HDBSCAN\"),\n",
" ]\n",
")\n",
"usps_umap_results_long = usps_umap_results.melt([\"Method\", \"Pct Clustered\"], var_name=\"Score Type\", value_name=\"Score\")\n",
"usps_umap_results_long[\"Dim Reduction\"] = \"UMAP\""
]
},
{
"cell_type": "code",
"execution_count": 67,
"id": "ffcc59d8",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAABREAAAI0CAYAAACKxG4UAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAAsTAAALEwEAmpwYAABZvElEQVR4nO3deZiVdf0//ucww4CyKiJCLigmEmoupGZWSigoq3uSlqYorqVWapZbLvHpYy64m7mkpSKyUxlpkoaaS6WZ1ccNlU1BkEVZhvn94df5RcAtKOfMAI/HdXldnnO/z/t+nfNm5rzmec593xW1tbW1AQAAAABYiUb1XQAAAAAA0LAJEQEAAACAQkJEAAAAAKCQEBEAAAAAKCREBAAAAAAKCREBAAAAgEJCRAAAAACgkBARaLBuuOGGdO7cOZ07d87LL7+8wjEPPPBA3ZgP/9thhx2y77775qyzzsqLL764wscNHTo0nTt3ztChQ0v5FAAAlrG6/c1RRx210rneeOONbL/99nVj/9vK7geAj0OICDRItbW1uf/++1NRUZEkGTZsWOH47bffPqeeempOPfXUfO1rX8smm2ySsWPH5rDDDsvTTz9djpIBAAqtbn9TVVWVP//5zysNG4cNG5ba2tpUVVWt8VoB4L8JEYEG6dFHH80bb7yRgw46KJtssklGjBiRRYsWrXR8ly5dctppp+W0007Lueeem2HDhuWII47IokWLctVVV5WvcACAlVjd/mafffZJsuKwsaamJg888EB23HHHtGnTplQlA0AdISLQIH3YLB922GHp27dv3nnnnUyYMGG15jj00EOTJM8///warw8AYHWtbn+z7bbbZpdddsnIkSOzePHiZbb94Q9/yIwZM3L44YeXtGYA+JAQEWhw3n777Tz00EPp2LFjdt111xx88MFJknvvvfdjzecQHwCgvn3c/uawww7LrFmz8vvf/36Z+4cNG5YNN9wwBx54YMlqBoD/JEQEGpwHHnggixcvrmuut9tuu3Tt2jVPPPFEXnvttVWe57777kuS7LbbbiWpEwBgVX3c/ubAAw9M8+bNlzmkefr06Zk4cWJ69+6d5s2bl7x2AEiEiEADU1tbm2HDhqVRo0YZMGBA3f0HHXRQ3bYV+cc//pGhQ4dm6NChufzyy3PIIYdk2LBh2XTTTXP22WeXqXoAgOV93P4mSTbYYIP06dMnjz32WN54440kyf3335+amhqHMgNQVkJEoEF5/PHHM3ny5Oy1115p165d3f19+vRJ48aNM2LEiOXOCZQkL774Yq699tpce+21uf322/P888+nQ4cOuffee7P11luX8ykAACzj4/Y3Hzr88MPrruy8dOnSDB8+PJ07d85OO+1UjvIBIIkQEWhgPjwv0IeH+nxoo402Svfu3fP2228vd06g5INP8v/5z3/mxRdfzGOPPZYzzjgjU6dOzeDBg/Pee++VpXYAgBX5uP3Nh7p27ZquXbvmgQceyMSJE/Pmm2/6FiIAZSdEBBqMWbNm1V2h8Mwzz0znzp2X+e+3v/1tkv//XIcrUlFRkU022SSDBw/Osccem3/+85+56qqrylE+AMBy1kR/k3zwbcTp06fnggsuSNOmTdOvX7+S1w4A/8klS4EG48NDebp27ZouXbqscMxDDz2UP/3pT3n99dezxRZbFM53yimnZOTIkbn77rtz1FFHfeR4AIA1bU31N3369MmQIUMybdq0DBgwIC1btixl2QCwHCEi0GB8eFLxCy+8cKXn+Lnqqqtyww035P77788ZZ5xROF/z5s0zaNCgDBkyJNdee22GDBmyxmsGACiypvqb5s2b55Zbbsns2bPTtWvXktULACvjcGagQXjiiSfyyiuvZLvttis8Sfihhx6aioqKDB8+PEuWLPnIeQcOHJi2bdtm9OjR+b//+781WTIAQKE13d9069YtPXr0SPv27UtRLgAUEiICDcKH5wE67LDDCsdtvvnm2WuvvfLWW2/l4Ycf/sh5mzZtmhNPPDFLly7N1VdfvUZqBQBYFaXqbwCgPlTU1tbW1ncRAAAAAEDD5ZuIAAAAAEAhISIAAAAAUEiICAAAAAAUEiICAAAAAIWEiAAAAABAISEiAAAAAFCoqr4LWNPeeWd+li6tre8yAIAyadSoIhtt1Ky+yygLfQ4ArD/Wpx6HtcM6FyIuXVqruQYA1kn6HAAA6ovDmQEAAACAQkJEAAAAAKCQEBEAAAAAKCREBAAAAAAKCREBAAAAgEJCRAAAAACgkBARAAAAACgkRAQAAAAACgkRAQAAAIBCQkQAAAAAoJAQEQAAAAAoJEQEAAAAAAoJEQEAAACAQkJEAAAAAKCQEBEAAAAAKCREBAAAAAAKlSVEHDJkSLp3757OnTvnX//61wrH1NTU5KKLLkqPHj2y3377ZdiwYeUoDQDgE9HnAACwPihLiPiVr3wld999dz71qU+tdMyYMWMyefLkPPjgg7n33nszdOjQvPHGG+UoDwDgY9PnAACwPihLiNitW7e0b9++cMz48eNz2GGHpVGjRtl4443To0eP/OY3vylHeQAAH5s+BwCA9UGDOSfi1KlT06FDh7rb7du3z7Rp0+qxIgCANUOfAwDA2q6qvgtY09q0aV7fJQAAlIQ+BwCA+tJgQsT27dtnypQp2WmnnZIs/4n9qpo5c16WLq1d0+UBAA1Uo0YVDT5c0+cAAKtrbehxWL80mMOZe/XqlWHDhmXp0qWZNWtWJkyYkJ49e9Z3WQAAn5g+BwCAtV1ZQsRLLrkkX/rSlzJt2rQce+yx6d27d5Jk0KBBee6555Ik/fv3z+abb579998/hx9+eE455ZRsscUW5SgPAOBj0+cAALA+qKitrV2njolxmA8ArF/Wp0N99DkAsP5Yn3oc1g4N5nBmAAAAAKBhEiICAAAAAIWEiAAAAABAISEiAAAAAFBIiAgAAAAAFKqq7wIAaLg23mjDVFZVlnQfNUtqMuudBSXdBwAAAJ+MEBGAlaqsqsy0F18o6T422/4zJZ0fAACAT87hzAAAAABAISEiAAAAAFBIiAgAAAAAFBIiAgAAAACFhIgAAAAAQCEhIgAAAABQqKq+CwAAim280QaprCrtW3bNkiWZ9c57Jd0HAACw9hIiAkADV1lVlalPP1rSfbTfbe+Szg8AAKzdHM4MAAAAABQSIgIAAAAAhYSIAAAAAEAhISIAAAAAUEiICAAAAAAUEiICAAAAAIWEiAAAAABAoar6LgCgvrRo3SRNG1eXbP73Fy/K3NkLSzY/AAAAlIsQcT1S6sAkEZqwdmnauDpfve+Uks1/z+HXZW78PLB2WFSzOG3btijZ/N4fAIAV2XijDVJZVbpoombJksx6572SzQ/rEyHieqRp4+ocfu9JJd3HfUfcIDQB1jutN9owjasq67uMT6S6snFJ3yO8PwAAK1JZVZWpTz9asvnb77Z3yeaG9Y0QEQA+ocZVlXn4yVdLNv++u3cs2dwAAACrwoVVAAAAAIBCQkQAAAAAoJAQEQAAAAAo5JyIAAAAwHLWhYvHAWuOEBEAAGAd0qJ1kzRtXF3Sfby/eFHmzl5Y0n1Q/0p98bjEBeRgbSJEBABgrVfq0ERgwtqkaePqfPW+U0q6j3sOvy5z42eChm9RzeK0bduipPvwHsH6QogIAMBar2nj6hx+70klm/++I24QmACshaorG5f0/SHxHsH6w4VVAAAAAIBCQkQAAAAAoJAQEQAAAAAoJEQEAAAAAAoJEQEAAACAQkJEAAAAAKCQEBEAAAAAKCREBAAAAAAKCREBAAAAgEJCRAAAAACgUFV9FwDA+m1RzeK0bduiZPO/v3hR5s5eWLL5AQAA1gdCRADqVXVl4wwcdlrJ5v/lYUMzN0JEAACAT8LhzAAAAABAISEiAAAAAFBIiAgAAAAAFBIiAgAAAACFhIgAAAAAQCEhIgAAAABQqKq+CwAAAIB1TYvWTdK0cXVJ9/H+4kWZO3thSfcB8CEhIgAAAKxhTRtXZ+Cw00q6j18eNjRzI0QEysPhzAAAAABAId9EBAAAYL2z8UYbprKqsr7LAFhrCBEBAABY71RWVWbaiy+UbP7Ntv9MyeYGqA8OZwYAAAAACgkRAQAAAIBCQkQAAAAAoJAQEQAAAAAoJEQEAAAAAAoJEQEAAACAQkJEAAAAAKCQEBEAAAAAKFRV3wUAAADrhhatm6Rp4+qS7uP9xYsyd/bCku4DAFieEBEAAFgjmjauzuH3nlTSfdx3xA2ZGyEiAJSbw5kBAAAAgEJCRAAAAACgkBARAAAAACgkRAQAAAAACgkRAQAAAIBCQkQAAAAAoJAQEQAAAAAoJEQEAAAAAAoJEQEAAACAQkJEAAAAAKCQEBEAAAAAKCREBAAAAAAKCREBAAAAgEJCRAAAAACgkBARAAAAACgkRAQAAAAACgkRAQAAAIBCVeXa0SuvvJJzzjkns2fPTuvWrTNkyJB07NhxmTEzZ87Mueeem6lTp2bx4sXZc88984Mf/CBVVWUrEwBgtehxAABYH5Ttm4gXXHBBBg4cmN/+9rcZOHBgzj///OXG3HjjjenUqVPGjBmTMWPG5O9//3sefPDBcpUIALDa9DgAAKwPyhIizpw5My+88EL69OmTJOnTp09eeOGFzJo1a5lxFRUVmT9/fpYuXZpFixZl8eLFadeuXTlKBABYbXocAADWF2U5hmbq1Klp165dKisrkySVlZXZdNNNM3Xq1Gy88cZ1404++eScdtpp2XvvvfPee+/la1/7WnbbbbfV2lebNs3XaO2svrZtW9R3CdBgrAs/DxtttGHJ91FR4vnLsQ6tWpX2dWrVaoOSzl8O68LPw38rZ4+T6HPq27r4b3htZS0ahnVhHUrd55S6x0lKvw6l7nE+2Ic+B9YGDepEPL/5zW/SuXPn3HHHHZk/f34GDRqU3/zmN+nVq9cqzzFz5rwsXVpbwirXXuX6pfbWW3PLsh/4pMrxM7G2/zy0bdsi77yzoKT72KxdUurf2qVeh7ZtW2TOnNK+TnPmvFfS+Uv/50Hp1qFRo4oGH66tiR4n0ecU8Tu9YdBvNgzWYdWUus8pR4+TlHYdytHjJKXtc8rR4ySlWYe1ocdh/VKWw5nbt2+f6dOnp6amJklSU1OTGTNmpH379suMu+uuu9KvX780atQoLVq0SPfu3fPEE0+Uo0QAgNWmxwEAYH1RlhCxTZs26dKlS8aOHZskGTt2bLp06bLMYT5Jsvnmm2fixIlJkkWLFmXSpEn59Kc/XY4SAQBWmx4HAID1RdmuznzhhRfmrrvuSs+ePXPXXXfloosuSpIMGjQozz33XJLk+9//fp5++un07ds3AwYMSMeOHXP44YeXq0QAgNWmxwEAYH1QtnMidurUKcOGDVvu/ltuuaXu/7fccsvcdttt5SoJAOAT0+MAALA+KNs3EQEAAACAtZMQEQAAAAAoJEQEAAAAAAoJEQEAAACAQkJEAAAAAKCQEBEAAAAAKCREBAAAAAAKCREBAAAAgEJCRAAAAACgkBARAAAAACgkRAQAAAAACgkRAQAAAIBCQkQAAAAAoJAQEQAAAAAoJEQEAAAAAAoJEQEAAACAQkJEAAAAAKCQEBEAAAAAKCREBAAAAAAKCREBAAAAgEJCRAAAAACgkBARAAAAACgkRAQAAAAACgkRAQAAAIBCQkQAAAAAoFBVfRcA66MWrZukaePqks3//uJFmTt7YcnmBwAAANYvQkSoB00bV+fwe08q2fz3HXFD5kaICAAAAKwZDmcGAAAAAAoJEQEAAACAQkJEAAAAAKCQEBEAAAAAKCREBAAAAAAKCREBAAAAgEJCRAAAAACgkBARAAAAACgkRAQAAAAACgkRAQAAAIBCQkQAAAAAoJAQEQAAAAAoJEQEAAAAAAoJEQEAAACAQkJEAAAAAKCQEBEAAAAAKCREBAAAAAAKCREBAAAAgEJCRAAAAACgkBARAAAAACgkRAQAAAAACgkRAQAAAIBCQkQAAAAAoJAQEQAAAAAoJEQEAAAAAAoJEQEAAACAQkJEAAAAAKCQEBEAAAAAKCREBAAAAAAKCREBAAAAgEJCRAAAAACgkBARAAAAACgkRAQAAAAACgkRAQAAAIBCQkQAAAAAoJAQEQAAAAAoJEQEAAAAAAoJEQEAAACAQkJEAAAAAKCQEBEAAAAAKCREBAAAAAAKCREBAAAAgEJCRAAAAACgkBARAAAAACgkRAQAAAAACgkRAQAAAIBCQkQAAAAAoJAQEQAAAAAoJEQEAAAAAAoJEQEAAACAQkJEAAAAAKCQEBEAAAAAKFRV3wUAALBu26hVdaqqm9R3GQAAfAJCRACA9VyLlhukaZPStoUvX3pISeff5rzhJZ0fAGB9J0QEAFjPNW1Slb5njSrZ/GOu6F+yuQEAKI+ynRPxlVdeyRFHHJGePXvmiCOOyKuvvrrCcePHj0/fvn3Tp0+f9O3bN2+//Xa5SgQAWG16HAAA1gdl+ybiBRdckIEDB6Z///4ZNWpUzj///Nx5553LjHnuuedy7bXX5o477kjbtm0zd+7cVFdXl6tEAIDVpscBAGB9UJZvIs6cOTMvvPBC+vTpkyTp06dPXnjhhcyaNWuZcbfffnu++c1vpm3btkmSFi1apEkTJ+EGABomPQ4AAOuLsoSIU6dOTbt27VJZWZkkqayszKabbpqpU6cuM+6ll17K66+/nq997Ws56KCDcv3116e2trYcJQIArDY9DgAA64sGdWGVmpqa/POf/8xtt92WRYsW5fjjj0+HDh0yYMCAVZ6jTZvmpSuQVdK2bYv6LoFYh4ZiXViHjTbasOT7qCjx/OVYh1atSvs6tWq1QUnnL4d14efh41oTPU6iz6lv6/O/4YbGWjQM68I6lLrPKXWPk5R+HUrd43ywD30OrA3KEiK2b98+06dPT01NTSorK1NTU5MZM2akffv2y4zr0KFDevXqlerq6lRXV+crX/lK/va3v61Wgz1z5rwsXeqT/RUp1y+1t96aW5b9rM3KsRbW4aNZh4/Wtm2LvPPOgpLuY7N2Sal/a5d6Hdq2bZE5c0r7Os2Z815J5y/9nwelW4dGjSrqLVwrZ4+TlK7P8YfPqlnbf6eXg36zYbAOq6bUfU45epyktOtQjh4nKW2fU44eJynNOtRXj7Nw4cLMnDkz7747NzU1NWXfP+VXWVmZli1bpE2bNoWn3ClLiNimTZt06dIlY8eOTf/+/TN27Nh06dIlG2+88TLj+vTpk0ceeST9+/fPkiVL8vjjj6dnz57lKBEAYLXpcQCAdcnChQvz6quvpmnT5mnTpl0qK6tSUVGO79RSX2pra1NTsyQLFszPq6++mo4dO640SCzLORGT5MILL8xdd92Vnj175q677spFF12UJBk0aFCee+65JEnv3r3Tpk2bHHjggRkwYEC23XbbHHrooeUqEQBgtelxAIB1xcyZM9O0afO0bNk6VVWNBYjrgYqKilRVNU7Llq3TtGnzzJw5c6Vjy3ZOxE6dOmXYsGHL3X/LLbfU/X+jRo1y7rnn5txzzy1XWQAAn4geBwBYV7z77ty0adOuvsugnmy4YbPMnDk9HTqseHvZvokIAAAAQMP1wXmeG9Q1eCmjysqqwvNg+pcBAKz3XnrppfzmN7/J22+/nQsuuCAvvfRSFi9enO23376+SwMAKCuHMK+/PmrtV/mbiC+99FKuu+66uvP8vPTSS3nxxRc/WXUAAPXs17/+dY466qhMnz49o0aNSpIsWLAgP/7xj+u5MgAAaDhWKUTUXAMA66prrrkmP//5z3PxxRensrIySbL99tv7sBQAAP7DKh3O/GFz3aVLl/z6179OorkGANYNs2bNqjts+cNDOCoqKhzKAwAA/2GVQkTNNQCwruratWtGjRqVAQMG1N03bty47LTTTvVXFABAA7TBhk3StEnDvbzG+wuX5L0FC+u7jHXWKq285hoAWFedd955Oe6443L//fdnwYIFOe644/LKK6/k5z//eX2XBgDQoDRtUpW+Z42q7zJWaswV/ddIiLjnnrsmSTbbbLPce++INGnSZLkxAwb0zrRpU/Poo0+mqqrhBqtr0io9S801ALAuqq2tTXV1dcaOHZuJEydmn332Sfv27bPPPvukWbNm9V0eAAD1aNq0abn33l/m618/tr5LaRA+MkTUXAMA66qKior07ds3zzzzTA488MD6LgcAgAaiZcuWSSpyxx23pV+/AWndeqP6LqnefWSIqLkGANZlXbp0ySuvvJJOnTrVdykAADQQTZo0zde+dnSuuuqK/OxnN+c73zl7lR87YcKDuf/+e/Pvf/87S5Yszuabb5H99++VI488KtXV1cuMHTCgd5Lknnvuzy233JgJE36XWbNmpl27dunX7+AcffQ3VnhNkueffy53331n/vrXv+Tdd+dk443bZK+9vpDjjjsxbdu2/WRPfiVW6XBmzTUAsK7afffdM2jQoBx00EHZbLPNlmnSDj300HqsDACA+nTooYfn/vvvzciRw3P44V/Nlltu9ZGPueGGobnjjtvSunXr7L9/r2y44QaZNOlPueGGa/P445MydOj1qapqvMxjamqW5PTTT8nbb7+Vz39+r1RWVmbixD/k+uuvyaJFC3P88ScuM37s2FG5/PJL0rhx43zxi1/Oppu2yxtvvJ7Ro0fm0Ucn5mc/uyObbdZ+jb4WySqGiJprAGBd9cwzz+RTn/pUnnzyyWXur6io0OcAAKzHqqoa5+STT8/3v/+9XHfdNRky5IrC8c8999fcccdtaddus/z853emTZtNkiQnnXRazj77rDz22B9z11135phjjlvmcW+99Va23Xa7XHPN9WnatGmS5LjjTszhhw/IPffcnWOO+WZd8Dh58mv58Y8vTfv27XP99T/LpptuWjfPU089mdNPPzlXXvm/H1nrx7FKIaLmGgBYV/3iF7+o7xIAAGigunfvkR133CmPPPJw/vKXZ7PzzrusdOyYMaOTJMcee1xdgJgkVVVV+da3zsykSY9l9OiRy4WISXLmmd+tCxCTZOONN86XvrRPxo8fm9deey2dOm2bJHnggWFZsmRJzjjju8sEiEnSrdvu+eIXv5xHH52Y+fPnr/FrmaxSiKi5BgDWZXPmzMnDDz+c6dOnp127dtl3333TqlWr+i4LAIAG4PTTz8igQcfmmmuuzK233rHCcxQmyT//+Y8kyW67fW65bVtuuVU23XTTTJnyZubOnZsWLVrUbWvevHm22GLL5R6z6abtkiRz575bd99zz/0tSfLMM0/nhRf+vtxjZs2alZqamrz++mvZfvvPrMaz/GirFCImmmsAYN307LPP5sQTT8w222yTDh065OGHH85ll12Wm266KbvssvJPmgEAWD/suONn0717jzz00IRMmPBg9tuv5wrHzZ8/L0myySYrvrBJmzabZNq0aZk3779DxBYrHF9ZWZkkqalZWnffnDlzkiR3331nYc0LFrxXuP3jWKUQUXMNAKyrLrvsslxwwQXp3bt33X3jx4/PJZdckuHDh9djZQAANBQnn3xaJk78Q2644drss0/3FY5p1qx5kmTmzLez+eZbLLd95sy3k6w8NFwVzZt/sI/f/35i3f7KpdGqDPqwub7nnnvy05/+NPfcc08uvPDCXHLJJaWuDwCgpF599dUccMABy9zXs2fPTJ48uZ4qAgCgodl88y1yyCGHZcqUN3PfffescMx2222f5INDjf/b669PzowZM9Khw6eW+Rbi6tphhx2TJH/5y7Mfe46Pa5VCRM01ALCu2mqrrTJu3Lhl7vvNb36TLbZY/tNjAADWX9/85glp0aJF7rjj1rz33vKHC/ft2z9JctttP8s777xTd39NTU2GDr0qS5curRvzcR166BGpqqrKVVddkcmTX1tu++LFi/OXvzzzifaxMqt0OPOHzXXfvn3r7tNcAwDrgu9///sZPHhwfvGLX6RDhw55880389prr+XGG2+s79IAAGhAWrVqlW9845u59tqrV7h9p50+m6OO+kbuuuuODBx4WLp3/0qaNt0gjz/+p7z00v/ls5/dOUcd9Y1PVEPHjlvnvPMuyKWXXpQjjzwse+75+Wy55VZZsmRJpk+flr/85dlstNFGuffeBz7RflZklUJEzTUAsK7adddd87vf/S5/+MMfMmPGjOy777758pe/nNatW9d3aQAADcr7C5dkzBWf7Jt0pfT+wiUl38fhhx+Z4cOHZerUKSvcfuqp30rnzttn2LB78+tfj8uSJUvyqU9tnhNPPDkDBx6dxo0bf+IaDjigdz796e3yy1/elWee+XOefPLxbLDBBtlkk7bp3v0r6dFj/0+8jxVZpRBRcw0ArKumT5+epk2bpn///78hnjNnTqZPn5527drVY2UAAA3LewsW5r0FC+u7jJJ7/PGVHw5cXV2dESPGFj5+v/16rvQKzv9t5MhxK902aNDgDBo0eIXbtt320zn//ItWaR9ryiqdE3H69OlJkv79+2fQoEHp379/Kioq6u4HAFhbnXzyyZk2bdoy902bNi2nnnpqPVUEAAANzyqFiJprAGBd9eqrr6Zz587L3Ne5c+e8/PLL9VQRAAA0PKt0OLPmujw2alWdquom9V0GAKxXNt5447z22mvZaqut6u577bXXnLYFAAD+wyqFiJrrpEXLDdK0ySq9XJ/Iy5ceUrK5tzlveMnmBoC11SGHHJLTTjstZ5xxRrbYYotMnjw5V199dQ477LD6Lg0AABqMVUrFNNdJ0yZV6XvWqJLuoyFf4QgA1lUnnHBCqqqqMmTIkEybNi2bbbZZDjvssBx77LH1XRoAADQYqxQiaq4BgHVVo0aNcvzxx+f444+v71IAAKDBWqUQUXMNAKxrpkyZkkaNGmWzzTZLkrz33nu58cYb869//Su77LJLjjvuuFRWVtZzlQAA0DAUXp15ypQpy1yV+b333suVV16Zk046KTfffHNqampKXiAAQCmcd955ee655+puX3zxxRk3blw6duyY4cOH5+qrr67H6gAAoGEpDBE11wDAuurFF1/MF77whSTJggULMn78+Fx11VU5++yzc/3112fcuHH1XCEAADQchSGi5hoAWFctXrw4G264YZLkueeeS7NmzbLDDjskSTp16pR33nmnPssDAIAGpTBE1FwDAOuqzTffPE888USS5KGHHsoee+xRt23WrFnZYIMN6qs0AABocAovrPJhc73HHntorgGAdcqpp56aU045JVtssUVefvnl/OIXv6jb9vvf/z477rhjPVYHAAANS2GIqLkGANZVPXr0yAMPPJB//OMf+cxnPpMtttiibts222yTnXfeuf6KAwCABqYwRNRcAwDrsi233DJbbrnlcvfvtttu9VANAEDD1rJZVSqrm9R3GStVs2hh3p2/pL7LWGcVhoiJ5hoAAACApLK6SV6+9JD6LmOltjlveLIGQsQ999x1mduNGjVKixYts+2226Zv3wHp1evAFT7u1Vdfyf3335dnnnkq06dPz8KF76d169bZbrvts88+3dOz5wFp0mTFIextt/0sN910fZLk3nsfyFZbdfzEz2NN+8gQEQAAAADWN8cdd0KSZMmSJZk8+bVMnPiHPP30U3nxxX/k298+a5mxt956c2699eYsXbo0O+ywYw48sE823HCDzJo1K88883Quu+ziPPDAsNx++93L7ae2tjZjxoxKRUVFamtrM2rUiJx++hlleY6rQ4gIAAAAAP9l0KDBy9z+85+fyOmnn5x77/1lDj/8yHTo0CFJcvvtt+aWW25Mu3ab5dJLh2SHHZa/hsijj07ML3951wr388QTkzJlypvp3btvJk36U8aPH5OTTjo1jRs3XvNP6hNoVN8FAAAAAEBD97nP7ZGttuqY2tra/OMff0+STJkyJT/72U2pqqrKT396zQoDxCTZe+8v5aqrrl3htlGjRiRJ+vc/OD17HpDZs2fnD394qDRP4hPwTUQAYL00cODAVFRUFI65++7lDzcBAGD9VVtbmyR1feS4caOyZMmS7Ldfz3TqtG3hY6urq5e7b+bMmfnjHx/JlltulZ12+myaNWuWX/3qrowa9UD226/nmn8Cn0BhiKi5BgDWVYcddlh9lwAAwFrkySefyOTJr6WioiJdunwmSfLXv/4lSdKt2+4fa85x40ZnyZIl6d27b5KkU6dt07nz9nn66afy+uuTs8UWy1/suL4UhoiaawBgXXXQQQfVdwkAADRgt9xyY5JlL6xSW1ubr371a2nf/oPzIb799ttJkk033XS156+trc3o0SPSqFGjHHBAn7r7e/ful3/+838yevTInHLK6WvgmawZhSHiRzXXixcvXqPFAACUy8iRIz9yzIABA0peBwAADdOtt96c5INDl1u0aJHPfnaX9O3bPwcc0LtuzH8f3rw6nnrqybzxxhvZc8/PLxNC9uzZK0OHXplx48bkxBNPSlVVw7jAysc6J+KiRYtyzz335NZbb80jjzyypmsCACi5c845J1tttVU22WSTuubvP1VUVAgRAQDWY48//sxHjmnbtm1ee+3VzJgxY7XnHznygSQffPPwP7Vq1Tp77/2lPPzw7zNx4iPp3r3Has9dCoUh4ssvv5zzzjsvL774Yjp27JghQ4bklVdeySWXXJJ27drl7LPPLledAABr1NFHH53f/va3adasWQYMGJAePXqs8GTXAACwMp/97M556qk/56mnnky/fgNW+XHvvPNOJk78Q5Lkhz88Nz/84bkrHDdy5ANrR4h46aWXpmPHjhk8eHDGjh2bk08+OU2bNs2QIUOy1157latGAIA17rzzzss555yTP/7xjxk5cmQuu+yy7LPPPhkwYEC6detW3+UBALAW6N27f+6447Y8/PDv88orL2frrbdZ6dhFixbVfWg9fvyYLF68ONtv3yWf/nTnFY5/9NFH8uc/P5EpU95Mhw6fKkn9q6MwRHz++efzxz/+MdXV1fnc5z6X3XbbLQ8//HA222yzctUHAFAylZWV2WeffbLPPvtk3rx5uf766/P1r389P//5z7PnnnvWd3kAADRwHTp0yPHHn5gbb7wuZ555ei677H/qrtz8nyZNeix33XVHrrvug/Msjh49Mkny3e+em65dd1jh3DfddH1uu+1nGTVqRE466dSSPYdVVRgiLl68uC4h3XDDDdOiRQsBIgCwTpk7d27GjRuXkSNHZtasWTn55JPT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xYr+LR588MF54oknMnTo0Hz+85/PgAED0rNnzxxyyCG58847l3m/6Ny5c/r27Vv3c3LllVfWbXv88cdz2GGHpX///jnggAPy9a9/PUuXLk3ywbrdcccd6d27dw488MD06tUrP/jBD/Luu+/WPf6RRx5J586dM2HChGXqO+ecc7LjjjtmypQpy9x31113rdHXhrWTPqf+6HPWLvqc8tHj1A89Dqz7quq7gPXJ3Llzc8IJJ6Rr164577zzUlFRscz2bbfdNuPGjcvXvva1JMmIESPStWvX+ih1nXHuuedm4cKFGT58eJo3b57FixfngQceyKJFi9K4ceP6Li9Jcuedd2avvfZKmzZt6ruUejVjxoxcdNFFGTFiRNq3b5/a2tq8+OKLSZJRo0bVc3XrrmuuuSbbbbddkuTBBx/MCSeckFtvvTVJstdee+Waa65J8kHjdfHFF+fXv/51fvOb32TSpEl54IEH0qRJkyxatCiTJ09O8kGAcNRRR+Xggw/Oj3/84zRq1Cjvvvtuxo8fX7fP2bNnZ9KkSdl6663z8MMPZ//991+mppdffjlPPvlkdt9993K8BA3OgAEDcvbZZydJXn/99Xz3u9/N5MmT84Mf/KBuzD333JNmzZrlvffeS+/evdO9e/d07do1p59+eu68885sv/32SZIXXnih7r3mqquuyp///Ofccccd2WSTTbJ06dJMmDAhc+bMScuWLZMkw4cPz5577pn7778/PXr0WKautm3bZujQobn88svL8TKwFtLnlJ8+Z+2hzyk/PU7Do8eBtZ8QsUxmzpyZ733ve9l3333zrW99a4VjDjrooIwaNSpf+9rXMn/+/DzzzDM58MADs2jRoroxt9xyS37729+mpqYm7dq1y49+9KO0bds2kyZNylVXXZWFCxempqYmgwcPTu/evZN88On/DjvskL/85S+ZMWNGDjjggHznO99Jklx77bUZO3ZsmjRpkoqKitx55511v2jXdq+++momTJiQRx55JM2bN0+SNG7cOEcccURqamoyZMiQ/PGPf0ySfPGLX8x3vvOdVFZW5pxzzkl1dXVeffXVvP7669lvv/2y7777ZujQoZk2bVq+8Y1v5Bvf+EaSDz5t6927d5555pnMmDEj3/jGN3LUUUctV8uMGTNyySWXZMqUKVm4cGF69+6dwYMH54YbbsiMGTNy+umnp0mTJrniiiuy5ZZb5sorr8yf//znLF68ONttt10uvPDCNGvWrHwvXj14++23U1VVldatWydJKioq0qVLlyQffCr5zDPPpFmzZunevXv69++fP/3pT3nrrbfyzW9+s+41f+qpp3LRRRclSfbYY4/8/ve/z0033VTXQH5oZeuxvtt///3zt7/9Lbfeemv22WefZbbNnTs3rVq1SpJMnz49G220Uaqrq5Mk1dXV2XbbbZMkY8eOTevWrXPiiSfWPbZly5b56le/Wnd79OjR+fKXv5y99947w4cPX67BPu200/LTn/4099xzTyme5lpliy22yKWXXpp+/frlW9/6Vlq0aLHM9vfeey9LlixJixYtMn/+/CxYsCCbbLJJ3fbPfOYzSZL58+fntttuy8iRI+u2N2rUaJnX/p133smkSZPy61//Or17985bb72Vtm3b1m3/6le/mrvuuiv/93//V7fe8CF9Tvnpc9Yu+pz6pcdpePQ4sHYSIpbJt7/97QwcOHCljXXywS/S6urqvPTSS/nLX/6SHj16pKqqqq65HjVqVCZPnpz77rsvjRo1yi9/+cv8+Mc/zhVXXJHPfOYz+eUvf5nKysq8/fbbOfjgg7P33nvXvSFOnTo1d999d+bPn58ePXrk0EMPzUYbbZRbb701kyZNStOmTTNv3rw0bdq0LK9HObzwwgvZaqut6l6D/3TvvffmH//4Rx544IEkyaBBg3Lvvfdm4MCBSZJ///vfueOOO1JTU5Pu3btn7ty5ueuuu/LWW2+lV69eOfTQQ+ua3bfffjt333133n777QwYMCDdunWr+4TsQ2effXZOPvnkfO5zn8uiRYtyzDHHZMcdd8xJJ52UYcOGLfNJ6fXXX58WLVrk/vvvT5L85Cc/yc0335wzzjijZK9VQ7D99ttnp512yj777JM99tgju+66a/r375+NNtpoubHvv/9+7r333rzxxhvp27dvDjrooDRu3DhnnnlmfvrTn6Zbt2753e9+l1/84hcr3NfK1uMLX/hCqZ9mg/fZz342Dz30UPbZZ5/86U9/Sv/+/bNgwYLMmjUrN910U5LkwAMPzK9+9avsv//+6datW/bcc8/07t07VVVV+fvf/56ddtqpcB8PPPBAzj777Oyyyy657LLLMn369LRr165u+/7775+77747EyZMWO6T4nXFh39Qf+jVV19d6dhOnTqladOmeeWVV+pe2w//YHnttddy5JFHZptttkmSHH744dl///2z++67Z9ddd03fvn3Tvn37vPTSS6murq4btyKjRo3Kvvvum0022ST77bdfRo4cmUGDBtVt33DDDXPiiSfmyiuvzHXXXfdJnj7rIH1O+elz1i76nPqnxykPPQ6s24SIZfLlL38548ePz5FHHplNN910peMGDBiQESNG5K9//Wt++MMf5re//W3dtoceeijPP/98DjrooCRJTU1N3SfPs2bNyve///289tprqayszJw5c/LKK69k5513TpL06tUrjRo1SosWLdKpU6dMnjw5W2yxRbbeeut897vfzRe/+MXss88+dfOt6yZNmpSDDjqo7lPGgw8+OBMmTKhrrnv06FG3beutt86Xv/zlNGrUKO3atUvLli0zbdq0dOrUKUly6KGHJkk22WST7LPPPnnyySeXaa4XLFiQJ598MrNmzaq7b/78+XnppZdW2Mw99NBDmTdvXt3aL1q0aLlmfV3UqFGjXH/99fnXv/6VP//5z5kwYUJuvfXWjBkzZrmxBx54YJJk8803r1uPxYsXp2nTpunWrVuSZL/99lvht01Wdz3WN7W1tXX//5+H+jzxxBM588wz89vf/jabbrppxo0bl7/85S95+umnc+ONN2b06NG59dZbl3n8irzwwgt59913s+eee6aioiL77bdfRo0alRNOOGGZcWeddVYuvfTSdO/efc0/yQbgP/+gTj74HbQ6PjzU59133803vvGNuj9Gzj///Bx77LF5/PHHM3HixNx0000ZPnz4R65L8sEfPueee26SD74xdt555y3TYCcfNPC33XZb/vrXv65Wvaz79DkNiz6n4dHn1D89TnnocWDdJkQsk+OPPz4PP/xwjj766AwePDi33357kqRv377LnGD3gAMOSO/evbPJJptku+22W6a5rq2tzUknnVTXzP2nCy+8MN27d8+1116bioqK9OzZMwsXLqzb/p+fBlVWVqampiaVlZW577778swzz+Txxx/PwQcfnJ/97GfrTCP3mc98Jq+99lrmzJmz3Kf0tbW1y52r6T9v//frtaLXb0VWNO/SpUtTUVGR+++/f5XOT1RbW5sLLrggn//85z9y7Lpou+22y3bbbZevfe1rOfDAA/Pkk08uN2Zl6/Hfr/2KrO56rG+ee+65fPrTn17u/j322CNLlizJv//97+y0006pqqpKt27d0q1btxxyyCH5whe+kNmzZ2eHHXbI8OHDVzr//fffn3fffTdf+cpXknzwx2OzZs2Wa7A///nPZ5NNNsno0aPX7BNcC7388st5//33V/gJe8uWLbPXXnvlscceq/tGwxZbbJEtttgihx12WN17z+GHH56FCxfmlVdeydZbb73cPM8991xeeumlnHfeeXX3zZgxI88880x23XXXuvsaN26c0047LVdccUU6dOhQgmfL2kqfU376nLWTPqf+6HEaHj0OrH1cnbmMTjzxxBx00EG58cYbc8stt2TUqFHLXaGrWbNm+d73vld3wtn/1L179/zyl7/MnDlzknzwxvThCZnnzp2bT33qU6moqMhjjz2W11577SPrmTdvXmbNmpXdd989p59+erbbbrv8+9//XgPPtGHo2LFjunfvnvPPPz/z5s1L8sG3Gu64447sscceGTFiRBYvXpzFixdn5MiRH7uZHTFiRJIPviUxceLE5U6U3Lx58+y22265+eab6+6bOnVq3nrrrSQfrPncuXPrtnXv3j2333573VX65s2bl5deeulj1bY2mT59ep599tm629OmTcusWbOy+eabr9Ljt9lmmyxYsCBPP/10kmTChAnLXJHtQx+1HuuzCRMm5Fe/+lWOPfbY5bb985//zPz587P55pvn+eefzxtvvFG37e9//3tatWqVli1bpnfv3pk1a1Z+9rOf1X0y/O677+aOO+7IokWLMm7cuNx///156KGH8tBDD+XRRx9NRUVFnnrqqeX2edZZZ2Xo0KGle8JrgTfeeCPnnXdejjzyyBV+g2rRokV59tln07Fjx8yfPz+PPvroMq/7G2+8kc033zzNmjXLMccck/PPP7/uKqm1tbUZPXp0Jk+enOHDh+f444+vW5eHHnoop5122gr/WOrbt29mz569wj98Wb/pc8pLn7N20efULz1Ow6PHgbWTbyKW2eDBg1NbW5ujjz46d9555zLnyPjQh4cw/LcBAwZk9uzZdSdXrq2tzZFHHpntt98+Z511Vi666KLccsst6dy5czp37vyRtcybNy+nnXZa3n///dTW1uYzn/nMcif/Xdv9+Mc/znXXXZdDDjkkjRs3ztKlS/PlL385Z5xxRt588826Q6b23nvvHH744R9rH+3bt8/AgQPz1ltv5cQTT1zha/+///u/ufzyy9O3b98kHzTUl156adq2bZuvf/3r+f73v5+mTZvmiiuuyAknnJBrr702hx56aCoqKlJRUZFTTz217rCiddWSJUsydOjQvPnmm2natGmWLl2ab3/723UnTf4o1dXVueKKK3LhhRemadOm2XPPPbPJJpssd5LmpHg91jenn356qqur895776VTp065+eabs/POO+fll1+uO19QbW1tamtrc/nll2fjjTfO3//+91x00UWZN29eqqurs8EGG+S6665Lo0aNsuGGG+YXv/hFfvKTn+QrX/lKmjVrlqqqqgwcODATJkzIlltumY4dOy5TQ58+fTJ8+PC6Q7Q+tOOOO6Zr167LNPPrg5EjR2bSpEl577330rx58/Tt2zdHH330MmO++tWvplGjRlm4cGF23333HHnkkVm0aFHuvvvu/OhHP0qTJk1SU1OTvn37Zr/99kuSnHnmmbn99tvr5qqtrU23bt3y+c9/PuPHj8+vfvWrZfbRp0+f9OvXb5lP7pMPDsk744wz1vuT9LNi+pzy0uesPfQ55afHaXj0OLD2q6hdlZMIACvUvXv33HjjjctdFY/6MW/evLpPMh9//PGcc845eeihh9KokS9dA8Dq0uc0LPocAOqbbyIC64wHH3wwt99+e2pra+s+sddYAwDrAn0OAPXNNxEBAAAAgEI+umK907179/zrX/9a5r5BgwZl8uTJH/nYo48+Og8//HCpSluvWAcAWLO8tzYc1gKAdZHDmSHJLbfcUt8lEOsAAGua99aGw1oAsLbzTUTIsp8WH3300RkyZEiOPPLIfOUrX8n//u//rvAx48aNyyGHHJJp06ZlzJgxOeywwzJgwIAMGDAgkyZNqhv31FNPpW/fvunbt28uueSS7LvvvnX7evnll3P88cfnkEMOSb9+/TJ8+PDSP9kGzDoAwJrlvbXhsBYArO18ExFWYOrUqbn77rszf/789OjRI4ceemg6duxYt/2WW27JY489lttvvz0tWrTI3nvvnT59+qSioiIvv/xyjjnmmEycODGLFi3KmWeemZ/+9Kfp1q1bfve73+UXv/hFkmTJkiX5zne+k5/85Cfp1KlT5s2bl0MOOSQ777xzOnXqVE/PvGGxDgCwZnlvbTisBQBrGyEirECvXr3SqFGjtGjRIp06dcrkyZPrmrqhQ4emQ4cOufnmm1NdXZ0kef3113PWWWdl+vTpqaqqyttvv5233norM2fOTNOmTdOtW7ckyX777ZeWLVsmSV599dW89NJLOfPMM+v2u3jx4rz88suauv/HOgDAmuW9teGwFgCsbYSIsAJNmjSp+//KysrU1NTU3d55553z2GOPZcqUKXWN3plnnplzzjknPXr0yNKlS/PZz342CxcuTJJUVFSscB+1tbXZaKONMmrUqNI9kbWcdQCANct7a8NhLQBY2zgnIqymL37xi7nwwgtzwgkn5N///neSZO7cudl8882TJPfff38WLVqUJNlmm22yYMGCPP3000mSCRMm5N13302SbL311mnatGlGjhxZN/dLL72UefPmlfHZrL2sAwCsWd5bGw5rAUBD5JuIrJeOPfbYVFZW1t2eP3/+aj3+85//fC6//PKcdNJJufrqq3Puuefm5JNPTrt27bL77rundevWSZLq6upcccUVufDCC9O0adPsueee2WSTTdKiRYtUVVXlxhtvzGWXXZZbb701S5cuTZs2bXLVVVetwWfasFkHAFizvLc2HNYCgHVNRW1tbW19FwHrsnnz5qV58+ZJkscffzznnHNOHnrooTRq5IvA5WQdAGDN8t7acFgLAMrBNxGhxB588MHcfvvtqa2trfukWENXftYBANYs760Nh7UAoBx8ExEAAAAAKOTjKQAAAACgkBARAAAAACgkRAQAAAAACgkRgY9l6NCh+c53vlPfZZTV0UcfnWHDhq2Ruc4555xceeWVa2QuAGDN0eN8MnocgHWXEBFYqTFjxuTggw/OLrvskr333jvHH398nnrqqTU2/xtvvJHOnTtnyZIla3zOgw46aJn7Z82alR122CHdu3dfpXnWxz8gAGB9ocfR4wCw+oSIwArddtttueyyyzJ48OA89thjefjhhzNw4MD8/ve/r+/S6hQ15gsWLMi//vWvuttjx47Npz71qXKUBQA0YHocAPh4hIjAcubOnZtrrrkm559/fvbff/9suOGGady4cbp3756zzz57ufFPPPFEvvSlLy1zX/fu3fOnP/0pSfK3v/0tBx98cHbdddfstddeufzyy5MkRx11VJLkc5/7XHbZZZc8++yzSZL7778/BxxwQD73uc/luOOOy5tvvlk3b+fOnXP33Xdn//33z/7777/S59C/f/+MGDGi7vbIkSMzYMCAZcZMnz49p512Wvbcc8907949d955Z5Jk4sSJuemmm/LrX/86u+yyS/r161f3mDfffDNf/epXs8suu+Sb3/xmZs2aVbft97//fXr37p1u3brl6KOPzksvvVS37YUXXshBBx2UXXbZJd/+9rezcOHCldYOAJSGHkePA8DHJ0QElvPss89m4cKF2W+//dbIfJdeemm+/vWv55lnnsnvfve7HHDAAUmSu+66K0ny5z//Oc8++2x22WWXTJgwITfddFOuvfbaTJo0KbvttlvOOuusZeabMGFC7rvvvowfP36l++zXr1/Gjx+fmpqavPTSS5k/f34++9nP1m1funRpTjrppHTu3DkTJ07MHXfckTvuuCN//OMf86UvfSknnnhiDjjggDz77LMZPXp03ePGjh2byy+/PJMmTcrixYvz85//PEnyyiuv5Kyzzsr3v//9TJo0KV/60pcyePDgLFq0KIsWLcopp5yS/v3758knn0yvXr3y4IMPrpHXFgBYdXocPQ4AH58QEVjO7Nmzs9FGG6WqqmqNzFdVVZXJkydn1qxZadasWXbeeeeVjr3nnntywgknpFOnTqmqqsrgwYPzj3/8Y5lP6k844YS0bt06TZs2Xek8m222Wbbeeuv86U9/yogRI5b7hP65557LrFmzcuqpp6a6ujpbbLFFDj/88MKmPUkOPvjgbL311mnatGl69eqVf/zjH0mS8ePH58tf/nK+8IUvpHHjxjnuuOPy/vvv59lnn81f//rXLF68ON/4xjfSuHHj9OrVKzvuuONHv3AAwBqlx1k5PQ4AH2XNvHsC65TWrVvnnXfeyZIlS9ZIk33ppZfmmmuuyQEHHJDNN988p556avbdd98Vjp0yZUouu+yyDBkypO6+2traTJ8+ve58P+3bt1+l/Q4YMCAjRozIs88+m7vuuiuvvfZa3bY333wzM2bMSLdu3eruq6mpWeb2irRt27bu/zfYYIMsWLAgSTJjxox06NChblujRo3Svn37TJ8+PZWVlWnXrl0qKirqtv/nWACgPPQ4K6fHAeCjCBGB5eyyyy5p0qRJJkyYkF69en3k+A022CDvv/9+3e2ampplzqPTsWPH/PSnP83SpUvz4IMP5vTTT88TTzyxTMP5ofbt22fw4MHLnKPnv63ocSuy//775+KLL07Xrl3zqU99apkGu3379tl8881XesjNqu7jQ5tuuukyJzmvra3N1KlT6xrr6dOnp7a2tm7eKVOmZIsttlitfQAAn4weR48DwMfncGZgOS1atMjpp5+eiy++OBMmTMh7772XxYsX55FHHsn//M//LDd+6623zsKFC/OHP/whixcvzg033JBFixbVbR81alRmzZqVRo0apWXLlkmSysrKbLzxxmnUqFFef/31urFf/epXc/PNN+ff//53kg9OgP7rX//6Yz2PDTfcMHfccUcuvfTS5bbttNNOad68eW6++ea8//77qampyb/+9a/87W9/S5K0adMmb775ZpYuXbpK+zrggAPyyCOPLHMeoerq6uyyyy7ZeeedU1VVlTvvvDNLlizJgw8+mOeee+5jPScA4OPT4+hxAPj4fBMRWKFjjz02bdq0yfXXX5/vfOc7adasWbp27ZrBgwcvN7ZFixa54IIL8oMf/CA1NTU5/vjjs9lmm9Vt/+Mf/5gf//jHef/999OhQ4dceeWVadKkSZJk8ODBOfLII7NkyZL87Gc/y3777Zf58+fnzDPPzJtvvpkWLVpkr732qjtR+epa2Xl5Kisrc8MNN2TIkCH5yle+kkWLFmXrrbfOt7/97SRJr169Mnr06Oyxxx7ZfPPNl7kK4opss802+clPfpIf/ehHmT59erp06ZIbb7wx1dXVSZKhQ4fmhz/8Ya666qp8+ctfXmMndAcAVo8eR48DwMdTUVtbW1vfRQAAAAAADZfDmQEAAACAQkJEAAAAAKCQEBEAAAAAKCREBAAAAAAKCREBAAAAgEJCRAAAAACgkBARAAAAACgkRAQAAAAACgkRAQAAAIBC/x9SI5498uZW6gAAAABJRU5ErkJggg==\n",
"text/plain": [
"<Figure size 1152x576 with 2 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plot_scores(pd.concat([usps_raw_results_long, usps_pca_results_long, usps_umap_results_long]))"
]
},
{
"cell_type": "code",
"execution_count": 68,
"id": "af8e4002",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAB5kAAAI0CAYAAAAnep4gAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAAsTAAALEwEAmpwYAAB1FElEQVR4nOzdd5iU5dk3/u+yS1GkKCBFUSwRsbdYEvMECYhSBHtCNE2xl8ckRg2JJVET8vxMjFhj1NgSFelFTezR2InGPEjiqwIWioIggsKy7O8PXvaVUByF2dldPp/j8HD3vq+5rnPmZnfPub8z95RVV1dXBwAAAAAAAAAK0KjUBQAAAAAAAABQfwiZAQAAAAAAACiYkBkAAAAAAACAggmZAQAAAAAAACiYkBkAAAAAAACAggmZAQAAAAAAACiYkBkAAAAAYAMzcuTIdO3aNSNHjlxpe48ePdKjR4+CxgIAGy4hM1CnXXfddenatWu6du2a119/fbVjVjzR+eR/u+yySw466KD84Ac/yJQpU1Z7u2HDhqVr164ZNmxYMe8CAMBqfdY+57jjjlvjXG+99VZ23HHHmrH/aU3bAYCGpaqqKvfcc0+OO+647Lvvvtl5551zwAEHpH///hkyZEgeeuihUpdYUs8888xazwUJ0wGgcBWlLgBgTaqrq3PvvfemrKws1dXVGT58eM4777w1jt9xxx3Ts2fPJMmHH36YSZMmZfz48fnzn/+cP/zhD9l7771rq3QAgLX6rH1ORUVFnnvuubz++uvZdtttV9k/fPjwVFdXp6KiIkuXLi1m6QBAHVVVVZWTTz45f/3rX9OyZct89atfTYcOHTJ//vxMnz4948ePz+uvv56vfe1rSZJevXpl9913z+abb17iygGA+kjIDNRZTzzxRN56660cccQRefzxxzNq1Kicc845adKkyWrHd+vWLWeeeeZK2y688MLcfffdufLKK3P77bfXRtkAAJ/qs/Y53bt3z4MPPrjaMLqqqiojR47MrrvumtmzZ2fWrFm1cRcAgDpm/Pjx+etf/5odd9wxd9xxR1q0aLHS/o8++igvvfRSzfctWrRYZQwAQKFcLhuos4YPH54kOfroo9O/f/+8//77efDBBz/THEcddVSS5J///Od6rw8A4PP6rH3O9ttvnz333DOjR49OZWXlSvseffTRzJ49O8ccc0xRawYA6ra///3vSZLDDz98teHxRhttlP3337/m+897aeinn346xx9/fPbcc8/stddeOemkk/Laa6+tduzs2bNzySWXpEePHtlll12y//7754wzzljteZoVH2v2zDPPrLLvrbfeSteuXXP++eevsu+jjz7KDTfckAEDBmSPPfbInnvumWOPPTbjx49fadz555+fb33rW0mSq6++eqWPXXvmmWdy/PHH54ILLkiSXHDBBSvtf+utt2rmWbp0ae68884cc8wx2WuvvbL77rtn4MCBueOOO7Js2bLCH0gAqOe8kxmok9577708/PDD6dKlS/baa69ssskmueWWW3L33XenT58+n3m+igq/7gCAuuHz9jlHH310fvzjH+ehhx7KIYccUrN9+PDh2XjjjdOnT59cffXVtXEXAIA6qHXr1kmSqVOnFm2NRx99NA899FC+8pWv5Otf/3pee+21PPbYY3n55ZczYcKEbLbZZjVj33zzzQwaNCizZ8/O/vvvn759+2bGjBm5//778+ijj2bYsGE56KCD1qmeDz74IN/+9rczefLk7LzzzjnyyCOzbNmyPPHEE/nBD36QV199Neecc06S1HzE2qhRo7Lvvvtm3333rZlniy22qAnnH3rooXzta19Lt27dava3bNkySVJZWZlTTjklTzzxRLbZZpv069cvTZs2zTPPPJOf//zneemll/I///M/63SfAKC+kLoAddLIkSNTWVmZI444Ikmyww47ZOedd84zzzyTadOmZeutty5onnvuuSdJfB4zAFBnfN4+p0+fPrn88sszfPjwmpB51qxZefzxx3PEEUdkk002qbX7AADUPQcffHB+//vf56677srChQvTq1ev7Lzzztliiy3W2xoPPvhgbrrpphxwwAE126644or87ne/y4gRIzJ48OCa7RdffHFmz56d//7v/86pp55as33QoEE57rjjcv755+fhhx9O8+bNP3c9l19+eSZPnpwf/vCHK629ePHinHbaabnhhhtyyCGHpFu3bunZs2datGhREzL/50eubbnllkmShx56KD179qzp1T7p+uuvzxNPPJHjjjsuP/7xj1NeXp5k+ceX/PSnP82IESPSu3fvmkAbABoyl8sG6pzq6uoMHz48jRo1ysCBA2u2H3744TX7VueVV17JsGHDMmzYsPziF7/IkUcemeHDh2fzzTdf5bMLAQBK4fP2OcnyS1z269cvTz75ZM0lG++9995UVVW5VDYAkJ122im/+tWv0rZt24wdOzZnnnlmevTokf322y+nn356Hn744XVeo0+fPisFzElq+pCXX365ZtvMmTPzxBNPpFOnTjnxxBNXGr/XXnulb9++mTdvXv7yl7987lref//9jB07NrvssstKAXOSNG3aNOeee26qq6szbty4z73GJy1btix33HFH2rVrlwsuuKAmYE6S8vLynH/++SkrK1tv6wFAXeedzECd8/TTT2f69Ok58MAD0759+5rt/fr1y9ChQzNq1KicffbZady48Uq3mzJlSqZMmbLStk6dOuXOO+9Mp06daqV2AIC1+bx9zgrHHHNM7rrrrtx7770566yzMmLEiHTt2jW77bZbbd0FAKAO69OnT3r16pVnnnkmL7zwQl555ZW88MILefDBB/Pggw9m4MCB+eUvf5mysrLPNf8uu+yyyraOHTsmSebPn1+zbfLkyUmWX1ludX3N/vvvn7Fjx2by5MkrvfDus3j55ZdTVVWVsrKyDBs2bJX9S5cuTZK8/vrrn2v+//TGG29k3rx56dKlS6677rrVjmnWrNl6Ww8A6johM1Dn3H333UmyymWJNt100/To0SMPPPDAKp9FmCx/B9Avf/nLVFdXZ86cObn33ntz5ZVX5pRTTsndd9+djTbaqNbuAwDA6nzePmeFnXfeOTvvvHNGjhyZPfbYI2+//XZ++tOfFr1uAKD+aNy4cQ488MAceOCBSZZfyvmBBx7IkCFDMnr06PTq1etzX855xWcTf1JFxfJTzMuWLavZtmDBgiRJu3btVjvPiu0rxn0e8+bNS7I8bP7ku6j/08KFCz/3Gqtbb+rUqbn66quLvh4A1HVCZqBOmTt3bh588MEkyfe///18//vfX+24e+65Z40nX8vKytK2bduccsopmT9/fm6++eZceeWVueCCC4pWNwDAp1kffU6y/N3MF110US666KI0a9Yshx12WFHqBQAahvLy8vTp0yf//ve/c9111+Xpp58u+mcGt2jRIkny3nvvrXb/u+++myTZZJNNarateHd1VVXVKuNXF0avWOM73/lOrZzzWbFer1691hoyA8CGQsgM1CmjRo1KZWVldt5553Tr1m21Yx5++OH87W9/y5tvvpnOnTuvdb7TTz89o0ePzp133pnjjjvuU8cDABTL+upzVlxae+bMmRk4cOBq31EEAPCfmjdvniSprq4u+lo77bRTkuSFF17I0qVLa97tvMIzzzyTZPlVWlZo1apVkmTGjBmrzPfPf/5zlW277bZbGjVqlOeff77gulZ8jvLqguwkadSo0Rr3b7vttmnZsmVefPHFVFZWrvHjTQBgQyFkBuqU4cOHJ0kuvvjiNX624JVXXpnrrrsu9957b84555y1zrfJJptk8ODBGTp0aK6++uoMHTp0vdcMAFCI9dXnbLLJJrnxxhszb968lU7MAgAbtvHjx2fTTTfNAQccUBOWrvDuu+/W9CL77LNP0Wvp0KFDvvzlL+fJJ5/MrbfemhNOOKFm30svvZTx48enVatWK72jekV/NHLkyAwYMKAmmJ4xY0auueaaVdZo06ZN+vfvnzFjxuSaa67JySefvEqYPX369JSVldW8eK9169Y1c67Opptuusb9FRUVOe6443Lttdfm0ksvzQUXXJBmzZqtNGb27Nn54IMPsv3226/18QGAhkDIDNQZzzzzTN54443ssMMOazzxmiRHHXVUrr/++owYMSJnnnnmp847aNCg3HzzzRk7dmwGDx6s0QcAat367nNq4+QwAFC/vPTSS7ntttvSrl277LXXXtlyyy2TJG+99VYee+yxfPzxx/na17621o/lWJ8uueSSfOMb38ivfvWrPPnkk9lll10yY8aM3H///WnUqFEuv/zylS6Xvfvuu+eLX/xinnvuuRx99NHZf//989577+WRRx7JgQceuNrg98ILL8y0adNy1VVXZezYsdlrr73Stm3bzJ49O6+99lpefvnl/PrXv64JmbfZZpu0b98+EyZMSOPGjdOxY8eUlZVlwIAB2WKLLbLHHntko402yq233pr58+enTZs2SZLjjz8+LVq0yGmnnZYpU6bkrrvuyiOPPJL9998/7du3z5w5czJt2rRMmjQp55xzjnNPAGwQhMxAnXHPPfckSY4++ui1jttyyy3zpS99KU8++WQeeeSRT523WbNmOfnkk3PppZfmt7/9bYYNG7Ze6gUAKFSx+hwAgBW+973vpUuXLvnb3/6Wf/3rX3niiSeyZMmStG7dOvvuu2/69euX/v3713z2cbF17tw5I0aMyLXXXpvHH388zz77bJo3b56vfOUrOeWUU1b7wrtrr702v/rVr/LQQw/l9ttvT5cuXXLuuefm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AAAAACiYkBkAAAAAAACAggmZAQAAAAAAACiYkBkAAAAAAACAggmZAQAAAAAAACiYkBkAAAAAAACAggmZAQAAAAAAACiYkBkAAAAAAACAggmZAQAAAAAAACiYkBkAAAAAAACAggmZAQAAAAAAACiYkBkAAAAAAACAggmZAQAAAAAAACiYkBkAAAAAAACAggmZAQAAAAAAACiYkBkAAAAAAACAggmZAQAAAAAAACiYkBkAAAAAAACAggmZAQAAAAAAACiYkBkAAAAAAACAggmZAQAAAAAAACiYkBkAAAAAAACAggmZAQAAAAAAACiYkBkAAAAAAACAggmZAQAAAAAAACiYkBkAAAAAAACAggmZAQAAAAAAACiYkBkAAAAAAACAggmZAQAAAAAAACiYkBkAAAAAAACAggmZAQAAAAAAAChYRakLAAAAAKB2vPbaa7n//vvz3nvv5aKLLsprr72WysrK7LjjjqUuDQAAqEe8kxkAAABgA3DffffluOOOy6xZszJmzJgkyaJFi/LLX/6yxJUBAAD1jXcyAwAAAGwArrrqqtx8883p1q1b7rvvviTJjjvumClTppS4MgAAoL7xTmYAAACADcDcuXNrLotdVlZW8/8VXwMAABRKyAwAAACwAdh5551rLpO9woQJE7LbbruVqCIAAKC+crlsAAAAgA3AkCFDcsIJJ+Tee+/NokWLcsIJJ+SNN97IzTffXOrSAACAekbIDABArdm0VZNUNGla6jIAYINTXV2dJk2aZPz48Xn88cfTvXv3dOzYMd27d0/z5s1LXR4AAFDPCJkBAEiStGi5UZo1LX57+PplRxZt7m2HjCja3ABQn5WVlaV///6ZNGlS+vTpU+pyAACAek7IDABAkqRZ04r0/8GYTx+4DsZdMaCo8wMAa9atW7e88cYb2W677UpdCgAAUM/VWsj8xhtv5Pzzz8+8efPSunXrDB06NF26dFll3MSJE3Pdddeluro6ZWVlueWWW9K2bdvaKhMA4HPT7wAAddm+++6bwYMH5/DDD0+HDh1SVlZWs++oo4761NvrdQAAgBVqLWS+6KKLMmjQoAwYMCBjxozJhRdemNtuu22lMS+//HKuvvrq3HrrrWnXrl0WLFiQJk2a1FaJAADrRL8DANRlkyZNyhZbbJFnn312pe1lZWUFhcx6HQAAYIVaCZnnzJmTyZMn55ZbbkmS9OvXLz//+c8zd+7cbLbZZjXj/vCHP+R73/te2rVrlyRp0aJFbZQHALDO9DsAQF13++23f+7b6nUAAIBPqpWQecaMGWnfvn3Ky8uTJOXl5dl8880zY8aMlZ6IvPbaa9lyyy3zzW9+M4sWLUqvXr1y6qmnrnT5JgCAuki/AwDUB/Pnz88jjzySWbNmpX379jnooIPSqlWrT72dXgcAAPikWrtcdiGqqqryr3/9K7fcckuWLFmSE088MZ06dcrAgQMLnqNNm02KVyAFadfOq5TrCseibmgox2HTTTcu6vy1ccqpNo5Fq1bFfZxatdqoqPPXlobyc/F56Hcahg3533Bd41jUDQ3hOBS710kaRr9T7F5n+Rr1v9+pqz8Tf//733PyySdn2223TadOnfLII4/k8ssvzw033JA999xzvayh1wEAgA1DrYTMHTt2zKxZs1JVVZXy8vJUVVVl9uzZ6dix40rjOnXqlEMOOSRNmjRJkyZN8rWvfS3/+Mc/PtMTkTlzPsyyZdXr+R40HLXxRPfddxcUfY36rrZOODgWn87PRGHatWuR999fVLT5O7RPauM3d7GPRbt2LTJ/fvEepySZP/+jos5f/NPGyxXjWDRqVFbSE5INod+pqyfE66KG8Lu92PQ7dYPjUJhi9zpJw+h3aqPXSRpGv1Os47Cu/c7ll1+eiy66KH379q3ZNnHixFx66aUZMWLEWm/bEHodAKBuK/W5HVZv8eLFmTNnTj74YEGqqqpKXQ61oLy8PC1btkibNm3StGnTNY6rlZC5TZs26datW8aPH58BAwZk/Pjx6dat20qXU0qWf57PY489lgEDBmTp0qV5+umn07t379ooEQBgneh3AIC6burUqTn00ENX2ta7d+9cdNFFn3pbvQ4AwIZn8eLFmTp1apo12yRt2rRPeXmFj0Fp4Kqrq1NVtTSLFi3M1KlT06VLlzUGzY1qq6iLL744d9xxR3r37p077rgjl1xySZJk8ODBefnll5Mkffv2TZs2bdKnT58MHDgw22+/fY466qjaKhEAYJ3odwCAumzrrbfOhAkTVtp2//33p3PnzgXdXq8DALBhmTNnTpo12yQtW7ZORUVjAfMGoKysLBUVjdOyZes0a7ZJ5syZs8axtfaZzNttt12GDx++yvYbb7yx5utGjRrlggsuyAUXXFBbZQEArDf6HQCgLvvxj3+cU045Jbfffns6deqUt99+O9OmTcv1119f0O31OgAAG5YPPliQNm3al7oMSmTjjZtnzpxZ6dRp9ftrLWQGAAAAoHT22muv/OUvf8mjjz6a2bNn56CDDspXv/rVtG7dutSlAQBQB1VVVaW8XJS4oSovr1jr53D7lwEA8H+99tpruf/++/Pee+/loosuymuvvZbKysrsuOOOpS4NAGCdzZo1K82aNcuAAQNqts2fPz+zZs1K+/beoQIAwKpcInvD9WnHvuDPZH7ttddyzTXX1HzezmuvvZYpU6asW3UAAHXEfffdl+OOOy6zZs3KmDFjkiSLFi3KL3/5yxJXBgCwfpx22mmZOXPmSttmzpyZM844o0QVAQAA9VVBIbOTrgBAQ3fVVVfl5ptvzs9+9rOUl5cnSXbccUcvqgMAGoypU6ema9euK23r2rVrXn/99RJVBAAA1FcFhcxOugIADd3cuXNrLou94lIwZWVlLgkEADQYm222WaZNm7bStmnTpvlMZgAA4DMr6DOZnXQFABq6nXfeOWPGjMnAgQNrtk2YMCG77bZb6YoCAFiPjjzyyJx55pk555xz0rlz50yfPj2//e1vc/TRR5e6NAAA6qGNNm6aZk0LihpL4uPFS/PRosWlLqPBKujIO+kKADR0Q4YMyQknnJB77703ixYtygknnJA33ngjN998c6lLAwBYL0466aRUVFRk6NChmTlzZjp06JCjjz463/3ud0tdGgAA9VCzphXp/4MxpS5jjcZdMWC9hMz7779XkqRDhw65++5Radq06SpjBg7sm5kzZ+SJJ55NRUXdDd7Xp4LupZOuAEBDVl1dnSZNmmT8+PF5/PHH071793Ts2DHdu3dP8+bNS10eAMB60ahRo5x44ok58cQTS10KAADUOzNnzszdd/8x3/qWF2kmBYTMTroCAA1dWVlZ+vfvn0mTJqVPnz6lLgcAYL1655130qhRo3To0CFJ8tFHH+X666/Pv//97+y555454YQTUl5eXuIqAQCg7mrZsmWSstx66y057LCBad1601KXVHKfGjI76QoAbAi6deuWN954I9ttt12pSwEAWK+GDBmSQYMG1YTMP/vZz/Lcc8+lV69eGTFiRD788MN8//vfL3GVAABQdzVt2izf/ObxufLKK/L73/8uP/zheQXf9sEH/5x77707r776apYurcyWW3bOwQcfkm9847g0adJkpbEDB/ZNktx117258cbr8+CDf8ncuXPSvn37HHbYETn++G+nrKxslTX++c+Xc+edt+Wll17MBx/Mz2abtcmXvvTlnHDCyWnXrt263fk1KOhy2U66AgAN3b777pvBgwfn8MMPT4cOHVZq1o466qgSVgYAsG6mTJmSL3/5y0mSRYsWZeLEibnzzjuzyy675KijjspJJ50kZAYAgE9x1FHH5N57787o0SNyzDFfz1Zbbf2pt7nuumG59dZb0rp16xx88CHZeOON8tRTf8t1112dp59+KsOGXZuKisYr3aaqamnOOuv0vPfeuznggC+lvLw8jz/+aK699qosWbI4J5548krjx48fk1/84tI0btw4X/nKV7P55u3z1ltvZuzY0Xniicfz+9/fmg4dOq7XxyIpMGR20hUAaOgmTZqULbbYIs8+++xK28vKyvQ7AEC9VllZmY033jhJ8vLLL6d58+bZZZddkiTbbbdd3n///VKWBwAA9UJFReOcdtpZ+fGPf5RrrrkqQ4desdbxL7/8Um699Za0b98hN998W9q0aZskOfXUM3PeeT/Ik0/+NXfccVu+850TVrrdu+++m+233yFXXXVtmjVrliQ54YSTc8wxA3PXXXfmO9/5Xk0wPX36tPzyl5elY8eOufba32fzzTevmef555/NWWedlt/85v/71Fo/j4JCZiddAYCG7vbbby91CQAARbHlllvmmWeeyX777ZeHH344++23X82+uXPnZqONNiphdQAAUH/06NEzu+66Wx577JG8+OLfs8cee65x7LhxY5Mk3/3uCTUBc5JUVFTk7LO/n6eeejJjx45eJWROku9//9yagDlJNttss/zXf3XPxInjM23atGy33fZJkpEjh2fp0qU555xzVwqYk2SfffbNV77y1TzxxONZuHBhmjdvvk73/T8VFDI76QoAbAjmz5+fRx55JLNmzUr79u1z0EEHpVWrVqUuCwBgnZxxxhk5/fTT07lz57z++usrned56KGHsuuuu5awOgAAqF/OOuucDB783Vx11W9y0023rvYzkpPkX/96JUmy995fXGXfVlttnc033zzvvPN2FixYkBYtWtTs22STTdK581ar3GbzzdsnSRYs+KBm28sv/yNJMmnSC5k8+X9Xuc3cuXNTVVWVN9+clh133Okz3MtPV1DInDjpCgA0bH//+99z8sknZ9ttt02nTp3yyCOP5PLLL88NN9yQPfdc8ysSAQDqup49e2bkyJF55ZVXstNOO6Vz5841+7bddtvssccepSsOAADqmV133T09evTMww8/mAcf/HN69eq92nELF36YJGnbtt1q97dp0zYzZ87Mhx/+Z8jcYrXjy8vLkyRVVctqts2fPz9Jcuedt6215kWLPlrr/s+joJDZSVcAoKG7/PLLc9FFF6Vv37412yZOnJhLL700I0aMKGFlAADrbquttspWW636boi99967BNUAAED9dtppZ+bxxx/Nddddne7de6x2TPPmmyRJ5sx5L1tu2XmV/XPmvJdkzaFyITbZZPkaDz30eM16taVRIYNWnHS966678utf/zp33XVXLr744lx66aXFrg8AoFZMnTo1hx566ErbevfunenTp5eoIgAAAACgLtpyy8458sij8847b+eee+5a7ZgddtgxyfJLWf+nN9+cntmzZ6dTpy1WehfzZ7XLLss/+ubFF//+uef4vAoKmZ10BQAauq233joTJkxYadv999+/0uUkAQAAAACS5HvfOyktWrTIrbfelI8+WvVy1P37D0iS3HLL7/P+++/XbK+qqsqwYVdm2bJlNWM+r6OOOjYVFRW58sorMn36tFX2V1ZW5sUXJ63TGmtS0OWyV5x07d+/f802J10BgIbkxz/+cU455ZTcfvvt6dSpU95+++1MmzYt119/falLAwAAAADqmFatWuXb3/5err76t6vdv9tuu+e4476dO+64NYMGHZ0ePb6WZs02ytNP/y2vvfZ/svvue+S44769TjV06bJNhgy5KJdddkm+8Y2js//+B2SrrbbO0qVLM2vWzLz44t+z6aab5u67R67TOqtTUMjspCsA0NDttdde+ctf/pJHH300s2fPzkEHHZSvfvWrad26dalLAwBYbyorK/PSSy9l9uzZ6dOnTxYtWpQk2XjjjUtcGQAA9c3Hi5dm3BXr9k7cYvp48dKir3HMMd/IiBHDM2PGO6vdf8YZZ6dr1x0zfPjdue++CVm6dGm22GLLnHzyaRk06Pg0btx4nWs49NC++cIXdsgf/3hHJk16Ls8++3Q22mijtG3bLj16fC09ex68zmusTkEhs5OuAEBDN2vWrDRr1iwDBvy/xnj+/PmZNWtW2rdvX8LKAADWj3/961859dRT06RJk8yaNSt9+vTJc889l1GjRuXKK68sdXkAANQzHy1anI8WLS51GUX39NNrvtx0kyZNMmrU+LXevlev3unVq3dBa40ePWGN+wYPPiWDB5+y2n3bb/+FXHjhJQWtsb4U9JnMs2bNSpIMGDAggwcPzoABA1JWVlazHQCgvjvttNMyc+bMlbbNnDkzZ5xxRokqAgBYvy6++OKcddZZuf/++1NRsfx9B1/84hfzwgsvlLgyAACgvikoZHbSFQBo6KZOnZquXbuutK1r1655/fXXS1QRAMD69X/+z/+puWpLWVlZkuWXyV68uOG/+wQAAFi/CrpctpOutWPTVk1S0aRpqcsAgA3SZpttlmnTpmXrrbeu2TZt2jQfDwIANBhbbLFF/vnPf2bXXXet2faPf/wjW221VQmrAgAA6qOCQmYnXZMWLTdKs6YFPVzr5PXLjizq/NsOGVHU+QGgvjryyCNz5pln5pxzzknnzp0zffr0/Pa3v83RRx9d6tIAANaLs88+OyeffHK+/vWvp7KyMjfccEPuuuuu/PznPy91aQAAQD1TUGrqpGvSrGlF+v9gTFHXGHfFgKLODwCs2UknnZSKiooMHTo0M2fOTIcOHXL00Ufnu9/9bqlLAwBYLw466KDceOONGT58eL74xS/m7bffzrBhw7LLLruUujQAAKCeKShkdtIVAGjoGjVqlBNPPDEnnnhiqUsBACiK++67L4ceemh23nnnlbbff//9OeSQQ0pUFQAAUB8VFDI76QoANFTvvPNOGjVqlA4dOiRJPvroo1x//fX597//nT333DMnnHBCysvLS1wlAMC6GzJkSA499NBVtl944YVCZgAA4DNZa8jspCsA0NANGTIkgwYNqul3fvazn+W5555Lr169MmLEiHz44Yf5/ve/X+IqAQA+vzfffDNJUl1dXfP1J/c1adKkFGUBAAD12FpDZiddAYCGbsqUKfnyl7+cJFm0aFEmTpyYO++8M7vsskuOOuqonHTSSfodAKBe69WrV8rKylJdXZ1evXqttK9t27Y544wzSlQZAABQX601ZHbSFQBo6CorK7PxxhsnSV5++eU0b948u+yyS5Jku+22y/vvv1/K8gAA1tmUKVOSJMcdd1zuuOOOElcDAAA0BI3WttNJVwCgodtyyy3zzDPPJEkefvjh7LfffjX75s6dm4022qhUpQEArFc77rjjardfdtlltVwJAABQ3601ZHbSFQBo6M4444ycfvrpOfzww3PXXXflu9/9bs2+hx56KLvuumsJqwMAWH9Gjhy52u1jx46t5UoAAID6bq2Xy15x0rVz5855/fXXc/vtt9fsc9IVAGgIevbsmZEjR+aVV17JTjvtlM6dO9fs23bbbbPHHnuUrjgAgPXg3nvvTZJUVVXVfL3Cm2++mdatW5egKgAAoD5ba8jspCsAsCHYaqutstVWW62yfe+99y5BNQAA69eYMWOSLP9YtBVfJ0lZWVnatm2boUOHlqo0AADqsZbNK1LepGmpy1ijqiWL88HCpaUuo8Faa8icOOkKAAAAUJ+tuDLdb37zm5xzzjklrgYAgIaivEnTvH7ZkaUuY422HTIiWQ8h8/7777XS940aNUqLFi2z/fbbp3//gTnkkD6rvd3UqW/k3nvvyaRJz2fWrFlZvPjjtG7dOjvssGO6d++R3r0PTdOmqw/pb7nl97nhhmuTJHffPTJbb91lne/H+vapITMAAAAA9d8555yT999/P4899ljee++9nHjiiZk1a1aqq6vToUOHUpcHAAB12gknnJQkWbp0aaZPn5bHH380L7zwfKZMeSX//d8/WGnsTTf9Ljfd9LssW7Ysu+yya/r06ZeNN94oc+fOzaRJL+Tyy3+WkSOH5w9/uHOVdaqrqzNu3JiUlZWluro6Y8aMylln1b0XiwqZAQAAADYAzz77bM4888zssssumTRpUk488cRMmzYtN998c66//vpSlwcAAHXa4MGnrPT9c889k7POOi133/3HHHPMN9KpU6ckyR/+cFNuvPH6tG/fIZddNjS77LLrKnM98cTj+eMf71jtOs8881Teeeft9O3bP0899bdMnDgup556Rho3brz+79Q6aFTqAgAAAAAovssvvzxXXnllbrrpplRULH/fwe67755//OMfJa4MAADqny9+cb9svXWXVFdX55VX/jdJ8s477+T3v78hFRUV+fWvr1ptwJwkBx74X7nyyqtXu2/MmFFJkgEDjkjv3odm3rx5efTRh4tzJ9aBdzIDABu0QYMGpaysbK1j7rxz1cvWAADUN2+//XYOOOCAJKnpfxo3bpyqqqpSlgUAAPVWdXV1kv/XX0+YMCZLly5Nr169s91226/1tk2aNFll25w5c/LXvz6WrbbaOrvttnuaN2+eP/3pjowZMzK9evVe/3dgHaw1ZHbSFQBo6I4++uhSlwAAUCu22267/PWvf81XvvKVmm1/+9vfssMOO5SwKgAAqJ+effaZTJ8+LWVlZenWbackyUsvvZgk2WeffT/XnBMmjM3SpUvTt2//JMl2222frl13zAsvPJ8335yezp23Wi+1rw9rDZmddAUAGrrDDz+81CUAANSK888/PyeffHK6d++ejz/+OBdeeGEefvjhXHvttaUuDQAA6rwbb7w+SbJ06dJMnz4tjz/+aKqrq/P1r38zHTsu/zzm9957L0my+eabf+b5q6urM3bsqDRq1CiHHtqvZnvfvoflX//6VcaOHZ3TTz9rPdyT9WOtIfOnnXStrKxcr8UAANS20aNHf+qYgQMHFr0OAIBi22OPPTJ27NiMHTs2Rx55ZDp27Jh77703HTp0KHVpAABQ59100++SLL80dosWLbL77numf/8BOfTQvjVj/vPy2Z/F888/m7feeiv773/ASiF1796HZNiw32TChHE5+eRTU1HReB3vyfrxuT6TecmSJbnrrrty00035bHHHlvfNQEA1Jrzzz8/W2+9ddq2bVvTBH5SWVmZkBkAaDDat2+fwYMHl7oMAACod55+etKnjmnXrl2mTZua2bNnf+b5R48emWT5O5c/qVWr1jnwwP/KI488lMcffyw9evT8zHMXw1pD5tdffz1DhgzJlClT0qVLlwwdOjRvvPFGLr300rRv3z7nnXdebdUJAFAUxx9/fB544IE0b948AwcOTM+ePdOkSZNSlwUAsN6de+65a3xHxa9+9atargYAABqe3XffI88//1yef/7ZHHbYwIJv9/777+fxxx9Nkvz0pxfkpz+9YLXjRo8eWT9C5ssuuyxdunTJKaeckvHjx+e0005Ls2bNMnTo0HzpS1+qrRoBAIpmyJAhOf/88/PXv/41o0ePzuWXX57u3btn4MCB2WeffUpdHgDAerP11luv9P27776bBx54IP379y9RRQAA0LD07Tsgt956Sx555KG88cbr2Wabbdc4dsmSJTVvdpk4cVwqKyuz447d8oUvdF3t+CeeeCzPPfdM3nnn7XTqtEVR6v8s1hoy//Of/8xf//rXNGnSJF/84hez995755FHHvFZPQBAg1JeXp7u3bune/fu+fDDD3PttdfmW9/6Vm6++ebsv//+pS4PAGC9OOOMM1bZdtRRR+Waa64pQTUAANDwdOrUKSeeeHKuv/6afP/7Z+Xyy3+Vbt12WmXcU089mTvuuDXXXLP8c57Hjh2dJDn33Auy8867rHbuG264Nrfc8vuMGTMqp566am9f29YaMldWVtYk6BtvvHFatGghYAYAGqQFCxZkwoQJGT16dObOnZvTTjst3bp1K3VZAABF1a1btzz77LOlLgMAABqM73znhFRVVeWmm36X7373uOy66+7p1m2nbLTRRpk7d25efHFS3nxzek34/MILz2fatKnZbrvt1xgwJ0n//gPzhz/clAkTxmbw4FNSUbHWmLfo1rr6kiVL8tvf/rbm+48//nil75Pk7LPPLk5lAAC14JFHHsmoUaMyadKk9OjRI+eee2723nvvUpcFALDePfXUUyt9//HHH2fChAnZfvvtS1QRAAD1WdWSxdl2yIhSl7FGVUsWl2ztE044KT169MyIEcMzadLzGT9+bJYsWZxWrVrnC1/YIccf/50cckifJMmYMaOSJIcddvha5+zUqVO++MX98uyzT+eJJx5P9+49in4/1matIXP//v0zc+bMmu/79u270vcAAPXdqaeemm222Sb9+/dPs2bN8sQTT+SJJ55YaYwX1QEADcGQIUNW+n7jjTfOjjvumCuuuKJEFQEAUJ99sHBpsnBpqcsouqefnvS5brfNNtvmhz8871PH/exnl+VnP7usoDmvuuraz1VLMaw1ZP7FL36x1hsvW7ZsvRYDAFDbBg4cmLKyssybN6/UpQAAFNXDDz9c6hIAAIAG4nNdrPtf//pXRo8enXHjxq3yTh8AgPrkl7/85Vr3e1EdANCQzJ8/P4888khmzZqV9u3bp3v37mndunWpywIAAOqZRoUOnDt3bm699dYcfvjhGThwYF5++eVVLrMEANBQ/Otf/8rQoUPzX//1X6UuBQBgvfj73/+eXr165a677sq//vWv3HXXXTn44IPz97//vdSlAQAA9cxa38lcWVmZhx9+OKNGjcoTTzyRrbbaKn379s0777yT3/72t2nTpk1t1QkAUHRz587NuHHjMnr06EyZMiV77723F9XRIG3aqkkqmjQtdRkA1LLLL788F110Ufr27VuzbeLEibn00kszYsSIElYGAADUN2sNmb/85S+nrKwsRxxxRM4888zsvPPOSZI//elPtVIcAECxeVEdG6KKJk3z+mVHFnWNbYcIKwDqmqlTp+bQQw9daVvv3r1z0UUXlagiAACgvlrr5bK7du2aBQsW5KWXXsrLL7+c+fPn11ZdAAC14stf/nIuvPDCbLPNNrn77rszceLEnH766WncuHGpSwMAWK+23nrrTJgwYaVt999/fzp37lyiigAAgPpqre9kvv322/P2229n9OjRufnmm3PppZfmwAMPzKJFi7J06dLaqhEAoGi6du2aF154IS+99FK23nrrbLnllmnVqlWpywIAWO9+/OMf55RTTsntt9+eTp065e233860adNy/fXXl7o0AACgnllryJwkW2yxRU4//fScfvrpef755zNmzJg0atQohx12WI488sj86Ec/qo06AQCKwovqAOq+1q03TuPG5aUuA+q9vfbaK3/5y1/y6KOPZvbs2TnooIPy1a9+Na1bty51aQAAQD3zqSHzJ+2zzz7ZZ5998pOf/CR/+ctfMnr06CKVBQBQe7yoDqBua9y4PH8Y+3LR5v/OYbsWbW6oa1q1apUBAwaUugwAAKCe+0wh8wpNmzZNv3790q9fv/VdDwBASXlRHQDQUL355pu58sor88orr2TRokUr7Xv00UdLUxQAAFAvfa6QGQCgofOiOgCgofnhD3+Yzp0757zzzstGG21U6nIAAIB6TMgMAAAAsAF49dVX86c//SmNGjUqdSkAAEA951kFAAAAwAbgi1/8YiZPnlzqMgAAgAbAO5kBAAAAGqjf/va3NV9vscUWOeGEE3LwwQenbdu2K407++yza7s0AADquY03aZymjZuUuow1Wly5JIs+rCx1GQ2WkBkAAACggZo5c+ZK3/fo0SNLly5dZTsAAHxWTRs3yTF3n1rqMtbonmOvy6KsW8j8wgvP5/TTT8qee+6d6667cbVj3nnnnRxxRL906NAxo0dPSJKMHz82l156cZJkzz33ynXX/X6Ntz3yyP6prq5Okjz99KQ11nLLLb/PDTdcmyS5++6R2XrrLqsd98m1V2jcuHHatm2XPffcO8cf/+1ss822a1ynUEJmAAAAgAbqF7/4RalLAACADVZ5eUX+/vdJmTZt6mpD4bFjR6W6ujrl5RWpqlq6xnmqq6szbtyYlJWVpbq6OmPGjMpZZ52z1rW/8IUd8l//1T1JsnDhh5k06YVMnDguDz30l1xzzfXZZZfd1uWu+UxmAAAAgIbqzTffLOg/AABg/TvwwK8kWR4m/6eqqqpMmDA2O+20czbbbLO1zvPMM0/lnXfeTp8+/bLZZm0yceK4VFau/V3aX/hC1wwefEoGDz4l//3fP8ytt/4xffr0z+LFH+faa6/+/Hfq//JOZgAAAIAGqlevXjXvdliTsrKyvPLKK7VYFQAAbBi22WbbzJ07JxMnjs+pp56RiorGNfuefPKJvPvuuznhhJNz002/W+s8Y8YsD6kHDDgiLVu2yp/+dEceffTh9OrVu+BaysrKcuSRR2fixHGZPPmfn+8OfYJ3MgMAAAA0UFOmTMkrr7ySKVOmrPE/ATMAABTPgAGH5/3338/jjz+20vYxY0Zm4403/tSgeM6cOfnrXx/LVlttnd122z39+h1Wc/vPasWLT8vKyj7zbf+TkBkAAAAAAACgCHr2PDjNm2+yUig8e/bsPP3039KzZ+80b958rbefMGFsli5dmr59+ydJtttu+3TtumNeeOH5vPnm9ILrqK6uzsiRw5MkO++8y+e4JytzuWwAAACABuqEE07ITTfdlCQZNGjQGt+xcOedd9ZmWQAAsMFo1myjHHzwIRk9ekTeeeeddOrUKePHj0lVVVUGDDh8rbetrq7O2LGj0qhRoxx6aL+a7X37HpZ//etXGTt2dE4//azV3vbVV/+VG2+8PkmycOGHmTTphfz73/9K06bNcsopp6/z/RIyAwAAADRQAwcOrPn66KOPLl0hAACwARsw4PCMGnVvxo0bncGDT8nYsaOz/fZf+NR3FD///LN56623sv/+B2TzzTev2d679yEZNuw3mTBhXE4++dSVPut5hVdf/XdeffXfSZKKioq0bds2hx7aN9/61nezzTbbrvN9EjIDAAAANFD9+/ev+frww9f+LgkAAGBljRotvxJQdfWyNY5Zsa9RozV/SvGOO3ZL1647Zvz4sdlll10zc+aM/OAHP/rU9UePXn6J7b59D1tpe6tWrXPggf+VRx55KI8//lh69Oi5ym379OmfCy+85FPX+LyEzAAAAAAN2D//+c80adIkO+ywQ5Jk7ty5ueyyy/Lqq69mjz32yHnnnfepnwMHABuC1ptunMYV5UVdo3JpVea9v6ioawDrzyabtEiSzJ8/f41j5s2bt9LYNRk48IgMHXp5hg69PE2bNsshh/Rd6/j3338/jz/+aJLkpz+9ID/96QWrHTd69MjVhszFJmQGAAAAaMAuv/zynHHGGTUh85AhQzJ79uwce+yxGT9+fP7nf/4nF198cWmLBIA6oHFFeR55dmpR1zho3y5FnR9Yv7baaus0adIk06dPz/z589KqVetVxvzzn/9IknzhC19Y61wHH3xorrrqN5k9e1b69OmXFi3WHkpPnDgulZWV2XHHbvnCF7qudswTTzyW5557Ju+883Y6ddqisDu1ngiZAQAAABqw1157Lfvss0+S5IMPPshf//rXjBs3Lttss0169OiRr3/960JmAABYjaZNm6Znz96ZOHFchg27MkOGXJSysrKa/bNnz8odd9yWZNVLWv+n5s2b5ze/uTrz58/Ljjt2+9S1x44dnSQ599wL1vjZzTfccG1uueX3GTNmVE499YwC79X6IWQGAAAAaMCqqqrSuHHjJMmLL76Ytm3bZptttkmSdOzYMR988EEpywMAgDrt7LPPySuv/G/Gjx+bl1/+R/bdd/80b948M2fOyOOPP5ZFixbm+OO/k7322vtT59pjjz0LWvOFF57PtGlTs912268xYE6S/v0H5g9/uCkTJozN4MGnpKKi9qJfITMAAABAA7b99tvnvvvuS58+fTJx4sQccMABNftmzZr1qZfpAwCA1VlcuST3HHtdqctYo8WVS9bLPK1atc5NN92We+75Ux577JFMmDAuixcvTqtWrbLnnnvlyCOPzpe+dOB6WWuFMWNGJUkOO+zwtY7r1KlTvvjF/fLss0/niSceT/fuPdZrHWsjZAYAAABowH74wx/m1FNPzcUXX5xGjRrlj3/8Y82+iRMnZq+99iphdQAA1FeLPqzMolSWuoxasfHGG+c73zkh3/nOCQWN79fvsPTrt/bLZ3/SuHH3r/T9z352WX72s8sKuu1VV127Tmt/XkJmAAAAgAZsn332ySOPPJKpU6emS5cu2WSTTWr2ffWrX02fPn1KWB0AAFAfCZkBAAAAGrhNNtkku+yy6me5bbvttiWoBgAAqO8alboAAAAAAAAAAOoPITMAAAAAAAAABau1kPmNN97Isccem969e+fYY4/N1KlT1zj29ddfz+67756hQ4fWVnkAAOtMvwMANGR6HQAAYIVaC5kvuuiiDBo0KA888EAGDRqUCy+8cLXjqqqqctFFF6Vnz561VRoAwHqh3wEAGjK9DgAAsEKthMxz5szJ5MmT069fvyRJv379Mnny5Myd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zllnnZVdd901VVVV+dnPfpYnn3wySTJ48OAce+yxtVEeAMA60+8AAA2ZXgcAAFih1kJmAAAAAAAAAOq/WrlcNgAAAAAAAAANg5AZAAAAAAAAgIIJmQEAAAAAAAAomJAZAAAAAAAAgIIJmQEAAAAAAAAomJC5lvTo0SP//ve/kyQfffRRTjjhhFxwwQWpqqqqGXP88cdn1113zbx582q2Pf300+natWuGDh1a2yU3GJWVlfntb3+b3r17p2/fvjn00EPzy1/+MpWVlUVf+5PHfW3+8Ic/ZM6cOUWvpz647777MnDgwAwYMCCHHHJIfvCDHyRJBgwYkI8//nid5i70eGxIevTokUMOOSSHHXZYevXqlVNPPTWTJk1KkowcOTL77LNPBgwYkAEDBuTwww/PU089lSSprq7OVVddlb59++awww5Lnz59csstt9TM++677+ZHP/pRvva1r6Vfv34ZOHBg7rnnnpXWPvvss3PAAQes8rPYtWvXnHjiiatsW7hwYTEegpJY3b/FI444Is8880yGDRuWAw44IAMHDkzv3r1z5JFH5rbbblvp70XXrl3Tv3//mp+T3/zmNzX7nn766Rx99NEZMGBADj300HzrW9/KsmXLkiw/brfeemv69u2bPn365JBDDslPfvKTfPDBBzW3f+yxx9K1a9c8+OCDK9V3/vnnZ9ddd80777yz0rY77rhjvT421F96ndLS79Qv+p3apd8pDf0ODZF+p3T0OvWPfqf26HVKR78DbOgqSl3AhmbBggU56aSTsvPOO2fIkCEpKytbaf/222+fCRMm5Jvf/GaSZNSoUdl5551LUWqDccEFF2Tx4sUZMWJENtlkk1RWVmbkyJFZsmRJGjduXOrykiS33XZbvvSlL6VNmzalLqWkZs+enUsuuSSjRo1Kx44dU11dnSlTpiRJxowZU+LqGq6rrroqO+ywQ5Lkz3/+c0466aTcdNNNSZIvfelLueqqq5Isb05/9rOf5b777sv999+fp556KiNHjkzTpk2zZMmSTJ8+Pcnyky3HHXdcjjjiiPzyl79Mo0aN8sEHH2TixIk1a86bNy9PPfVUttlmmzzyyCM5+OCDV6rp9ddfz7PPPpt99923Nh6COmfgwIE577zzkiRvvvlmzj333EyfPj0/+clPasbcddddad68eT766KP07ds3PXr0yM4775yzzjort912W3bcccckyeTJk2v+1lx55ZV57rnncuutt6Zt27ZZtmxZHnzwwcyfPz8tW7ZMkowYMSL7779/7r333vTs2XOlutq1a5dhw4blF7/4RW08DNRTep3S0O/UH/qd0tDv1D36Heoz/U7t0+vUL/qd2qfXqZv0O0BDJ2SuRXPmzMmPfvSjHHTQQTn77LNXO+bwww/PmDFj8s1vfjMLFy7MpEmT0qdPnyxZsqRmzI033pgHHnggVVVVad++fX7+85+nXbt2eeqpp3LllVdm8eLFqaqqyimnnJK+ffsmWf5K2l122SUvvvhiZs+enUMPPTQ//OEPkyRXX311xo8fn6ZNm6asrCy33XZbzR+j+m7q1Kl58MEH89hjj2WTTTZJkjRu3DjHHntsqqqqMnTo0Pz1r39NknzlK1/JD3/4w5SXl+f8889PkyZNMnXq1Lz55pvp1atXDjrooAwbNiwzZ87Mt7/97Xz7299OsvwVa3379s2kSZMye/bsfPvb385xxx23Si2zZ8/OpZdemnfeeSeLFy9O3759c8opp+S6667L7Nmzc9ZZZ6Vp06a54oorstVWW+U3v/lNnnvuuVRWVmaHHXbIxRdfnObNm9feg1cC7733XioqKtK6deskSVlZWbp165Zk+Sv7Jk2alObNm6dHjx4ZMGBA/va3v+Xdd9/N9773vZrH/Pnnn88ll1ySJNlvv/3y0EMP5YYbbqhptFdY0/HY0B188MH5xz/+kZtuuindu3dfad+CBQvSqlWrJMmsWbOy6aabpkmTJkmSJk2aZPvtt0+SjB8/Pq1bt87JJ59cc9uWLVvm61//es33Y8eOzVe/+tUceOCBGTFixCpPRM4888z8+te/zl133VWMu1mvdO7cOZdddlkOO+ywnH322WnRosVK+z/66KMsXbo0LVq0yMKFC7No0aK0bdu2Zv9OO+2UJFm4cGFuueWWjB49umZ/o0aNVnrs33///Tz11FO577770rdv37z77rtp165dzf6vf/3rueOOO/J//s//qTne8El6ndLQ79Qv+p3S0+/UPfod6hP9Tu3T69Q/+p3S0uvUTfodoCESMtei//7v/86gQYPW+CQkWf7HpkmTJnnttdfy4osvpmfPnqmoqKh5IjJmzJhMnz4999xzTxo1apQ//vGP+eUvf5krrrgiO+20U/74xz+mvLw87733Xo444ogceOCBNY3DjBkzcuedd2bhwoXp2bNnjjrqqGy66aa56aab8tRTT6VZs2b58MMP06xZs1p5PGrD5MmTs/XWW9c8Bp90991355VXXsnIkSOTJIMHD87dd9+dQYMGJUleffXV3HrrramqqkqPHj2yYMGC3HHHHXn33XdzyCGH5Kijjqp5YvDee+/lzjvvzHvvvZeBAwdmn332qXmV2QrnnXdeTjvttHzxi1/MkiVL8p3vfCe77rprTj311AwfPnylVxxee+21adGiRe69994kyf/8z//kd7/7Xc4555yiPVZ1wY477pjddtst3bt3z3777Ze99torAwYMyKabbrrK2I8//jh333133nrrrfTv3z+HH354GjdunO9///v59a9/nX322Sd/+ctfcvvtt692rTUdjy9/+cvFvpt13u67756HH3443bt3z9/+9rcMGDAgixYtyty5c3PDDTckSfr06ZM//elPOfjgg7PPPvtk//33T9++fVNRUZH//d//zW677bbWNUaOHJnzzjsve+65Zy6//PLMmjUr7du3r9l/8MEH584778yDDz64yqstG4oVJx9WmDp16hrHbrfddmnWrFneeOONmsd2xRO7adOm5Rvf+Ea23XbbJMkxxxyTgw8+OPvuu2/22muv9O/fPx07dsxrr72WJk2a1IxbnTFjxuSggw5K27Zt06tXr4wePTqDBw+u2b/xxhvn5JNPzm9+85tcc80163L3aaD0OqWh36lf9Dt1g36nduh3aIj0O7VPr1P/6HdKT69Te/Q7wIZMyFyLvvrVr2bixIn5xje+kc0333yN4wYOHJhRo0blpZdeyk9/+tM88MADNfsefvjh/POf/8zhhx+eJKmqqqp5FefcuXPz4x//ONOmTUt5eXnmz5+fN954I3vssUeS5JBDDkmjRo3SokWLbLfddpk+fXo6d+6cbbbZJueee26+8pWvpHv37jXzNXRPPfVUDj/88JpX6x1xxBF58MEHa56I9OzZs2bfNttsk69+9atp1KhR2rdvn5YtW2bmzJnZbrvtkiRHHXVUkqRt27bp3r17nn322ZWeiCxatCjPPvts5s6dW7Nt4cKFee2111bb9D788MP58MMPa479kiVLVnli0xA1atQo1157bf7973/nueeey4MPPpibbrop48aNW2Vsnz59kiRbbrllzfGorKxMs2bNss8++yRJevXqtdpXbn/W47Ghqa6urvn6k5dUeuaZZ/L9738/DzzwQDbffPNMmDAhL774Yl544YVcf/31GTt2bG666aaVbr86kydPzgcffJD9998/ZWVl6dWrV8aMGZOTTjpppXE/+MEPctlll6VHjx7r/07WAZ88+ZAs/x30Way4nNIHH3yQb3/72zVP2i688MJ897vfzdNPP53HH388N9xwQ0aMGPGpxyVZ/gTxggsuSLL83RdDhgxZ6UlIsvxJzi233JKXXnrpM9XLhkGvU/fod+oe/U7doN+pHfodGiL9Tt2i16mb9Dulp9epPfodYEMmZK5FJ554Yh555JEcf/zxOeWUU/KHP/whSdK/f/+ceOKJNeMOPfTQ9O3bN23bts0OO+yw0hOR6urqnHrqqTWN7yddfPHF6dGjR66++uqUlZWld+/eWbx4cc3+T76iqry8PFVVVSkvL88999yTSZMm5emnn84RRxyR3//+9w2m6d1pp50ybdq0zJ8/f5VXvFZXV6/yuUmf/P4/H6/VPX6rs7p5ly1blrKystx7770FfVZQdXV1LrroohxwwAGfOrYh2mGHHbLDDjvkm9/8Zvr06ZNnn312lTFrOh7/+divzmc9Hhual19+OV/4whdW2b7ffvtl6dKlefXVV7PbbruloqIi++yzT/bZZ58ceeSR+fKXv5x58+Zll112yYgRI9Y4/7333psPPvggX/va15Isf6LdvHnzVZ6IHHDAAWnbtm3Gjh27fu9gPfT666/n448/Xu2rVFu2bJkvfelLefLJJ2teGdy5c+d07tw5Rx99dM3fnmOOOSaLFy/OG2+8kW222WaVeV5++eW89tprGTJkSM222bNnZ9KkSdlrr71qtjVu3DhnnnlmrrjiinTq1KkI95b6TK9TGvqd+km/U1r6nbpHv0N9od+pfXqd+ku/Uzp6nbpJvwM0NI1KXcCG5uSTT87hhx+e66+/PjfeeGPGjBmz0pOQJGnevHl+9KMf5bzzzlvl9j169Mgf//jHzJ8/P8nyP+BTpkxJsvwzNbbYYouUlZXlySefzLRp0z61ng8//DBz587Nvvvum7POOis77LBDXn311fVwT+uGLl26pEePHrnwwgvz4YcfJln+CuFbb701++23X0aNGpXKyspUVlZm9OjRn7vxHzVqVJLlrzh+/PHHs++++660f5NNNsnee++d3/3u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\n",
"text/plain": [
"<Figure size 1728x576 with 3 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plot_scores(\n",
" pd.concat([usps_raw_results_long, usps_pca_results_long, usps_umap_results_long]),\n",
" score_types=(\"ARI\", \"AMI\", \"Silhouette\")\n",
")"
]
},
{
"cell_type": "markdown",
"id": "d3c4cc14",
"metadata": {},
"source": [
"# Buildings Clustering"
]
},
{
"cell_type": "code",
"execution_count": 69,
"id": "a7aaa48d",
"metadata": {},
"outputs": [],
"source": [
"raw_buildings = buildings_data.astype(np.float32)"
]
},
{
"cell_type": "code",
"execution_count": 70,
"id": "8d0d9fa0",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"CPU times: user 46min 47s, sys: 1min 9s, total: 47min 56s\n",
"Wall time: 34min 1s\n"
]
}
],
"source": [
"%%time\n",
"km_labels = cluster.KMeans(n_clusters=40).fit_predict(raw_buildings)\n",
"cl_labels = cluster.AgglomerativeClustering(n_clusters=40, linkage=\"complete\").fit_predict(raw_buildings)\n",
"sl_labels = cluster.AgglomerativeClustering(n_clusters=120, linkage=\"single\").fit_predict(raw_buildings)\n",
"db_labels = cluster.DBSCAN(eps=6000).fit_predict(raw_buildings)\n",
"hd_labels = hdbscan.HDBSCAN(min_samples=3, min_cluster_size=20).fit_predict(raw_buildings)"
]
},
{
"cell_type": "code",
"execution_count": 71,
"id": "dbd610b0",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"ARI: 0.2022\n",
"AMI: 0.4992\n",
"Silhouette: 0.0706\n",
"ARI: 0.1322\n",
"AMI: 0.4259\n",
"Silhouette: 0.0427\n",
"ARI: 0.0036\n",
"AMI: 0.0861\n",
"Silhouette: -0.0796\n",
"Pct clustered: 96.86%\n",
"ARI: 0.4303\n",
"AMI: 0.7810\n",
"Silhouette: 0.2044\n",
"Pct clustered: 44.16%\n",
"ARI: 0.6070\n",
"AMI: 0.8563\n",
"Silhouette: 0.0768\n",
"Pct clustered: 63.93%\n"
]
}
],
"source": [
"buildings_raw_results = pd.DataFrame(\n",
" [\n",
" eval_clusters(km_labels, buildings_target, raw_buildings, cluster_method=\"K-Means\"),\n",
" eval_clusters(cl_labels, buildings_target, raw_buildings, cluster_method=\"Complete\\nLinkage\"),\n",
" eval_clusters(sl_labels, buildings_target, raw_buildings, cluster_method=\"Single\\nLinkage\"),\n",
" eval_clusters(db_labels, buildings_target, raw_buildings, cluster_method=\"DBSCAN\"),\n",
" eval_clusters(hd_labels, buildings_target, raw_buildings, cluster_method=\"HDBSCAN\"),\n",
" ]\n",
")\n",
"buildings_raw_results_long = buildings_raw_results.melt([\"Method\", \"Pct Clustered\"], var_name=\"Score Type\", value_name=\"Score\")\n",
"buildings_raw_results_long[\"Dim Reduction\"] = \"None\""
]
},
{
"cell_type": "code",
"execution_count": 72,
"id": "046176ef",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAABHQAAAI0CAYAAAB8hH7gAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAAsTAAALEwEAmpwYAABFhUlEQVR4nO3deZyVdd0//tfMsClgKiKCYC7dIpEmSu4lIigKCLgmamWKoqml1i1miUsu3N3mgppL7loaLqCIG2GZhlppZZlaiOKCoBDKIjAO8/vDr/OLm22wmXPmgufz8fAh57o+c13vcz4zc97zupZTUVtbWxsAAAAACqOy3AUAAAAAsHoEOgAAAAAFI9ABAAAAKBiBDgAAAEDBCHQAAAAACkagAwAAAFAwAh0AAACAghHoAE3WT3/603Tt2jVdu3bNq6++utwx9957b92YT/77whe+kL322iunn356XnrppeV+3ejRo9O1a9eMHj26MZ8CAMBSVre/OfLII1e4rTfffDPbbLNN3dj/a0XLgTWDQAdokmpra3P33XenoqIiSTJmzJiVjt9mm21y0kkn5aSTTsoRRxyRjTbaKOPHj88hhxySP/7xj6UoGQBgpVa3v2nWrFl+//vfrzD4GTNmTGpra9OsWbMGrxVo+gQ6QJP05JNP5s0338yQIUOy0UYb5b777svixYtXOL5bt245+eSTc/LJJ+fMM8/MmDFjcthhh2Xx4sW57LLLSlc4AMAKrG5/06tXryTLD35qampy7733Ztttt027du0aq2SgCRPoAE3SJ43LIYcckoEDB+Zf//pXJk6cuFrbOPjgg5Mkf/3rXxu8PgCA1bW6/c3nPve59OjRI2PHjk11dfVS6379619n5syZOfTQQxu1ZqDpEugATc57772XSZMmZfPNN88OO+yQAw88MEly1113fartOQ0ZACi3T9vfHHLIIZk9e3Z+9atfLbV8zJgxWXfddbP//vs3Ws1A0ybQAZqce++9N9XV1XWNztZbb53u3bvnmWeeyeuvv17v7fzyl79Mkuy4446NUicAQH192v5m//33T5s2bZa67GrGjBl54okn0r9//7Rp06bRaweaJoEO0KTU1tZmzJgxqayszODBg+uWDxkypG7d8vz973/P6NGjM3r06Fx00UU56KCDMmbMmGy88cY544wzSlQ9AMCyPm1/kyTrrLNO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7777ZuTIkWWqCABg1ep1ydWKGp1p06Y1SlEAAKXy2c9+Ng8++OBSyx5++OF06dKlTBUBAKxavc7Q+aTRGThwYN0yjQ4AsCb4/ve/n+HDh+e2225Lp06d8tZbb+X111/PNddcU+7SAABWqF6BjkYHAFhT7bDDDnnsscfy61//OjNnzsxee+2VPffcM+uvv365SwMAWKF6BToaHQBgTTVjxoy0atUqgwYNqlv2/vvv132EOQBAU1Sve+jMmDEjSTJo0KAMGzYsgwYNSkVFRd1yAICiOvHEE/POO+8steydd97JSSedVKaKAABWrV6BjkYHAFhTvfbaa+natetSy7p27ZpXX321TBUBAKxavT/lSqMDAKyJNtxww7z++utLLXv99dddWg4ANGn1CnQ0OgDAmuqggw7KySefnMcffzz//Oc/M2nSpJxyyik55JBDyl0aAMAK1eumyJ80Oqeeemq6dOmSadOm5fLLL9foAACFd9xxx6VZs2YZNWpU3nnnnWyyySY55JBDcvTRR5e7NACAFapXoKPRAQDWVJWVlTn22GNz7LHHlrsUAIB6q1ego9EBANY0b7/9diorK7PJJpskST788MNcc801eeWVV9KjR48cc8wxqaqqKnOVAADLt9J76Lz99ttLfbrVhx9+mEsvvTQnnHBCrrvuutTU1DR6gQAAjeGss87KCy+8UPf4vPPOy4MPPpjNN98899xzTy6//PIyVgcAsHIrDXQ0OgDAmuqll17K7rvvniRZsGBBJkyYkMsuuyxnnHFGrr766jz44INlrhAAYMVWGuhodACANVV1dXXWXXfdJMkLL7yQ1q1b5wtf+EKSZKuttsq//vWvcpYHALBSKw10NDoAwJqqc+fOeeaZZ5IkkyZNys4771y3bvbs2VlnnXXKVRoAwCqt9KbInzQ6O++8s0YHAFijnHTSSfnWt76VLl265NVXX81tt91Wt+5Xv/pVtt122zJWBwCwcisNdDQ6AMCaqk+fPrn33nvz97//PZ///OfTpUuXunVbbrlltt9++/IVBwCwCisNdDQ6AMCabLPNNstmm222zPIdd9yxDNUAANTfSgOdRKMDAAAA0NSs9KbIAAAAADQ9Ah0AAACAghHoAAAAABTMKu+hAwCwJho6dGgqKipWOuaOO+4oUTUAAKtnpYGORgcAWFMdcsgh5S4BAOBTW2mgo9EBANZUQ4YMKXcJTUbb9dZJq5ZO3F6ZhYs+ytwPPix3GQBQZ6Xv3KtqdKqrqxu0GACAUhk7duwqxwwePLjR62gKWrVsloGnjyt3GU3aA5cMytxyFwEA/+ZTHYpZvHhx7rzzztxwww35zW9+09A1AQA0uhEjRuSzn/1sNtpoo9TW1i6zvqKiYq0JdACA4llpoPPqq6/mrLPOyksvvZTNN988o0aNytSpU/OjH/0oHTp0yBlnnFGqOgEAGtRRRx2VRx55JK1bt87gwYPTp0+ftGjRotxlAQDUy0oDnQsuuCCbb755hg8fnvHjx+fEE09Mq1atMmrUqOy2226lqhEAoMGdddZZGTFiRH77299m7NixufDCC9OrV68MHjw4PXv2LHd5AAArtdJA569//Wt++9vfpkWLFvnSl76UHXfcMY8//ng22WSTUtUHANBoqqqq0qtXr/Tq1Svz5s3L1Vdfna997Wu58cYbs8suu5S7PACAFVppoFNdXV136vG6666btm3bCnMAgDXK3Llz8+CDD2bs2LGZPXt2TjzxxHTr1q3cZQEArNRKA53Fixfn8ssvr3u8cOHCpR4nybe//e3GqQwAoBE9/vjjue+++/Lcc8+ld+/e+d73vpcdd9yx3GUBANTLSgOdgQMH5p133ql73L9//6UeAwAU1QknnJAtttgiAwcOTKtWrfLkk0/mySefXGqMA1cAQFO10kDnoosuWukXL1mypEGLAQAolcGDB6eioiJz5swpdykAAKttpYHOirz88ssZO3ZsHnjggWWOZAEAFMHFF1+80vUOXAEATVm9A53Zs2fngQceyNixY/PSSy9lxx13zFlnndWYtQEAlJwDVwBAEazyU64mTZqU++67L08++WQ222yz9O/fP2+//XYuv/zytGvXrlR1AgA0GgeuAICiWWmgs/vuu6eioiIHHnhgTj755HTv3j1J8otf/KIkxQEANBYHrgCAIltpoNO1a9f88Y9/zJ///Od89rOfTefOnfOZz3ymVLUBADQaB64AgCKrXNnK2267LY899lh233333Hjjjdl9990zfPjwLFiwIB999FGpagQAaHBdu3bN3Llz8+c//zkvvPBC3n///XKXBABQbysNdJJk0003zbe+9a08+uijufnmm9O+fftUVlbmgAMOyP/8z/+UokYAgAbnwBUAUGSrDHT+Xc+ePXP++efn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RqADAAAAUDACnRLo3bt3XnnllSTJhx9+mGOOOSZnnnlmampq6sYcddRR2XbbbTNnzpy6ZU8//XS6du2aUaNGlbrkNUZ1dXUuv/zy7Lvvvunfv3/222+/XHzxxamurm70ff/7vK/MzTffnFmzZjV6PUXw0EMPZfDgwRk0aFD69euX008/PUkyaNCgLFy48D/adn3nY23Su3fv9OvXLwcccED69u2bE044Ic8991yS5N57703Pnj0zaNCgDBo0KEOGDMnkyZOTJLW1tbniiivSv3//HHDAAdl///1z00031W333XffzX//939n7733zoABAzJ48OD88pe/XGrf3/72t7Prrrsu87PYtWvXHHvsscssmz9/fmO8BGWxvO/FAw88MM8880xGjx6dXXfdNYMHD86+++6bgw46KLfeeutS7xddu3bNwIED635OLr300rp1Tz/9dA455JAMGjQo++23X772ta9lyZIlST6et1tuuSX9+/fP/vvvn379+uUHP/hBPvjgg7qv/81vfpOuXbtm4sSJS9U3YsSIbLvttnn77beXWnb77bc36GtDMelzykefUyz6nNLR45SHHqf0mpW7gLXJ3Llzc9xxx6V79+4566yzUlFRsdT6z33uc3nwwQdzxBFHJEnuu+++dO/evRylrjHOPPPMLFq0KPfcc0/atGmT6urq3HvvvVm8eHGaN29e7vKSJLfeemt22223tGvXrtyllNXMmTNz7rnn5r777kvHjh1TW1ubl156KUkybty4Mle35rriiiuy9dZbJ0keffTRHHfccbnhhhuSJLvttluuuOKKJB+/CZ533nl56KGH8vDDD2fy5Mm5995707JlyyxevDjTpk1L8vEfc0ceeWQOPPDAXHzxxamsrMwHH3yQCRMm1O1zzpw5mTx5crbYYos8/vjj2WeffZaq6dVXX82zzz6bnXbaqRQvQZMzePDgnHHGGUmSN954I9/73vcybdq0/OAHP6gbc+edd6Z169b58MMP079///Tu3Tvdu3fPKaeckltvvTXbbLNNkuTFF1+se6+57LLL8vvf/z633HJLNtpooyxZsiQTJ07M+++/n/XWWy9Jcs8992SXXXbJ3XffnT59+ixVV/v27TN69OhcdNFFpXgZKCB9Tunpc4pDn1N6epymR4/T8AQ6JTJr1qz893//d/baa698+9vfXu6YIUOGZNy4cTniiCMyf/78PPfcc9l///2zePHiujHXX399HnnkkdTU1KRDhw45//zz0759+0yePDmXXXZZFi1alJqamgwfPjz9+/dP8vFRsS984Qv505/+lJkzZ2a//fbLd7/73STJlVdemfHjx6dly5apqKjIrbfeWvdNX3SvvfZaJk6cmN/85jdp06ZNkqR58+Y57LDDUlNTk1GjRuW3v/1tkuTLX/5yvvvd76aqqiojRoxIixYt8tprr+WNN95I3759s9dee2X06NF555138vWvfz1f//rXk3ycQvfv3z/PPfdcZs6cma9//es58sgjl6ll5syZ+dGPfpS33347ixYtSv/+/TN8+PD89Kc/zcyZM3PKKaekZcuWueSSS7LZZpvl0ksvze9///tUV1dn6623zjnnnJPWrVuX7sUrg/feey/NmjXL+uuvnySpqKhIt27dknyc1j/33HNp3bp1evfunUGDBuV3v/td3n333Xzzm9+se83/8Ic/5Nxzz02S7LzzzvnVr36Va6+9tu7N/BMrmo+13T777JO//OUvueGGG9KrV6+l1s2dOzef+cxnkiQzZszIBhtskBYtWiRJWrRokc997nNJkvHjx2f99dfP8ccfX/e16623Xr761a/WPb7//vuz5557Zo899sg999yzTLNz8skn5yc/+UnuvPPOxniahdKlS5dccMEFOeCAA/Ltb387bdu2XWr9hx9+mI8++iht27bN/Pnzs2DBgmy00UZ16z//+c8nSebPn5+bbropY8eOrVtfWVm51Gv/r3/9K5MnT85DDz2U/v37591330379u3r1n/1q1/N7bffnn/+85918w2f0OeUnj6nWPQ55aXHaXr0OA1DoFMi3/nOdzJ06NAVNjnJx9/ULVq0yJQpU/KnP/0pffr0SbNmzeoanXHjxmXatGn55S9/mcrKyvz85z/PxRdfnEsuuSSf//zn8/Of/zxVVVV57733cuCBB2aPPfao++U0ffr03HHHHZk/f3769OmTgw8+OBtssEFuuOGGTJ48Oa1atcq8efPSqlWrkrwepfDiiy/ms5/9bN1r8O/uuuuu/P3vf8+9996bJBk2bFjuuuuuDB06NEnyj3/8I7fccktqamrSu3fvzJ07N7fffnvefffd9OvXLwcffHBd4/Hee+/ljjvuyHvvvZfBgwenZ8+edcnxJ84444yceOKJ+dKXvpTFixfnG9/4RrbddtuccMIJGTNmzFJHEK6++uq0bds2d999d5Lkxz/+ca677rqceuqpjfZaNQXbbLNNtttuu/Tq1Ss777xzdthhhwwaNCgbbLDBMmMXLlyYu+66K2+++WYGDhyYIUOGpHnz5jnttNPyk5/8JD179sxjjz2W2267bbn7WtF87L777o39NJu8L37xi5k0aVJ69eqV3/3udxk0aFAWLFiQ2bNn59prr02S7L///vnFL36RffbZJz179swuu+yS/v37p1mzZvnb3/6W7bbbbqX7uPfee3PGGWekR48eufDCCzNjxox06NChbv0+++yTO+64IxMnTlzmCMqa4pM/bj7x2muvrXDsVlttlVatWmXq1Kl1r+0nzePrr7+eww8/PFtuuWWS5NBDD80+++yTnXbaKTvssEMGDhyYjh07ZsqUKWnRokXduOUZN25c9tprr2y00Ubp27dvxo4dm2HDhtWtX3fddXP88cfn0ksvzVVXXfWfPH3WQPqc0tPnFIs+p/z0OKWhxyktgU6J7LnnnpkwYUIOP/zwbLzxxiscN3jw4Nx3333585//nB/+8Id55JFH6tZNmjQpf/3rXzNkyJAkSU1NTd0RmdmzZ+f73/9+Xn/99VRVVeX999/P1KlTs/322ydJ+vXrl8rKyrRt2zZbbbVVpk2bli5dumSLLbbI9773vXz5y19Or1696ra3pps8eXKGDBlSl74feOCBmThxYl2j06dPn7p1W2yxRfbcc89UVlamQ4cOWW+99fLOO+9kq622SpIcfPDBSZKNNtoovXr1yrPPPrtUo7NgwYI8++yzmT17dt2y+fPnZ8qUKct9Y500aVLmzZtXN/eLFy9epnFaE1VWVubqq6/OK6+8kt///veZOHFibrjhhjzwwAPLjN1///2TJJ07d66bj+rq6rRq1So9e/ZMkvTt23e5R2FXdz7WNrW1tXX//vfTkZ955pmcdtppeeSRR7LxxhvnwQcfzJ/+9Kf88Y9/zDXXXJP7778/N9xww1JfvzwvvvhiPvjgg+yyyy6pqKhI3759M27cuBx33HFLjTv99NNzwQUXpHfv3g3/JJuAf//jJvn4d9Dq+OR05A8++CBf//rX6xrDs88+O0cffXSefvrpPPHEE7n22mtzzz33rHJeko+b0DPPPDPJx2dSnHXWWUs1O8nHzdRNN92UP//5z6tVL2s+fU7Tos9pevQ55afHKQ09TmkJdErk2GOPzeOPP56jjjoqw4cPz80335wkGThw4FI3x9pvv/3Sv3//bLTRRtl6662XanRqa2tzwgkn1L2x/rtzzjknvXv3zpVXXpmKiorsu+++WbRoUd36f09Jq6qqUlNTk6qqqvzyl7/Mc889l6effjoHHnhgfvazn60xb6qf//zn8/rrr+f9999f5uhVbW3tMtf2//vj//t6Le/1W57lbXfJkiWpqKjI3XffXa/r2WtrazNy5Mjsuuuuqxy7Jtp6662z9dZb54gjjsj++++fZ599dpkxK5qP//vaL8/qzsfa5oUXXsh//dd/LbN85513zkcffZR//OMf2W677dKsWbP07NkzPXv2zEEHHZTdd989c+bMyRe+8IXcc889K9z+3XffnQ8++CB77713ko8b+datWy/T7Oy6667ZaKONcv/99zfsEyygV199NQsXLlzukaf11lsvu+22W5566qm6I31dunRJly5dcsghh9S99xx66KFZtGhRpk6dmi222GKZ7bzwwguZMmVKzjrrrLplM2fOzHPPPZcddtihblnz5s1z8skn55JLLkmnTp0a4dlSVPqc0tPnFJM+p3z0OE2PHuc/51OuSuj444/PkCFDcs011+T666/PuHHjlrnTeevWrfPf//3fdTeL+ne9e/fOz3/+87z//vtJPv4l8cnN1ObOnZtNN900FRUVeeqpp/L666+vsp558+Zl9uzZ2WmnnXLKKadk6623zj/+8Y8GeKZNw+abb57evXvn7LPPzrx585J8fLTvlltuyc4775z77rsv1dXVqa6uztixYz91Y3Hfffcl+fjo4RNPPLHMTc7atGmTHXfcMdddd13dsunTp+fdd99N8vGcz507t25d7969c/PNN9d92sG8efMyZcqUT1VbkcyYMSPPP/983eN33nkns2fPTufOnev19VtuuWUWLFiQP/7xj0mSiRMnLnVn+0+saj7WZhMnTswvfvGLHH300cuse/nllzN//vx07tw5f/3rX/Pmm2/Wrfvb3/6Wz3zmM1lvvfXSv3//zJ49Oz/72c/qjph88MEHueWWW7J48eI8+OCDufvuuzNp0qRMmjQpTz75ZCoqKvKHP/xhmX2efvrpGT16dOM94QJ48803c9ZZZ+Xwww9f7pkFixcvzvPPP5/NN9888+fPz5NPPrnU6/7mm2+mc+fOad26db7xjW/k7LPPrvu0mdra2tx///2ZNm1a7rnnnhx77LF18zJp0qScfPLJy21cBw4cmDlz5iz3jxDWbvqc0tLnFIs+p7z0OE2PHqdhOEOnxIYPH57a2tocddRRufXWW5e6pvITn5xm+X8NHjw4c+bMqbsxWm1tbQ4//PBss802Of3003Puuefm+uuvT9euXdO1a9dV1jJv3rycfPLJWbhwYWpra/P5z39+mRt3Fd3FF1+cq666KgcddFCaN2+eJUuWZM8998ypp56at956q+607j322COHHnrop9pHx44dM3To0Lz77rs5/vjjl/va/+///m8uuuiiDBw4MMnHzc0FF1yQ9u3b52tf+1q+//3vp1WrVrnkkkty3HHH5corr8zBBx+cioqKVFRU5KSTTqo79XlN9dFHH2X06NF566230qpVqyxZsiTf+c536m54tiotWrTIJZdcknPOOSetWrXKLrvsko022miZG6wlK5+Ptc0pp5ySFi1a5MMPP8xWW22V6667Lttvv31effXVuuvLa2trU1tbm4suuigbbrhh/va3v+Xcc8/NvHnz0qJFi6yzzjq56qqrUllZmXXXXTe33XZbfvzjH2fvvfdO69at06xZswwdOjQTJ07MZpttls0333ypGgYMGJB77rmn7jTyT2y77bbp3r37Uo3V2mDs2LGZPHlyPvzww7Rp0yYDBw7MUUcdtdSYr371q6msrMyiRYuy00475fDDD8/ixYtzxx135Pzzz0/Lli1TU1OTgQMHpm/fvkmS0047LTfffHPdtmpra9OzZ8/suuuumTBhQn7xi18stY8BAwbkgAMOWOqIVvLxZQOnnnrqWn+DTZZPn1Na+pzi0OeUnh6n6dHjNLyK2vpcdAYsV+/evXPNNdcs8+kClMe8efPqEv6nn346I0aMyKRJk1JZ6WREAFhd+pymRZ8D/F/O0AHWGI8++mhuvvnm1NbW1h3J0uQAAGsCfQ7wfzlDBwAAAKBgRLqsdXr37p1XXnllqWXDhg3LtGnTVvm1Rx11VB5//PHGKm2tYh4AoGF5b206zAVQCi65giTXX399uUsg5gEAGpr31qbDXAANzRk6kKWPohx11FEZNWpUDj/88Oy999753//93+V+zYMPPpiDDjoo77zzTh544IEccsghGTx4cAYPHpzJkyfXjfvDH/6QgQMHZuDAgfnRj36Uvfbaq25fr776ao499tgcdNBBOeCAA5b78XlrE/MAAA3Le2vTYS6AhuYMHViO6dOn54477sj8+fPTp0+fHHzwwUt9DOH111+fp556KjfffHPatm2bPfbYIwMGDEhFRUVeffXVfOMb38gTTzyRxYsX57TTTstPfvKT9OzZM4899lhuu+22JB9/fOV3v/vd/PjHP85WW22VefPm5aCDDsr222+/xn90Z32ZBwBoWN5bmw5zAfynBDqwHP369UtlZWXatm2brbbaKtOmTat7gx09enQ6deqU6667Li1atEiSvPHGGzn99NMzY8aMNGvWLO+9917efffdzJo1K61atUrPnj2TJH379s16662XJHnttdcyZcqUnHbaaXX7ra6uzquvvuoN9v8xDwDQsLy3Nh3mAvhPCXRgOVq2bFn376qqqtTU1NQ93n777fPUU0/l7bffrnvTPe200zJixIj06dMnS5YsyRe/+MUsWrQoSVJRUbHcfdTW1maDDTbIuHHjGu+JFJx5AICG5b216TAXwH/KPXRgNX35y1/OOeeck+OOOy7/+Mc/kiRz585N586dkyR33313Fi9enCTZcssts2DBgvzxj39MkkycODEffPBBkmSLLbZIq1atMnbs2LptT5kyJfPmzSvhsyku8wAADct7a9NhLoD6cIYOa6Wjjz46VVVVdY/nz5+/Wl+/66675qKLLsoJJ5yQyy+/PGeeeWZOPPHEdOjQITvttFPWX3/9JEmLFi1yySWX5JxzzkmrVq2yyy67ZKONNkrbtm3TrFmzXHPNNbnwwgtzww03ZMmSJWnXrl0uu+yyBnymTZt5AICG5b216TAXQGOrqK2trS13EbAmmzdvXtq0aZMkefrppzNixIhMmjQplZVOkCsl8wAADct7a9NhLmDt5AwdaGSPPvpobr755tTW1tYdQfHmWnrmAQAalvfWpsNcwNrJGToAAAAABSO2BQAAACgYgQ4AAABAwQh0AAAAAApGoAN8KqNHj853v/vdcpdRUkcddVTGjBnTINsaMWJELr300gbZFgDQcPQ4/xk9DpSOQAdYoQceeCAHHnhgevTokT322CPHHnts/vCHPzTY9t9888107do1H330UYNvc8iQIUstnz17dr7whS+kd+/e9drO2tjMAcDaQo+jx4E1gUAHWK6bbropF154YYYPH56nnnoqjz/+eIYOHZpf/epX5S6tzsqapAULFuSVV16pezx+/PhsuummpSgLAGjC9DjAmkKgAyxj7ty5ueKKK3L22Wdnn332ybrrrpvmzZund+/eOeOMM5YZ/8wzz+QrX/nKUst69+6d3/3ud0mSv/zlLznwwAOzww47ZLfddstFF12UJDnyyCOTJF/60pfSo0ePPP/880mSu+++O/vtt1++9KUv5Zhjjslbb71Vt92uXbvmjjvuyD777JN99tlnhc9h0KBBue++++oejx07NoMHD15qzIwZM3LyySdnl112Se/evXPrrbcmSZ544olce+21eeihh9KjR48ccMABdV/z1ltv5atf/Wp69OiRb37zm5k9e3bdul/96lfp379/evbsmaOOOipTpkypW/fiiy9myJAh6dGjR77zne9k0aJFK6wdAGgcehw9DqxJBDrAMp5//vksWrQoffv2bZDtXXDBBfna176W5557Lo899lj222+/JMntt9+eJPn973+f559/Pj169MjEiRNz7bXX5sorr8zkyZOz44475vTTT19qexMnTswvf/nLTJgwYYX7POCAAzJhwoTU1NRkypQpmT9/fr74xS/WrV+yZElOOOGEdO3aNU888URuueWW3HLLLfntb3+br3zlKzn++OOz33775fnnn8/9999f93Xjx4/PRRddlMmTJ6e6ujo33nhjkmTq1Kk5/fTT8/3vfz+TJ0/OV77ylQwfPjyLFy/O4sWL861vfSuDBg3Ks88+m379+uXRRx9tkNcWAKg/PY4eB9YkAh1gGXPmzMkGG2yQZs2aNcj2mjVrlmnTpmX27Nlp3bp1tt9++xWOvfPOO3Pcccdlq622SrNmzTJ8+PD8/e9/X+oI1nHHHZf1118/rVq1WuF2Ntlkk2yxxRb53e9+l/vuu2+ZI1cvvPBCZs+enZNOOiktWrRIly5dcuihh660gUqSAw88MFtssUVatWqVfv365e9//3uSZMKECdlzzz2z++67p3nz5jnmmGOycOHCPP/88/nzn/+c6urqfP3rX0/z5s3Tr1+/bLvttqt+4QCABqXHWTE9DhRPw/wmA9Yo66+/fv71r3/lo48+apCG54ILLsgVV1yR/fbbL507d85JJ52Uvfbaa7lj33777Vx44YUZNWpU3bLa2trMmDGj7vrwjh071mu/gwcPzn333Zfnn38+t99+e15//fW6dW+99VZmzpyZnj171i2rqalZ6vHytG/fvu7f66yzThYsWJAkmTlzZjp16lS3rrKyMh07dsyMGTNSVVWVDh06pKKiom79v48FAEpDj7NiehwoHoEOsIwePXqkZcuWmThxYvr167fK8euss04WLlxY97impmap664333zz/OQnP8mSJUvy6KOP5pRTTskzzzyz1Jv/Jzp27Jjhw4cvdU33/7W8r1ueffbZJ+edd166d++eTTfddKlmp2PHjuncufMKTwuu7z4+sfHGGy91g8La2tpMnz69rsmZMWNGamtr67b79ttvp0uXLqu1DwDgP6PH0ePAmsQlV8Ay2rZtm1NOOSXnnXdeJk6cmA8//DDV1dX5zW9+k//5n/9ZZvwWW2yRRYsW5de//nWqq6vz05/+NIsXL65bP27cuMyePTuVlZVZb731kiRVVVXZcMMNU1lZmTfeeKNu7Fe/+tVcd911+cc//pHk45sXPvTQQ5/qeay77rq55ZZbcsEFFyyzbrvttkubNm1y3XXXZeHChampqckrr7ySv/zlL0mSdu3a5a233sqSJUvqta/99tsvv/nNb5a67rxFixbp0aNHtt9++zRr1iy33nprPvroozz66KN54YUXPtVzAgA+PT2OHgfWJM7QAZbr6KOPTrt27XL11Vfnu9/9blq3bp3u3btn+PDhy4xt27ZtRo4cmR/84AepqanJsccem0022aRu/W9/+9tcfPHFWbhwYTp16pRLL700LVu2TJIMHz48hx9+eD766KP87Gc/S9++fTN//vycdtppeeutt9K2bdvstttudTcZXF0ruo67qqoqP/3pTzNq1KjsvffeWbx4cbbYYot85zvfSZL069cv999/f3beeed07tx5qU+TWJ4tt9wyP/7xj3P++ednxowZ6datW6655pq0aNEiSTJ69Oj88Ic/zGWXXZY999yzwW7GCACsHj2OHgfWFBW1tbW15S4CAAAAgPpzyRUAAABAwQh0AAAAAApGoAMAAABQMAIdAAAAgIIR6AAAAAAUjEAHAAAAoGAEOgAAAAAFI9ABAAAAKBiBDgAAAEDB/H9Y1cXON1+qnQAAAABJRU5ErkJggg==\n",
"text/plain": [
"<Figure size 1152x576 with 2 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plot_scores(buildings_raw_results_long)"
]
},
{
"cell_type": "code",
"execution_count": 73,
"id": "f4853d24",
"metadata": {},
"outputs": [],
"source": [
"pca_buildings = PCA(n_components=32).fit_transform(raw_buildings)"
]
},
{
"cell_type": "code",
"execution_count": 74,
"id": "7989eaeb",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"CPU times: user 12.8 s, sys: 374 ms, total: 13.2 s\n",
"Wall time: 3.24 s\n"
]
}
],
"source": [
"%%time\n",
"km_pca_labels = cluster.KMeans(n_clusters=40).fit_predict(pca_buildings)\n",
"cl_pca_labels = cluster.AgglomerativeClustering(n_clusters=40, linkage=\"complete\").fit_predict(pca_buildings)\n",
"sl_pca_labels = cluster.AgglomerativeClustering(n_clusters=120, linkage=\"single\").fit_predict(pca_buildings)\n",
"db_pca_labels = cluster.DBSCAN(eps=2000.0).fit_predict(pca_buildings)\n",
"hd_pca_labels = hdbscan.HDBSCAN(min_samples=3, min_cluster_size=20).fit_predict(pca_buildings)"
]
},
{
"cell_type": "code",
"execution_count": 75,
"id": "5192b527",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"ARI: 0.1843\n",
"AMI: 0.4805\n",
"Silhouette: 0.0679\n",
"ARI: 0.1242\n",
"AMI: 0.4252\n",
"Silhouette: 0.0367\n",
"ARI: 0.0133\n",
"AMI: 0.2430\n",
"Silhouette: -0.0987\n",
"Pct clustered: 96.89%\n",
"ARI: 0.3989\n",
"AMI: 0.7875\n",
"Silhouette: 0.1591\n",
"Pct clustered: 56.22%\n",
"ARI: 0.5708\n",
"AMI: 0.8360\n",
"Silhouette: 0.0596\n",
"Pct clustered: 70.78%\n"
]
}
],
"source": [
"buildings_pca_results = pd.DataFrame(\n",
" [\n",
" eval_clusters(km_pca_labels, buildings_target, raw_buildings, cluster_method=\"K-Means\"),\n",
" eval_clusters(cl_pca_labels, buildings_target, raw_buildings, cluster_method=\"Complete\\nLinkage\"),\n",
" eval_clusters(sl_pca_labels, buildings_target, raw_buildings, cluster_method=\"Single\\nLinkage\"),\n",
" eval_clusters(db_pca_labels, buildings_target, raw_buildings, cluster_method=\"DBSCAN\"),\n",
" eval_clusters(hd_pca_labels, buildings_target, raw_buildings, cluster_method=\"HDBSCAN\"),\n",
" ]\n",
")\n",
"buildings_pca_results_long = buildings_pca_results.melt([\"Method\", \"Pct Clustered\"], var_name=\"Score Type\", value_name=\"Score\")\n",
"buildings_pca_results_long[\"Dim Reduction\"] = \"PCA\""
]
},
{
"cell_type": "code",
"execution_count": 76,
"id": "75f1135e",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAABREAAAI0CAYAAACKxG4UAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAAsTAAALEwEAmpwYAABTt0lEQVR4nO3deZyVdd0//tcsDCiLCyJCqCgmEmqalGaWiiAoILgnamWK4lpqpWa55sLdbZmoueSOpSEKippGWqbhbmWZ2o0LLizKuAHCwDC/P/w6vybgEpCZMzDP5+PhQ865Pue63ud8YM57XtdWVldXVxcAAAAAgKUoL3UBAAAAAEDzJkQEAAAAAAoJEQEAAACAQkJEAAAAAKCQEBEAAAAAKCREBAAAAAAKCREBAAAAgEJCRKDZ+uUvf5mePXumZ8+eeemll5Y45vbbb68f8/F/W265ZXbdddecfPLJef7555f4utGjR6dnz54ZPXp0Y74FAIAGlre/OeSQQ5a6rtdffz1bbLFF/dj/trTnAWBFCBGBZqmuri633XZbysrKkiRjx44tHL/FFlvkuOOOy3HHHZeDDz446623XiZOnJj9998/Tz31VFOUDABQaHn7m8rKyjzxxBNLDRvHjh2burq6VFZWrvRaAeC/CRGBZunhhx/O66+/nr333jvrrbde7rjjjtTU1Cx1fK9evXL88cfn+OOPz2mnnZaxY8fmwAMPTE1NTS6++OKmKxwAYCmWt7/ZZZddkiw5bKytrc3tt9+erbbaKh07dmyskgGgnhARaJY+bpb333//DBkyJO+8804mTZq0XOvYb7/9kiT/+Mc/Vnp9AADLa3n7m8022yzbbrttxo8fnwULFjRY9sc//jEzZ87MAQcc0Kg1A8DHhIhAs/P222/ngQceSPfu3fOFL3wh++yzT5Lk1ltvXaH1OcUHACi1Fe1v9t9//1RXV+cPf/hDg+fHjh2bNddcM3vuuWej1QwA/0mICDQ7t99+exYsWFDfXG+++ebp3bt3Hnvssbz66qvLvJ7f/va3SZLtttuuUeoEAFhWK9rf7LnnnmnXrl2DU5pnzJiRhx56KIMGDUq7du0avXYASISIQDNTV1eXsWPHpry8PMOGDat/fu+9965ftiT/+te/Mnr06IwePToXXHBB9t1334wdOzbrr79+TjnllCaqHgBgcSva3yTJGmuskcGDB+eRRx7J66+/niS57bbbUltb61RmAJqUEBFoVh599NFMnTo1O+64Yzp37lz//ODBg9OqVavccccdi10TKEmef/75XHrppbn00ktz/fXX5x//+Ee6du2aW2+9NZtssklTvgUAgAZWtL/52AEHHFB/Z+dFixZl3Lhx6dmzZ7beeuumKB8AkggRgWbm4+sCfXyqz8fWWWed9O3bN2+//fZi1wRKPtqT/8ILL+T555/PI488khNPPDHTpk3LyJEj8+GHHzZJ7QAAS7Ki/c3Hevfund69e+f222/PQw89lDfeeMNRiAA0OSEi0GxUV1fX36HwpJNOSs+ePRv8d9999yX5/691uCRlZWVZb731MnLkyBx22GF54YUXcvHFFzdF+QAAi1kZ/U3y0dGIM2bMyJlnnpk2bdpkr732avTaAeA/uWUp0Gx8fCpP796906tXryWOeeCBB/KXv/wlr732WjbccMPC9R177LEZP358br755hxyyCGfOB4AYGVbWf3N4MGDM2rUqEyfPj3Dhg1Lhw4dGrNsAFiMEBFoNj6+qPhZZ5211Gv8XHzxxfnlL3+Z2267LSeeeGLh+tq1a5cRI0Zk1KhRufTSSzNq1KiVXjMAQJGV1d+0a9cuV199dd5999307t270eoFgKVxOjPQLDz22GN5+eWXs/nmmxdeJHy//fZLWVlZxo0bl4ULF37ieocPH55OnTrlzjvvzP/93/+tzJIBAAqt7P6mT58+6devX7p06dIY5QJAISEi0Cx8fB2g/fffv3Bct27dsuOOO+att97Kgw8++InrbdOmTY466qgsWrQov/jFL1ZKrQAAy6Kx+hsAKIWyurq6ulIXAQAAAAA0X45EBAAAAAAKCREBAAAAgEJCRAAAAACgkBARAAAAACgkRAQAAAAACgkRAQAAAIBClaUuYGV75505WbSortRlAABNpLy8LOus07bUZTQJfQ4AtBwtqcdh1bDahYiLFtVprgGA1ZI+BwCAUnE6MwAAAABQSIgIAAAAABQSIgIAAAAAhYSIAAAAAEAhISIAAAAAUEiICAAAAAAUEiICAAAAAIWEiAAAAABAISEiAAAAAFBIiAgAAAAAFBIiAgAAAACFhIgAAAAAQCEhIgAAAABQSIgIAAAAABQSIgIAAAAAhYSIAAAAAEChJgkRR40alb59+6Znz5558cUXlzimtrY2Z599dvr165f+/ftn7NixTVEaAMCnos8BAKAlaJIQcbfddsvNN9+cz3zmM0sdc9ddd2Xq1Km5//77c+utt2b06NF5/fXXm6I8AIAVps8BAKAlaJIQsU+fPunSpUvhmHvuuSf7779/ysvLs+6666Zfv3753e9+1xTlAQCsMH0OAAAtQbO5JuK0adPStWvX+sddunTJ9OnTS1gRAMDKoc8BAGBVV1nqAla2jh3blboEAIBGoc8BAKBUmk2I2KVLl7z55pvZeuutkyy+x35ZzZo1O4sW1a3s8gCAZqq8vKzZh2v6HABgea0KPQ4tS7M5nXngwIEZO3ZsFi1alOrq6kyaNCkDBgwodVkAAJ+aPgcAgFVdk4SIP/nJT/K1r30t06dPz2GHHZZBgwYlSUaMGJFnn302STJ06NB069Ytu+++ew444IAce+yx2XDDDZuiPACAFabPAQCgJSirq6tbrc6JcZoPALQsLelUH30OALQcLanHYdXQbE5nBgAAAACaJyEiAAAAAFBIiAgAAAAAFBIiAgAAAACFhIgAAAAAQCEhIgAAAABQSIgIAAAAABQSIgIAAAAAhYSIAAAAAEAhISIAAAAAUEiICAAAAAAUEiICAAAAAIWEiAAAAABAISEiAAAAAFBIiAgAAAAAFBIiAgAAAACFhIgAAAAAQCEhIgAAAABQSIgIAAAAABQSIgIAAAAAhYSIAAAAAEAhISIAAAAAUEiICAAAAAAUEiICAAAAAIWEiAAAAABAISEiAAAAAFBIiAgAAAAAFBIiAgAAAACFhIgAAAAAQCEhIgAAAABQSIgIAAAAABQSIgIAAAAAhYSIAAAAAEAhISIAAAAAUEiICAAAAAAUEiICAAAAAIWEiAAAAABAISEiAAAAAFBIiAgAAAAAFBIiAgAAAACFhIgAAAAAQCEhIgAAAABQSIgIAAAAABQSIgIAAAAAhYSIAAAAAEAhISIAAAAAUEiICAAAAAAUEiICAAAAAIWEiAAAAABAISEiAAAAAFBIiAgAAAAAFBIiAgAAAACFhIgAAAAAQCEhIgAAAABQSIgIAAAAABQSIgIAAAAAhYSIAAAAAEAhISIAAAAAUEiICAAAAAAUEiICAAAAAIUqS10AAAAA0PystdaaqaqqKHUZDdTU1Oa99+aWugxokYSIAAAAwGKqqipy/rWPlrqMBn747R1KXQK0WE5nBgAAAAAKCREBAAAAgEJCRAAAAACgkBARAAAAACgkRAQAAAAACgkRAQAAAIBCQkQAAAAAoJAQEQAAAAAoVFnqAgAAAACWRV3twnTq1L7UZTRQu6Am1e/OL3UZ0OiEiAAAAMAqoayiMq/edE6py2hg40PPSCJEZPXndGYAAAAAoJAQEQAAAAAoJEQEAAAAAAoJEQEAAACAQkJEAAAAAKCQEBEAAAAAKCREBAAAAAAKCREBAAAAgEJCRAAAAACgkBARAAAAACgkRAQAAAAAClU21YZefvnlnHrqqXn33Xez9tprZ9SoUenevXuDMbNmzcppp52WadOmZcGCBdlhhx3yox/9KJWVTVYmAMBy0eMAANASNNmRiGeeeWaGDx+e++67L8OHD88ZZ5yx2JgrrrgiPXr0yF133ZW77ror//znP3P//fc3VYkAAMtNjwMAQEvQJCHirFmz8txzz2Xw4MFJksGDB+e5555LdXV1g3FlZWWZM2dOFi1alJqamixYsCCdO3duihIBAJabHgcAgJaiSc6hmTZtWjp37pyKiookSUVFRdZff/1MmzYt6667bv24Y445Jscff3x22mmnfPjhhzn44IOz3XbbLde2OnZst1JrBwBYmqbscRJ9DgBNr3WbVqUuYTGtq5rf5UA6dWpf6hKg0TWrf3m/+93v0rNnz9xwww2ZM2dORowYkd/97ncZOHDgMq9j1qzZWbSorhGrBACak/LysmYfrq2MHifR5wDQtDp1ap/58xaUuozFzK9ZWOoSFvPWWx+s9HWuCj0OLUuTnM7cpUuXzJgxI7W1tUmS2trazJw5M126dGkwbsyYMdlrr71SXl6e9u3bp2/fvnnssceaokQAgOWmxwEAoKVokhCxY8eO6dWrVyZOnJgkmThxYnr16tXgNJ8k6datWx566KEkSU1NTSZPnpzPfvazTVEiAMBy0+MAANBSNNndmc8666yMGTMmAwYMyJgxY3L22WcnSUaMGJFnn302SfLDH/4wTz31VIYMGZJhw4ale/fuOeCAA5qqRACA5abHAQCgJSirq6tbrS6s41pBANCytKTrBelzAGhKnTq1z/nXPlrqMhr44bd3yKs3nVPqMhrY+NAzXBORFqFZ3VgFAAAAmqN1126TilbN607FtQsWpPrdeaUuA2ghhIgAAADwCSpatcprE64sdRkNbDj0qCRCRKBpNNk1EQEAAACAVZMjEQEAAGhW1l57zbRqVVHqMgD4D0JEAAAAmpVWrSpy893/LHUZDRw8qHepSwAoKaczAwAAAACFhIgAAAAAQCEhIgAAAABQSIgIAAAAABQSIgIAAAAAhYSIAAAAAEAhISIAAAAAUEiICAAAAAAUEiICAAAAAIWEiAAAAABAISEiAAAAAFBIiAgAAAAAFBIiAgAAAACFhIgAAAAAQCEhIgAAAABQSIgIAAAAABQSIgIAAAAAhYSIAAAAAEAhISIAAAAAUEiICAAAAAAUEiICAAAAAIWEiAAAAABAISEiAAAAAFBIiAgAAAAAFBIiAgAAAACFhIgAAAAAQCEhIgAAAABQSIgIAAAAABQSIgIAAAAAhYSIAAAAAEAhISIAAAAAUEiICAAAAAAUEiICAAAAAIWEiAAAAABAISEiAAAAAFBIiAgAAAAAFBIiAgAAAACFhIgAAAAAQCEhIgAAAABQSIgIAAAAABQSIgIAAAAAhYSIAAAAAEAhISIAAAAAUEiICAAAAAAUEiICAAAAAIWEiAAAAABAISEiAAAAAFBIiAgAAAAAFBIiAgAAAACFhIgAAAAAQCEhIgAAAABQSIgIAAAAABQSIgIAAAAAhYSIAAAAAEAhISIAAAAAUEiICAAAAAAUEiICAAAAAIWEiAAAAABAISEiAAAAAFBIiAgAAAAAFBIiAgAAAACFhIgAAAAAQCEhIgAAAABQSIgIAAAAABQSIgIAAAAAhYSIAAAAAEAhISIAAAAAUEiICAAAAAAUEiICAAAAAIWEiAAAAABAISEiAAAAAFBIiAgAAAAAFBIiAgAAAACFhIgAAAAAQCEhIgAAAABQSIgIAAAAABQSIgIAAAAAhZosRHz55Zdz4IEHZsCAATnwwAPzyiuvLHHcPffckyFDhmTw4MEZMmRI3n777aYqEQBguelxAABoCSqbakNnnnlmhg8fnqFDh2bChAk544wzcuONNzYY8+yzz+bSSy/NDTfckE6dOuWDDz5IVVVVU5UIACtkrbXWTFVVRanLaKCmpjbvvTe31GW0CHocAABagiYJEWfNmpXnnnsu1113XZJk8ODBOffcc1NdXZ111123ftz111+fb3/72+nUqVOSpH379k1RHgB8KlVVFTn/2kdLXUYDP/z2DqUuoUXQ4wAA0FI0yenM06ZNS+fOnVNR8dFRGhUVFVl//fUzbdq0BuOmTJmS1157LQcffHD23nvvXH755amrq2uKEgEAlpseBwCAlqLJTmdeFrW1tXnhhRdy3XXXpaamJkcccUS6du2aYcOGLfM6OnZs13gFAsBStG7TqtQlLKZTJ0e7NRcro8dJ9DlAy9K2XZtSl7CYNdZsfpeiaOzv++bY47SualZRRhJ9Fy1Dk/zL69KlS2bMmJHa2tpUVFSktrY2M2fOTJcuXRqM69q1awYOHJiqqqpUVVVlt912y9///vflarBnzZqdRYvs2Qeg6XTq1D7z5y0odRmLeeutD0pdQpMoLy8rWbjWlD1Oos8BWo5Ondpnzux5pS5jMR/OrSl1CYtpzO/75trjzK9ZWOoSFtMY81DKHgeWpElOZ+7YsWN69eqViRMnJkkmTpyYXr16NbhWUPLRdYQefvjh1NXVZcGCBXn00UezxRZbNEWJAADLTY8DAEBL0SQhYpKcddZZGTNmTAYMGJAxY8bk7LPPTpKMGDEizz77bJJk0KBB6dixY/bcc88MGzYsm222Wfbbb7+mKhEAYLnpcQAAaAma7EICPXr0yNixYxd7/uqrr67/c3l5eU477bScdtppTVUWAMCnoscBAKAlaLIjEQEAAACAVVPzu6URAEATmzJlSn73u9/l7bffzplnnpkpU6ZkwYIFrlsIAAD/zzIfiThlypRcdtll9df5mTJlSp5//vlGKwwAoCnce++9OeSQQzJjxoxMmDAhSTJ37txceOGFJa4MAACaj2UKETXXAMDq6pJLLsm1116bc845JxUVFUmSLbbYws5SAAD4D8t0OvPHzXWvXr1y7733JtFcAwCrh+rq6vrTlsvKyur///GfAQCAZTwSUXMNAKyuevfuXX+mxcfuvvvubL311iWqCAAAmp9lOhLx4+Z62LBh9c9prgGA1cHpp5+eww8/PLfddlvmzp2bww8/PC+//HKuvfbaUpcGAADNxjKFiJprAGB1VFdXl6qqqkycODEPPfRQdtlll3Tp0iW77LJL2rZtW+ryAACg2fjEEFFzDQCrnrrahenUqX2py6hXu6Am1e/OL3UZiykrK8uQIUPy9NNPZ8899yx1OQAA0Gx9YoiouQaAVU9ZRWVevemcUpdRb+NDz0jS/ELEJOnVq1defvnl9OjRo9SlAABAs7VMpzNrrgGA1dWXvvSljBgxInvvvXc22GCDBjeO22+//UpYGQAANB/LFCJqrgGA1dXTTz+dz3zmM3n88ccbPF9WVqbPAQBIMn/+/MyaNSvvv/9BamtrS10OK1lFRUU6dGifjh07pnXr1ksdt0whouYaAFhd3XTTTaUuAQCg2Zo/f35eeeWVtGnTLh07dk5FRWWDg8tYtdXV1aW2dmHmzp2TV155Jd27d19qkLhMIaLmGgBYnb333nt58MEHM2PGjHTu3Dm77rpr1lprrVKXBQBQcrNmzUqbNu3SocPapS6FRlBWVpbKylb18ztr1qx07dp1iWPLl3Wl7733XsaPH58rr7wy48ePz3vvvbdSigUAKKVnnnkm/fv3zy233JIXXnght9xyS/r3759nnnmm1KUBAJTc++9/kDXXbFvqMmgCa67ZNu+//8FSly/TkYjPPPNMjjrqqGy66abp2rVrHnzwwZx//vm58sors+222660YgEAmtr555+fM888M4MGDap/7p577slPfvKTjBs3roSVAQCUXm1tbSoqlik+YhVXUVFZeM3LZfpboLkGAFZXr7zySvbYY48Gzw0YMCBnnnlmiSoCAGheXAOxZfikeV6m05mX1lxPnTp1xSsDAGgGNt5449x9990Nnvvd736XDTfcsEQVAQBA87NMRyJ+3FwPGTKk/jnNNQCwOvjhD3+YkSNH5qabbkrXrl3zxhtv5NVXX80VV1xR6tIAAKDZWKYQUXMNAKyuvvCFL+T3v/99/vjHP2bmzJnZdddds/POO2fttdcudWkAANBsLFOIqLkGAFZXM2bMSJs2bTJ06ND65957773MmDEjnTt3LmFlAADN3xprtk6b1s33xivz5i/Mh3Pnf+r17LDDF5IkG2ywQW699Y60bt16sTHDhg3K9OnT8vDDj6eysvl+Jitqmd6R5hoAWF0dc8wxOf/887PWWmvVPzd9+vT86Ec/ytixY0tYGQBA89emdWWGnDyh1GUs1V0XDV0pIeLHpk+fnltv/XW+8Y3DVto6VxXLdGOVY445JtOnT2/w3PTp03Pcccc1SlEAAE3llVdeSc+ePRs817Nnz7z00kslqggAgOaoQ4cO6dBhrdxww3V59913Sl1Ok1umIxE11wDA6mrdddfNq6++mo033rj+uVdffdVlWwAAaKB16zY5+OBDc/HFF+VXv7oq3/veKcv82kmT7s9tt92af//731m4cEG6ddswu+8+MAcddEiqqqoajB02bFCS5JZbbsvVV1+RSZN+n+rqWencuXP22mufHHroN1NWVrbYNv7xj2dz88035m9/+2vef/+9rLtux+y441dy+OFHpVOnTp/uzWcZj0T8uLn+T5prAGB1sO++++b444/Pgw8+mP/7v//LAw88kBNOOCH7779/qUsDAKCZ2W+/A9KtW7eMHz8uU6e++skvSPLLX47Oj350al555eXsvvvA7LffAamrq8svf3lpvvOdY7Nw4YLFXlNbuzAnnHBsHnzwgXz5yztmr72GZf78+bn88ktyzTVXLTZ+4sQJOeqob2fy5Eey3XZ9cuCBw9Or1+dy553jc9hhB2f69Gmf+r0v05GIHzfXJ554YjbccMNMnTo1v/jFLzTXAMAq78gjj0xlZWVGjRqV6dOnZ4MNNsj++++fww5rede5AQCgWGVlqxxzzAn54Q9/kMsuuySjRl1UOP7ZZ/+WG264Lp07b5Brr70xHTuulyQ5+ujjc8opJ+eRR/6cMWNuzLe+dXiD17311lvZbLPNc8kll6dNmzZJksMPPyoHHDAst9xyc771rW+nsrJVkmTq1Fdz4YXnpUuXLrn88l9l/fXXr1/Pk08+nhNOOCY///n/fmKtn/jel2WQ5hoAWF2Vl5fniCOOyBFHHFHqUgAAWAX07dsvW221df70pwfz178+k2222XapY++6684kyWGHHV4fICZJZWVlvvOdkzJ58iO5887xi4WISXLSSd+vDxCTj84U/trXdsk990zMq6++mh49NkuS3H772CxcuDAnnvj9BgFikvTp86V89as75+GHH8qcOXPStm3bFX7fyxQiaq4BgNXNm2++mfLy8mywwQZJkg8//DBXXHFFXnzxxWy77bY5/PDDU1FRUeIqAQBojk444cSMGHFYLrnk57nmmhuWeI3CJHnhhX8lSbbb7ouLLdtoo42z/vrr580338gHH3yQ9u3b1y9r165dNtxwo8Ves/76nZMkH3zwfv1zzz779yTJ008/leee++dir6murk5tbW1ee+3VbLHF55bjXTZUGCJqrgGA1dXpp5+e4cOH1/c555xzTp544on0798/48aNy+zZs3PSSSeVuEoAAJqjrbb6fPr27ZcHHpiUSZPuT//+A5Y4bs6c2UmS9dZb8o1NOnZcL9OnT8/s2f8dIrZf4viPc7ja2kX1z7333ntJkptvvrGw5rlzPyxc/kkKQ0TNNQCwunr++efzla98JUkyd+7c3HPPPbn55puz5ZZbZr/99suRRx6pzwEAYKmOOeb4PPTQH/PLX16aXXbpu8Qxbdu2S5LMmvV2unXbcLHls2a9nWTpoeGyaNfuo2384Q8P1W+vMRTenXlJzfXFF1+cU045JZdffnnuvvvuRisMAKAxLViwIGuuuWaS5Nlnn03btm2z5ZZbJkl69OiRd955p5TlAQDQzHXrtmH23Xf/vPnmG/ntb29Z4pjNN98iyUenGv+3116bmpkzZ6Zr1880OApxeW255VZJkr/+9ZkVXseyKAwRNdcAwOqqW7dueeyxx5IkDzzwQLbffvv6ZdXV1VljjTVKVRoAAKuIb3/7yLRv3z433HBNPvxw8dOFhwwZmiS57rpfNcjRamtrM3r0xVm0aFH9mBW1334HprKyMhdffFGmTn11seULFizIX//69KfaRvIJpzN/3Fxvv/32mmsAYLVy3HHH5dhjj82GG26Yl156KTfddFP9sj/84Q/ZaqutSlgdAACrgrXWWivf/Oa3c+mlv1ji8q23/nwOOeSbGTPmhgwfvn/69t0tbdqskUcf/UumTPm/fP7z2+SQQ775qWro3n2TnH76mTnvvLNz0EH7Z4cdvpyNNto4CxcuzIwZ0/PXvz6TddZZJ7feevun2k5hiKi5BgBWV/369cvtt9+ef/3rX/nc5z6XDTf8/69Rs+mmm2abbbYpXXEAAKwyDjjgoIwbNzbTpr25xOXHHfed9Oy5RcaOvTX33nt3Fi5cmM98pluOOuqYDB9+aFq1avWpa9hjj0H57Gc3z69/PSZPP/1EHn/80ayxxhpZb71O6dt3t/Trt/un3kZhiKi5BgBWZxtttFE22mijxZ7fbrvtSlANAMCqZ978hbnrok93Om5jmjd/4UpZz6OPLv104Kqqqtxxx8TC1/fvP2Cpd3D+b+PHL/0eJCNGjMyIESOXuGyzzT6bM844e5m2sSIKQ8REcw0AAADAkn04d34+nDu/1GXQBApvrAIAAAAAIEQEAAAAAAoJEQEAAACAQp94TUQAgNXR8OHDU1ZWVjjm5ptvbqJqAACgeSsMETXXAMDqav/99y91CQAAsMooDBE11wDA6mrvvfcudQnNRvsOa6RN6+Z1gsq8+QvzwfsflroMAAD+n8Ju8ZOa6wULFqzUYgAAmsr48eM/ccywYcMavY7moE3rygw5eUKpy2jgrouG5oNSFwEAQL0V2uVcU1OTW265Jddcc03+9Kc/reyaAAAa3amnnpqNN9446623Xurq6hZbXlZW1mJCRAAA+CSFIeJLL72U008/Pc8//3y6d++eUaNG5eWXX85PfvKTdO7cOaecckpT1QkAsFIdeuihue+++9K2bdsMGzYs/fr1S1VVVanLAgCAZqkwRDzvvPPSvXv3jBw5MhMnTswxxxyTNm3aZNSoUdlxxx2bqkYAgJXu9NNPz6mnnpo///nPGT9+fM4///zssssuGTZsWPr06VPq8gAAoFkpDBH/8Y9/5M9//nOqqqryxS9+Mdttt10efPDBbLDBBk1VHwBAo6moqMguu+ySXXbZJbNnz87ll1+eb3zjG7n22muzww47lLo8AABoNgpDxAULFtSf1rPmmmumffv2AkQAYLXywQcf5O6778748eNTXV2dY445Jr169Sp1WQAA0KwUhog1NTX5xS9+Uf943rx5DR4nyXe+853GqQwAoBE9+OCDueOOO/L000+nb9+++f73v5/tttuu1GUBAECzVBgiDhkyJNOnT69/PGjQoAaPAQBWVUcffXQ22WSTDBkyJG3atMnDDz+chx9+uMEYO0sBAIp1aFuZiqrWpS5jqWpr5uf9OQs/9Xp22OELDR6Xl5enffsO2WyzzTJkyLAMHLjnEl/3yisv57bbfpunn34yM2bMyPz587L22mtn8823yC679M2AAXukdeslf37XXferXHnl5UmSW2+9PRtv3P1Tv49PozBEvOCCCwpfvGjRopVaDABAUxk2bFjKysry7rvvlroUlmDRwpp06tS+1GXUW1gzP++8V1PqMgCg2amoap2Xztu31GUs1aanj0tWQoj4scMPPzJJsnDhwkyd+moeeuiPeeqpJ/P88//Kd797coOx11xzVa655qosWrQoW265Vfbcc3DWXHONVFdX5+mnn8r555+T228fm+uvv3mx7dTV1eWuuyakrKwsdXV1mTDhjpxwwokr7X2siMIQcWleeOGFjB8/Pnfddddie+wBAFYFF154YeFyO0tLq7yyqln9QrLp6eOSCBEBoKUbMWJkg8dPPPFYTjjhmNx6669zwAEHpWvXrkmS66+/JldffUU6d94g5503KltuudVi63r44Yfy61+PWeJ2Hntsct58840MGjQkkyf/Jffcc1eOPvq4tGrVauW/qWVUvqwDq6urc8MNN2TvvffOsGHD8uyzz+b0009vzNoAAJrcCy+8kFGjRuVrX/taqUsBAKCZ++IXt8/GG3dPXV1d/vWvfyZJ3nzzzfzqV1emsrIyP/vZJUsMEJNkp52+losvvnSJyyZMuCNJMnToPhkwYI+8++67+eMfH2icN7GMPvHuzA888EDuuOOOPPzww9loo40yaNCgvPnmm/nFL36Rjh07NlWdAACNprq6OnfddVfGjx+f559/Ptttt52dpQAALJO6urokSVlZWZLk7rsnZOHChenff0B69Nis8LVVVVWLPTdr1qz8+c9/ykYbbZytt/582rZtm9/8ZkwmTLg9/fsPWPlvYBkVhohf+cpXUlZWln322SfHH398evfunST5zW9+0yTFAQA0FjtLAQD4tB5//LFMnfpqysrK0qvX55Ikf/vbX5Mkffp8aYXWeffdd2bhwoUZNGhIkqRHj83Ss+cWeeqpJ/Paa1Oz4YYbrZTal1dhiNizZ8889dRT+dvf/paNN9443bp1y1prrdVUtQEANBo7SwEAWF5XX31FkoY3Vqmrq8vXv35wunT56HqIb7/9dpJk/fXXX+7119XV5c4770h5eXn22GNw/fODBu2VF174n9x55/gce+wJK+GdLL/CEPGmm27KG2+8kfHjx+faa6/NT37yk+y0006ZO3duFi5ceXe2AQBoanaWAgCwvK655qokH5263L59+3z+89tmyJCh2WOPQfVj/vv05uXx5JOP5/XXX88OO3y5QQg5YMDAjB7989x991056qijU1nZ9DdY+cS7M3/mM5/Jsccem2OPPTZPPvlkJkyYkPLy8uy1117Zd99984Mf/KAp6gQAWKnsLAUAYHk9+ujTnzimU6dOefXVVzJz5szlXv/48bcn+ejIw/+01lprZ6edvpYHH/xDHnroT+nbt99yr/vTWua7MydJnz59cu655+aRRx7Jj3/847z44ouNVRcAQKP7eGfp/fffn+uvvz6dOnWq31n6P//zP6UuDwCAVdDnP79Nko+OKlwe77zzTh566I9Jkh//+LTssMMXGvz34IN/SPL/B41N7ROPRFyS1q1bZ/DgwRk8ePAnDwYAWAX06dMnffr0yY9+9KP8/ve/z/jx40tdEgAAq6BBg4bmhhuuy4MP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QsQm0Ldv37z44otJkg8//DCHH354TjvttNTW1taPOfTQQ7PVVlvl3XffrX/u0UcfTc+ePTNq1KimLnm1sWDBgvziF7/IgAEDMmjQoOyxxx658MILs2DBgkbf9n/Oe5Hrr78+s2bNavR6VgX33ntvhg0blqFDh2bgwIE5+eSTkyRDhw7NvHnzPtW6l3U+WpK+fftm4MCB2WuvvdK/f/8cffTRefrpp5Mkt99+e/r06ZOhQ4dm6NCh2XvvvTN58uQkSV1dXS655JIMGjQoe+21V/bcc89cd9119et966238oMf/CC77bZbBg8enGHDhuW3v/1tg21/5zvfyZe//OXF/i327NkzRxxxxGLPzZkzpzE+gpJY0t/FffbZJ4899lhGjx6dL3/5yxk2bFgGDBiQfffdNzfeeGOD74uePXtmyJAh9f9Ofv7zn9cve/TRR7P//vtn6NCh2WOPPfKNb3wjixYtSvLRvN1www0ZNGhQ9txzzwwcODA/+tGP8v7779e//k9/+lN69uyZSZMmNajv1FNPzVZbbZU333yzwXNjxoxZqZ8NqyZ9Tunoc1Yt+pymo8cpDT0OrP4qS11AS/LBBx/kyCOPTO/evXP66aenrKyswfLNNtssd999dw4++OAkyR133JHevXuXotTVxmmnnZb58+dn3LhxadeuXRYsWJDbb789NTU1adWqVanLS5LceOON2XHHHdOxY8dSl1JSM2fOzNlnn5077rgjXbp0SV1dXZ5//vkkyYQJE0pc3errkksuyeabb54kuf/++3PkkUfmmmuuSZLsuOOOueSSS5J81Hidc845uffee/O73/0ukydPzu23357WrVunpqYmU6dOTfJRgHDIIYdkn332yYUXXpjy8vK8//77ueeee+q3+e6772by5MnZZJNN8uCDD2b33XdvUNNLL72Uxx9/PF/60pea4iNodoYNG5ZTTjklSfLaa6/l+9//fqZOnZof/ehH9WNuueWWtG3bNh9++GEGDRqUvn37pnfv3jnhhBNy4403ZosttkiSPPfcc/XfNRdffHGeeOKJ3HDDDVlvvfWyaNGiTJo0Ke+99146dOiQJBk3blx22GGH3HbbbenXr1+Dujp16pTRo0fnggsuaIqPgVWQPqfp6XNWHfqcpqfHaX70OLDqEyI2kVmzZuUHP/hBdt1113znO99Z4pi99947EyZMyMEHH5w5c+bk6aefzp577pmampr6MVdffXXuu+++1NbWpnPnzjn33HPTqVOnTJ48ORdffHHmz5+f2trajBw5MoMGDUry0d7/LbfcMn/9618zc+bM7LHHHvne976XJLn00kszceLEtG7dOmVlZbnxxhvrf9Cu6l555ZVMmjQpf/rTn9KuXbskSatWrXLggQemtrY2o0aNyp///OckyVe/+tV873vfS0VFRU499dRUVVXllVdeyWuvvZb+/ftn1113zejRozN9+vR885vfzDe/+c0kH+1tGzRoUJ5++unMnDkz3/zmN3PIIYcsVsvMmTPzk5/8JG+++Wbmz5+fQYMGZeTIkfnlL3+ZmTNn5oQTTkjr1q1z0UUXZaONNsrPf/7zPPHEE1mwYEE233zznHXWWWnbtm3TfXgl8Pbbb6eysjJrr712kqSsrCy9evVK8tFeyaeffjpt27ZN3759M3To0PzlL3/JW2+9lW9/+9v1n/mTTz6Zs88+O0my/fbb5w9/+EOuvPLK+gbyY0ubj5Zu9913z9///vdcc8012WWXXRos++CDD7LWWmslSWbMmJF11lknVVVVSZKqqqpsttlmSZKJEydm7bXXzlFHHVX/2g4dOuTrX/96/eM777wzO++8c3baaaeMGzdusQb7+OOPz89+9rPccsstjfE2VykbbrhhzjvvvOy11175zne+k/bt2zdY/uGHH2bhwoVp37595syZk7lz52a99darX/65z30uSTJnzpxcd911GT9+fP3y8vLyBp/9O++8k8mTJ+fee+/NoEGD8tZbb6VTp071y7/+9a9nzJgx+b//+7/6+YaP6XOanj5n1aLPKS09TvOjx4FVkxCxiXz3u9/N8OHDl9pYJx/9IK2qqsqUKVPy17/+Nf369UtlZWV9cz1hwoRMnTo1v/3tb1NeXp5f//rXufDCC3PRRRflc5/7XH7961+noqIib7/9dvbZZ5/stNNO9V+I06ZNy80335w5c+akX79+2W+//bLOOuvkmmuuyeTJk9OmTZvMnj07bdq0aZLPoyk899xz2Xjjjes/g/9066235l//+lduv/32JMmIESNy6623Zvjw4UmSf//737nhhhtSW1ubvn375oMPPsiYMWPy1ltvZeDAgdlvv/3qm9233347N998c95+++0MGzYsffr0qd9D9rFTTjklxxxzTL74xS+mpqYm3/rWt7LVVlvl6KOPztixYxvsKb388svTvn373HbbbUmSn/70p7nqqqty4oknNtpn1RxsscUW2XrrrbPLLrtk++23zxe+8IUMHTo066yzzmJj582bl1tvvTWvv/56hgwZkr333jutWrXKSSedlJ/97Gfp06dPfv/73+emm25a4raWNh9f+cpXGvttNnuf//zn88ADD2SXXXbJX/7ylwwdOjRz585NdXV1rrzyyiTJnnvumd/85jfZfffd06dPn+ywww4ZNGhQKisr889//jNbb7114TZuv/32nHLKKdl2221z/vnnZ8aMGencuXP98t133z0333xzJk2atNie4tXFx79Qf+yVV15Z6tgePXqkTZs2efnll+s/249/YXn11Vdz0EEHZdNNN02SHHDAAdl9993zpS99KV/4whcyZMiQdOnSJVOmTElVVVX9uCWZMGFCdt1116y33nrp379/xo8fnxEjRtQvX3PNNXPUUUfl5z//eS677LJP8/ZZDelzmp4+Z9Wizyk9PU7T0OPA6k2I2ER23nnn3HPPPTnooIOy/vrrL3XcsGHDcscdd+Rvf/tbfvzjH+e+++6rX/bAAw/kH//4R/bee+8kSW1tbf2e5+rq6vzwhz/Mq6++moqKirz33nt5+eWXs8022yRJBg4cmPLy8rRv3z49evTI1KlTs+GGG2aTTTbJ97///Xz1q1/NLrvsUr++1d3kyZOz99571+9l3GeffTJp0qT65rpfv371yzbZZJPsvPPOKS8vT+fOndOhQ4dMnz49PXr0SJLst99+SZL11lsvu+yySx5//PEGzfXcuXPz+OOPp7q6uv65OXPmZMqUKUts5h544IHMnj27fu5ramoWa9ZXR+Xl5bn88svz4osv5oknnsikSZNyzTXX5K677lps7J577pkk6datW/18LFiwIG3atEmfPn2SJP3791/i0SbLOx8tTV1dXf2f//NUn8ceeywnnXRS7rvvvqy//vq5++6789e//jVPPfVUrrjiitx555255pprGrx+SZ577rm8//772WGHHVJWVpb+/ftnwoQJOfLIIxuMO/nkk3Peeeelb9++K/9NNgP/+Qt18tHPoOXx8ak+77//fr75zW/W/zJyxhln5LDDDsujjz6ahx56KFdeeWXGjRv3ifOSfPSLz2mnnZbkoyPGTj/99AYNdvJRA3/dddflb3/723LVy+pPn9O86HOaH31O6elxmoYeB1ZvQsQmcsQRR+TBBx/MoYcempEjR+b6669PkgwZMqTBBXb32GOPDBo0KOutt14233zzBs11XV1djj766Ppm7j+dddZZ6du3by699NKUlZVlwIABmT9/fv3y/9wbVFFRkdra2lRUVOS3v/1tnn766Tz66KPZZ5998qtf/Wq1aeQ+97nP5dVXX81777232F76urq6xa7V9J+P//vzWtLntyRLWu+iRYtSVlaW2267bZmuT1RXV5czzzwzX/7ylz9x7Opo8803z+abb56DDz44e+65Zx5//PHFxixtPv77s1+S5Z2PlubZZ5/NZz/72cWe33777bNw4cL8+9//ztZbb53Kysr06dMnffr0yb777puvfOUreffdd7Pllltm3LhxS13/bbfdlvfffz+77bZbko9+eWzbtu1iDfaXv/zlrLfeernzzjtX7htcBb300kuZN2/eEvewd+jQITvuuGMeeeSR+iMaNtxww2y44YbZf//96797DjjggMyfPz8vv/xyNtlkk8XW8+yzz2bKlCk5/fTT65+bOXNmnn766XzhC1+of65Vq1Y5/vjjc9FFF6Vr166N8G5ZVelzmp4+Z9WkzykdPU7zo8eBVY+7Mzeho446KnvvvXeuuOKKXH311ZkwYcJid+hq27ZtfvCDH9RfcPY/9e3bN7/+9a/z3nvvJfnoi+njCzJ/8MEH+cxnPpOysrI88sgjefXVVz+xntmzZ6e6ujpf+tKXcsIJJ2TzzTfPv//975XwTpuH7t27p2/fvjnjjDMye/bsJB8d1XDDDTdk++23zx133JEFCxZkwYIFGT9+/Ao3s3fccUeSj46SeOihhxa7UHK7du2y3Xbb5aqrrqp/btq0aXnrrbeSfDTnH3zwQf2yvn375vrrr6+/S9/s2bMzZcqUFaptVTJjxow888wz9Y+nT5+e6urqdOvWbZlev+mmm2bu3Ll56qmnkiSTJk1qcEe2j33SfLRkkyZNym9+85scdthhiy174YUXMmfOnHTr1i3/+Mc/8vrrr9cv++c//5m11lorHTp0yKBBg1JdXZ1f/epX9XuG33///dxwww2pqanJ3Xffndtuuy0PPPBAHnjggTz88MMpKyvLk08+udg2Tz755IwePbrx3vAq4PXXX8/pp5+egw46aIlHUNXU1OSZZ55J9+7dM2fOnDz88MMNPvfXX3893bp1S9u2bfOtb30rZ5xxRv1dUuvq6nLnnXdm6tSpGTduXI444oj6eXnggQdy/PHHL/GXpSFDhuTdd99d4i++tGz6nKalz1m16HNKS4/T/OhxYNXkSMQmNnLkyNTV1eXQQw/NjTfe2OAaGR/7+BSG/zZs2LC8++679RdXrqury0EHHZQtttgiJ598cs4+++xcffXV6dmzZ3r27PmJtcyePTvHH3985s2bl7q6unzuc59b7OK/q7oLL7wwl112Wfbdd9+0atUqixYtys4775wTTzwxb7zxRv0pUzvttFMOOOCAFdpGly5dMnz48Lz11ls56qijlvjZ/+///m8uuOCCDBkyJMlHDfV5552XTp065Rvf+EZ++MMfpk2bNrnoooty5JFH5tJLL81+++2XsrKylJWV5bjjjqs/rWh1tXDhwowePTpvvPFG2rRpk0WLFuW73/1u/UWTP0lVVVUuuuiinHXWWWnTpk122GGHrLfeeotdpDkpno+W5oQTTkhVVVU+/PDD9OjRI1dddVW22WabvPTSS/XXC6qrq0tdXV0uuOCCrLvuuvnnP/+Zs88+O7Nnz05VVVXWWGONXHbZZSkvL8+aa66Zm266KT/96U+z2267pW3btqmsrMzw4cMzadKkbLTRRunevXuDGgYPHpxx48bVn6L1sa222iq9e/du0My3BOPHj8/kyZPz4Ycfpl27dhkyZEgOPfTQBmO+/vWvp7y8PPPnz8+XvvSlHHTQQampqcnNN9+cc889N61bt05tbW2GDBmS/v37J0lOOumkXH/99fXrqqurS58+ffLlL38599xzT37zm9802MbgwYOz1157Ndhzn3x0St6JJ57Y4i/Sz5Lpc5qWPmfVoc9penqc5kePA6u+srpluYgAsER9+/bNFVdcsdhd8SiN2bNn1+/JfPTRR3PqqafmgQceSHm5g64BYHnpc5oXfQ4ApeZIRGC1cf/99+f6669PXV1d/R57jTUAsDrQ5wBQao5EBAAAAAAK2XVFi9O3b9+8+OKLDZ4bMWJEpk6d+omvPfTQQ/Pggw82VmktinkAgJXLd2vzYS4AWB05nRmSXH311aUugZgHAFjZfLc2H+YCgFWdIxEhDfcWH3rooRk1alQOOuig7Lbbbvnf//3fJb7m7rvvzr777pvp06fnrrvuyv77759hw4Zl2LBhmTx5cv24J598MkOGDMmQIUPyk5/8JLvuumv9tl566aUcccQR2XfffbPXXntl3Lhxjf9mmzHzAAArl+/W5sNcALCqcyQiLMG0adNy8803Z86cOenXr1/222+/dO/evX751VdfnUceeSTXX3992rdvn5122imDBw9OWVlZXnrppXzrW9/KQw89lJqampx00kn52c9+lj59+uT3v/99brrppiTJwoUL873vfS8//elP06NHj8yePTv77rtvttlmm/To0aNE77x5MQ8AsHL5bm0+zAUAqxohIizBwIEDU15envbt26dHjx6ZOnVqfVM3evTodO3aNVdddVWqqqqSJK+99lpOPvnkzJgxI5WVlXn77bfz1ltvZdasWWnTpk369OmTJOnfv386dOiQJHnllVcyZcqUnHTSSfXbXbBgQV566SVN3f9jHgBg5fLd2nyYCwBWNUJEWILWrVvX/7mioiK1tbX1j7fZZps88sgjefPNN+sbvZNOOimnnnpq+vXrl0WLFuXzn/985s+fnyQpKytb4jbq6uqyzjrrZMKECY33RlZx5gEAVi7frc2HuQBgVeOaiLCcvvrVr+ass87KkUcemX//+99Jkg8++CDdunVLktx2222pqalJkmy66aaZO3dunnrqqSTJpEmT8v777ydJNtlkk7Rp0ybjx4+vX/eUKVMye/bsJnw3qy7zAAArl+/W5sNcANAcORKRFumwww5LRUVF/eM5c+Ys1+u//OUv54ILLsjRRx+dX/ziFznttNNyzDHHpHPnzvnSl76UtddeO0lSVVWViy66KGeddVbatGmTHXbYIeutt17at2+fysrKXHHFFTn//PNzzTXXZNGiRenYsWMuvvjilfhOmzfzAAArl+/W5sNcALC6Kaurq6srdRGwOps9e3batWuXJHn00Udz6qmn5oEHHkh5uQOBm5J5AICVy3dr82EuAGgKjkSERnb//ffn+uuvT11dXf2eYg1d0zMPALBy+W5tPswFAE3BkYgAAAAAQCG7pwAAAACAQkJEAAAAAKCQEBEAAAAAKCREBFbI6NGj873vfa/UZTSpQw89NGPHjl0p6zr11FPz85//fKWsCwBYefQ4n44eB2D1JUQEluquu+7KPvvsk2233TY77bRTjjjiiDz55JMrbf2vv/56evbsmYULF670de69994Nnq+urs6WW26Zvn37LtN6WuIvEADQUuhx9DgALD8hIrBE1113Xc4///yMHDkyjzzySB588MEMHz48f/jDH0pdWr2ixnzu3Ll58cUX6x9PnDgxn/nMZ5qiLACgGdPjAMCKESICi/nggw9yySWX5Iwzzsjuu++eNddcM61atUrfvn1zyimnLDb+sccey9e+9rUGz/Xt2zd/+ctfkiR///vfs88+++QLX/hCdtxxx1xwwQVJkkMOOSRJ8sUvfjHbbrttnnnmmSTJbbfdlj322CNf/OIXc/jhh+eNN96oX2/Pnj1z8803Z/fdd8/uu+++1PcwdOjQ3HHHHfWPx48fn2HDhjUYM2PGjBx//PHZYYcd0rdv39x4441JkoceeihXXnll7r333my77bbZa6+96l/zxhtv5Otf/3q23XbbfPvb3051dXX9sj/84Q8ZNGhQ+vTpk0MPPTRTpkypX/bcc89l7733zrbbbpvvfve7mT9//lJrBwAahx5HjwPAihMiAot55plnMn/+/PTv33+lrO+8887LN77xjTz99NP5/e9/nz322CNJMmbMmCTJE088kWeeeSbbbrttJk2alCuvvDKXXnppJk+enO222y4nn3xyg/VNmjQpv/3tb3PPPfcsdZt77bVX7rnnntTW1mbKlCmZM2dOPv/5z9cvX7RoUY4++uj07NkzDz30UG644YbccMMN+fOf/5yvfe1rOeqoo7LHHnvkmWeeyZ133ln/uokTJ+aCCy7I5MmTs2DBglx77bVJkpdffjknn3xyfvjDH2by5Mn52te+lpEjR6ampiY1NTU59thjM3To0Dz++OMZOHBg7r///pXy2QIAy06Po8cBYMUJEYHFvPvuu1lnnXVSWVm5UtZXWVmZqVOnprq6Om3bts0222yz1LG33HJLjjzyyPTo0SOVlZUZOXJk/vWvfzXYU3/kkUdm7bXXTps2bZa6ng022CCbbLJJ/vKXv+SOO+5YbA/9s88+m+rq6hx33HGpqqrKhhtumAMOOKCwaU+SffbZJ5tssknatGmTgQMH5l//+leS5J577snOO++cr3zlK2nVqlUOP/zwzJs3L88880z+9re/ZcGCBfnmN7+ZVq1aZeDAgdlqq60++YMDAFYqPc7S6XEA+CQr59sTWK2svfbaeeedd7Jw4cKV0mSfd955ueSSS7LHHnukW7duOe6447Lrrrsuceybb76Z888/P6NGjap/rq6uLjNmzKi/3k+XLl2WabvDhg3LHXfckWeeeSZjxozJq6++Wr/sjTfeyMyZM9OnT5/652praxs8XpJOnTrV/3mNNdbI3LlzkyQzZ85M165d65eVl5enS5cumTFjRioqKtK5c+eUlZXVL//PsQBA09DjLJ0eB4BPIkQEFrPtttumdevWmTRpUgYOHPiJ49dYY43Mmzev/nFtbW2D6+h07949P/vZz7Jo0aLcf//9OeGEE/LYY481aDg/1qVLl4wcObLBNXr+25JetyS77757zjnnnPTu3Tuf+cxnGjTYXbp0Sbdu3ZZ6ys2ybuNj66+/foOLnNfV1WXatGn1jfWMGTNSV1dXv94333wzG2644XJtAwD4dPQ4ehwAVpzTmYHFtG/fPieccELOOeecTJo0KR9++GEWLFiQP/3pT/mf//mfxcZvsskmmT9/fv74xz9mwYIF+eUvf5mampr65RMmTEh1dXXKy8vToUOHJElFRUXWXXfdlJeX57XXXqsf+/Wvfz1XXXVV/v3vfyf56ALo99577wq9jzXXXDM33HBDzjvvvMWWbb311mnXrl2uuuqqzJs3L7W1tXnxxRfz97//PUnSsWPHvPHGG1m0aNEybWuPPfbIn/70pwbXEaqqqsq2226bbbbZJpWVlbnxxhuzcOHC3H///Xn22WdX6D0BACtOj6PHAWDFORIRWKLDDjssHTt2zOWXX57vfe97adu2bXr37p2RI0cuNrZ9+/Y588wz86Mf/Si1tbU54ogjssEGG9Qv//Of/5wLL7ww8+bNS9euXfPzn/88rVu3TpKMHDkyBx10UBYuXJhf/epX6d+/f+bMmZOTTjopb7zxRtq3b58dd9yx/kLly2tp1+WpqKjIL3/5y4waNSq77bZbampqsskmm+S73/1ukmTgwIG58847s/3226dbt24N7oK4JJtuuml++tOf5txzz82MGTPSq1evXHHFFamqqkqSjB49Oj/+8Y9z8cUXZ+edd15pF3QHAJaPHkePA8CKKaurq6srdREAAAAAQPPldGYAAAAAoJAQEQAAAAAoJEQEAAAAAAoJEQEAAACAQkJEAAAAAKCQEBEAAAAAKCREBAAAAAAKCREBAAAAgEJCRAAAAACg0P8Hi8uURD3kOiwAAAAASUVORK5CYII=\n",
"text/plain": [
"<Figure size 1152x576 with 2 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plot_scores(pd.concat([buildings_raw_results_long, buildings_pca_results_long]))"
]
},
{
"cell_type": "code",
"execution_count": 77,
"id": "c9b9b6b9",
"metadata": {},
"outputs": [],
"source": [
"umap_buildings = umap.UMAP(n_neighbors=8, n_components=4, min_dist=1e-8, random_state=42, n_epochs=1000).fit_transform(raw_buildings)"
]
},
{
"cell_type": "code",
"execution_count": 78,
"id": "baf445f7",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"CPU times: user 5.68 s, sys: 201 ms, total: 5.88 s\n",
"Wall time: 1.19 s\n"
]
}
],
"source": [
"%%time\n",
"km_umap_labels = cluster.KMeans(n_clusters=40).fit_predict(umap_buildings)\n",
"cl_umap_labels = cluster.AgglomerativeClustering(n_clusters=40, linkage=\"complete\").fit_predict(umap_buildings)\n",
"sl_umap_labels = cluster.AgglomerativeClustering(n_clusters=120, linkage=\"single\").fit_predict(umap_buildings)\n",
"db_umap_labels = cluster.DBSCAN(eps=0.25).fit_predict(umap_buildings)\n",
"hd_umap_labels = hdbscan.HDBSCAN(min_samples=3, min_cluster_size=20).fit_predict(umap_buildings)"
]
},
{
"cell_type": "code",
"execution_count": 79,
"id": "d43de324",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"ARI: 0.2392\n",
"AMI: 0.5828\n",
"Silhouette: -0.0042\n",
"ARI: 0.2456\n",
"AMI: 0.5826\n",
"Silhouette: -0.0173\n",
"ARI: 0.3156\n",
"AMI: 0.6584\n",
"Silhouette: 0.0339\n",
"Pct clustered: 99.38%\n",
"ARI: 0.3199\n",
"AMI: 0.6612\n",
"Silhouette: 0.0353\n",
"Pct clustered: 99.21%\n",
"ARI: 0.3348\n",
"AMI: 0.6816\n",
"Silhouette: 0.0505\n",
"Pct clustered: 91.14%\n"
]
}
],
"source": [
"buildings_umap_results = pd.DataFrame(\n",
" [\n",
" eval_clusters(km_umap_labels, buildings_target, raw_buildings, cluster_method=\"K-Means\"),\n",
" eval_clusters(cl_umap_labels, buildings_target, raw_buildings, cluster_method=\"Complete\\nLinkage\"),\n",
" eval_clusters(sl_umap_labels, buildings_target, raw_buildings, cluster_method=\"Single\\nLinkage\"),\n",
" eval_clusters(db_umap_labels, buildings_target, raw_buildings, cluster_method=\"DBSCAN\"),\n",
" eval_clusters(hd_umap_labels, buildings_target, raw_buildings, cluster_method=\"HDBSCAN\"),\n",
" ]\n",
")\n",
"buildings_umap_results_long = buildings_umap_results.melt([\"Method\", \"Pct Clustered\"], var_name=\"Score Type\", value_name=\"Score\")\n",
"buildings_umap_results_long[\"Dim Reduction\"] = \"UMAP\""
]
},
{
"cell_type": "code",
"execution_count": 80,
"id": "9db15559",
"metadata": {
"scrolled": false
},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAABREAAAI0CAYAAACKxG4UAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAAsTAAALEwEAmpwYAABZ3klEQVR4nO3deZiVdf0//ucsDCiLKCJCLigmEmqalGZWRigoILgnaWWKoqmlVmqWW7nw6WMumGvmkpaKyI5lpEkaai6VZmofN1Q2hVAWYYZhfn/4dX4RcAvKmRmGx+O6vC7Pud/nfb/OvHXOa57nXsrq6urqAgAAAACwCuWNXQAAAAAA0LQJEQEAAACAQkJEAAAAAKCQEBEAAAAAKCREBAAAAAAKCREBAAAAgEJCRAAAAACgkBARaLKuueaadO/ePd27d89LL7200jH33HNP/Zj3/9lxxx3zpS99Kaeffnqee+65lb5uxIgR6d69e0aMGFHKtwAAsJw17W+OPPLIVc71+uuvZ4cddqgf+99W9TwAfBhCRKBJqqury913352ysrIkyciRIwvH77DDDjnppJNy0kkn5atf/Wo23XTTTJgwIYceemieeOKJhigZAKDQmvY3lZWV+ctf/rLKsHHkyJGpq6tLZWXlWq8VAP6bEBFokh566KG8/vrrOfDAA7Pppptm9OjRqa6uXuX4Hj165OSTT87JJ5+cs846KyNHjszhhx+e6urqXH755Q1XOADAKqxpf7P33nsnWXnYWFtbm3vuuSc77bRTOnToUKqSAaCeEBFokt5vlg899NAMHDgw//73vzN58uQ1muOQQw5JkjzzzDNrvT4AgDW1pv3Ndtttl1133TVjxoxJTU3Nctv++Mc/Zvbs2TnssMNKWjMAvE+ICDQ5b731Vu6///507do1n/rUp3LQQQclSe68884PNZ9TfACAxvZh+5tDDz00c+fOzR/+8Iflnh85cmQ23HDD7L///iWrGQD+kxARaHLuueee1NTU1DfX22+/fXr27JlHH300r7766mrPc9dddyVJdtttt5LUCQCwuj5sf7P//vunTZs2y53SPGvWrEyZMiX9+/dPmzZtSl47ACRCRKCJqaury8iRI1NeXp7BgwfXP3/ggQfWb1uZf/7znxkxYkRGjBiRiy++OAcffHBGjhyZzTbbLGeccUYDVQ8AsKIP298kyQYb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8uyzz+amm25KkgwYMCA//vGPM3fu3GyyySb1426++eZ885vfTMeOHZMkbdu2bYjyAOAjqaqqyEW/fKRk8//gm3uUbG4+Gj0OAADriwY5nXnGjBnp1KlTKireO0qjoqIim222WWbMmLHcuBdffDGvvfZavvrVr+bAAw/M1Vdfnbq6uoYoEQBgjelxAABYXzTY6cyro7a2Ns8//3xuuummVFdX59hjj02XLl0yePDg1Z6jQ4c2pSsQAFahZasWJZ2/Y0dHrq3L1kaPk+hzgDVQVvpdlPqzqXWbViWdP0k22LDEl5ZoButQ6h4nSVpWlTaaKC8v/fFTejXWBw0SInbu3DmzZs1KbW1tKioqUltbm9mzZ6dz587LjevSpUv69euXqqqqVFVV5ctf/nL+/ve/r1GDPWfOgixb5pt9ABpOx45ts2RxTUn38eab80s6/7qsvLys0cK1huxxEn0OsHo6dmybNMCvilJ+NnXs2DYLFywu2fzve3dRdWl30AzWodQ9TpIsqV5a0vmXLVtW0vmT0qxDY/U4S5YsyZw5c/LOO/NTW1vb4Pun4VVUVKRdu7bp0KFDWrZsucpxDRIidujQIT169MiECRMyaNCgTJgwIT169FjuWkHJe9cRevDBBzNo0KAsXbo0jzzySPr27dsQJQIArDE9DgDQnCxZsiSvvPJKWrVqkw4dOqWiojJlZQ1wSC2Npq6uLrW1S7No0cK88sor6dq16yqDxAa5JmKSnHfeebntttvSt2/f3HbbbTn//POTJEOHDs3TTz+dJOnfv386dOiQ/fffP4MHD852222XQw45pKFKBABYY3ocAKC5mDNnTlq1apN27dqnsrKFAHE9UFZWlsrKFmnXrn1atWqTOXPmrHJsg10TsVu3bhk5cuQKz99www31/15eXp6zzjorZ511VkOVBQDwkehxAIDm4p135qdDh06NXQaNZMMNW2fOnFnp0mXl2xvsSEQAAAAAmq73rvPcpO7BSwOqqKgsvA6m/zIAgPXeiy++mN/+9rd56623cu655+bFF19MTU1Ndthhh8YuDQCgQTmFef31QWu/2kcivvjii/n5z39ef52fF198Mc8999xHqw4AoJHde++9OfLIIzNr1qyMHTs2SbJo0aJccskljVwZAAA0Hat1JOK9996bCy64IPvss08mTJiQc889N4sWLcqll16am2++ucQlAgCUzpVXXplf/vKX6dGjR+69994kyQ477ODL0nVM2/Yt06pFVcnmX1xTnfnzlpRs/uai1OuQWAsAaCyrFSJqrgGA5mru3Ln1py2/fwpHWVmZU3nWMa1aVOWwO08o2fx3HX5N5kdw9UFKvQ6JtQCAxrJaIaLmGgBornr27JmxY8dm8ODB9c9NnDgxO++8c+MVBQDQBG2wYcu0atl0b6+xeMnSvLvIF02lslorr7kGAJqrs88+O8ccc0zuvvvuLFq0KMccc0xefvnl/PKXv2zs0gAAmpRWLSsz8PSxjV3GKo2/dNBaCRH32ONTSZLNN988d945Oi1btlxhzODB/TNz5ow89NBjqaxsusHq2rRa71JzDQA0R3V1damqqsqECRMyZcqU7L333uncuXP23nvvtG7durHLAwCgEc2cOTN33vnrfO1rRzd2KU3CB4aImmsAaFx1tUvTsWPbku6jtqY6c9fDGxWUlZVl4MCBefLJJ7P//vs3djkAADQR7dq1S1KWW265KQccMDjt22/c2CU1ug8METXXANC4yioq8+qvLijpPrY+6pxkPb1RQY8ePfLyyy+nW7dujV0KAABNRMuWrfLVrx6Vyy+/NL/4xfX57nfPWO3XTp58X+6++87861//ytKlNdliiy2z7779csQRR6aqqmq5sYMH90+S3HHH3bnhhmszefLvM3funHTq1CkHHHBQjjrq6yu9J8kzzzyd22+/NX/721/zzjtvZ5NNOmTPPT+XY445Ph07dvxob34VVut0Zs01ANBcfeYzn8nQoUNz4IEHZvPNN1+uSTvkkEMasTIAABrTIYcclrvvvjNjxozKYYd9JVtttfUHvuaaa0bklltuSvv27bPvvv2y4YYbZOrUP+eaa67KI49MzYgRV6eyssVyr6mtXZpTTvlW3nrrzXz2s3umoqIiU6b8MVdffWWqq5fk2GOPX278hAljc/HFP0mLFi3y+c9/MZtt1imvv/5axo0bk4cempJf/OKWbL5557X6s0hWM0TUXAMAzdWTTz6Zj33sY3nssceWe76srEyfAwCwHqusbJETTzwlP/jB9/Pzn1+Z4cMvLRz/9NN/yy233JROnTbPL395azp02DRJcsIJJ+eMM07Pww//Kbfddmu+8Y1jlnvdm2++me222z5XXnl1WrVqlSQ55pjjc9hhg3PHHbfnG9/4Zn3wOG3aq7nkkgvTuXPnXH31L7LZZpvVz/P444/llFNOzGWX/e8H1vphrFaIqLkGAJqrX/3qV41dAgAATVTv3n2y004758EHH8hf//pUdtll11WOHT9+XJLk6KOPqQ8Qk6SysjLf/vZpmTr14YwbN2aFEDFJTjvte/UBYpJssskm+cIX9s6kSRPy6quvplu37ZIk99wzMkuXLs2pp35vuQAxSXr1+kw+//kv5qGHpmThwoVr/V4mqxUiaq4BgObs7bffzgMPPJBZs2alU6dO+dKXvpSNNtqoscsCAKAJOOWUUzN06NG58srLcuONt6z0GoVJ8vzz/0yS7Lbbp1fYttVWW2ezzTbL9OlvZP78+Wnb9v+/cWKbNm2y5ZZbrfCazTbrlCSZP/+d+ueefvrvSZInn3wizz77jxVeM3fu3NTW1ua1117NDjt8Yg3e5QdbrRAx0VwDAM3TU089leOPPz7bbrttunTpkgceeCAXXXRRrrvuuuy666q/aQYAYP2w006fTO/efXL//ZMzefJ92Wefvisdt3DhgiTJppuu/MYmHTpsmpkzZ2bBgv8OEduudHxFRUWSpLZ2Wf1zb7/9dpLk9ttvLax50aJ3C7d/GKsVImquAYDm6qKLLsq5556b/v371z83adKk/OQnP8moUaMasTIAAJqKE088OVOm/DHXXHNV9t6790rHtG7dJkkyZ85b2WKLLVfYPmfOW0lWHRqujjZt3tvHH/4wpX5/DaV8dQa931zfcccd+dnPfpY77rgj5513Xn7yk5+Uuj4AgJJ65ZVXst9++y33XN++fTNt2rRGqggAgKZmiy22zMEHH5rp09/IXXfdsdIx22+/Q5L3TjX+b6+9Ni2zZ89Oly4fW+4oxDW14447JUn++tenPvQcH9ZqhYiaawCgudp6660zceLE5Z777W9/my23XPHbYwAA1l/f/OZxadu2bW655ca8++6KpwsPHDgoSXLTTb/Iv//97/rna2trM2LE5Vm2bFn9mA/rkEMOT2VlZS6//NJMm/bqCttramry178++ZH2sSqrdTrz+831wIED65/TXAMAzcEPfvCDDBs2LL/61a/SpUuXvPHGG3n11Vdz7bXXNnZpAAA0IRtttFG+/vVv5qqrrljp9p13/mSOPPLrue22WzJkyKHp3fvLadVqgzzyyJ/z4ov/l09+cpcceeTXP1INXbtuk7PPPjcXXnh+jjji0Oyxx2ez1VZbZ+nSpZk1a2b++tensvHGG+fOO+/5SPtZmdUKETXXAEBz9alPfSq///3v88c//jGzZ8/Ol770pXzxi19M+/btG7s0AIAmZfGSpRl/6Uc7kq6UFi9ZWvJ9HHbYERk1amRmzJi+0u0nnfTtdO++Q0aOvDP33jsxS5cuzcc+tkWOP/7EDBlyVFq0aPGRa9hvv/75+Me3z69/fVuefPIveeyxR7LBBhtk0007pnfvL6dPn30/8j5WZrVCRM01ANBczZo1K61atcqgQf9/Q/z2229n1qxZ6dSpUyNWBgDQtLy7aEneXbSkscsouUceWfXpwFVVVRk9ekLh6/fZp+8q7+D838aMmbjKbUOHDsvQocNWum277T6ec845f7X2sbas1jURZ82alSQZNGhQhg4dmkGDBqWsrKz+eQCAddWJJ56YmTNnLvfczJkzc9JJJzVSRQAA0PSsVoiouQYAmqtXXnkl3bt3X+657t2756WXXmqkigAAoOlZ7bsza64BgOZok002yauvLn9nu1dffdVlWwAA4D+sVoiouQYAmquDDz44J598ch544IH83//9X+6///6ccsopOfTQQxu7NAAAaDJW68Yq7zfXp556arbccstMmzYtV1xxheYaAFjnHXfccamsrMzw4cMzc+bMbL755jn00ENz9NFHN3ZpAADQZKxWiKi5BgCaq/Ly8hx77LE59thjG7sUAABoslYrRNRcAwDNzfTp01NeXp7NN988SfLuu+/m2muvzQsvvJBdd901xxxzTCoqKhq5SgAAaBoKr4k4ffr05e7K/O677+ayyy7LCSeckOuvvz61tbUlLxAAoBTOPvvsPP300/WPL7jggkycODFdu3bNqFGjcsUVVzRidQAA0LQUhoiaawCguXruuefyuc99LkmyaNGiTJo0KZdffnnOOOOMXH311Zk4cWIjVwgAAE1HYYiouQYAmquamppsuOGGSZKnn346rVu3zo477pgk6datW/797383ZnkAANCkFIaImmsAoLnaYost8uijjyZJ7r///uy+++712+bOnZsNNtigsUoDAIAmp/DGKu8317vvvrvmGgBoVk466aR861vfypZbbpmXXnopv/rVr+q3/eEPf8hOO+3UiNUBAEDTUhgiaq4BgOaqT58+ueeee/LPf/4zn/jEJ7LlllvWb9t2222zyy67NF5xAADQxBSGiJprAKA522qrrbLVVlut8Pxuu+3WCNUAADRt7VpXpqKqZWOXsUq11UvyzsKljV1Gs1UYIiaaawAAAACSiqqWeenCgxu7jFXa9uxRyVoIEffY41PLPS4vL0/btu2y3XbbZeDAwenXb/+Vvu6VV17O3XfflSeffDyzZs3KkiWL0759+2y//Q7Ze+/e6dt3v7RsufIQ9qabfpHrrrs6SXLnnfdk6627fuT3sbZ9YIgIAAAAAOubY445LkmydOnSTJv2aqZM+WOeeOLxPPfcP/Od75y+3Ngbb7w+N954fZYtW5Ydd9wp++8/IBtuuEHmzp2bJ598IhdddEHuuWdkbr759hX2U1dXl/Hjx6asrCx1dXUZO3Z0Tjnl1AZ5j2tCiAgAAAAA/2Xo0GHLPf7LXx7NKaecmDvv/HUOO+yIdOnSJUly88035oYbrk2nTpvnwguHZ8cdV7yHyEMPTcmvf33bSvfz6KNTM336G+nff2CmTv1zJk0anxNOOCktWrRY+2/qIyhv7AIAAAAAoKn79Kd3z9Zbd01dXV3++c9/JEmmT5+eX/ziulRWVuZnP7typQFikuy11xdy+eVXrXTb2LGjkySDBh2Uvn33y7x58/LHP95fmjfxETgSEQBYLw0ZMiRlZWWFY26/fcXTTQAAWH/V1dUlSX0fOXHi2CxdujT77NM33bptV/jaqqqqFZ6bM2dO/vSnB7PVVltn550/mdatW+c3v7ktY8fek3326bv238BHUBgiaq4BgObq0EMPbewSAABYhzz22KOZNu3VlJWVpUePTyRJ/va3vyZJevX6zIeac+LEcVm6dGn69x+YJOnWbbt0775Dnnji8bz22rRsueWKNztuLIUhouYaAGiuDjzwwMYuoclo226DtGpZuhNUFi9ZmvnvvFuy+QEASuGGG65NsvyNVerq6vKVr3w1nTu/dz3Et956K0my2WabrfH8dXV1GTdudMrLy7PffgPqn+/f/4A8//z/ZNy4MfnWt05ZC+9k7SjsFj+oua6pqVmrxQAANJQxY8Z84JjBgweXvI6moFXLygw8fWzJ5h9/6aDML9nsAAClceON1yd579Tltm3b5pOf3DUDBw7Kfvv1rx/z36c3r4nHH38sr7/+evbY47PLhZB9+/bLiBGXZeLE8Tn++BNSWdk0brDyob5yrq6uzh133JEbb7wxDz744NquCQCg5M4888xsvfXW2XTTTeubv/9UVla23oSIAACs6JFHnvzAMR07dsyrr76S2bNnr/H8Y8bck+S9Iw//00Ybtc9ee30hDzzwh0yZ8mB69+6zxnOXQmGI+NJLL+Xss8/Oc889l65du2b48OF5+eWX85Of/CSdOnXKGWec0VB1AgCsVUcddVR+97vfpXXr1hk8eHD69Omz0otdAwDAqnzyk7vk8cf/kscffywHHDB4tV/373//O1Om/DFJ8qMfnZUf/eislY4bM+aedSNEvPDCC9O1a9cMGzYsEyZMyIknnphWrVpl+PDh2XPPPRuqRgCAte7ss8/OmWeemT/96U8ZM2ZMLrroouy9994ZPHhwevXq1djlAQCwDujff1BuueWmPPDAH/Lyyy9lm222XeXY6urq+i+tJ00an5qamuywQ498/OPdVzr+oYcezF/+8mimT38jXbp8rCT1r4nCEPGZZ57Jn/70p1RVVeXTn/50dttttzzwwAPZfPPNG6o+AICSqaioyN5775299947CxYsyNVXX52vfe1r+eUvf5k99tijscsDAKCJ69KlS4499vhce+3Pc9ppp+Sii/6n/s7N/2nq1Idz22235Oc/f+86i+PGjUmSfO97Z6Vnzx1XOvd1112dm276RcaOHZ0TTjipZO9hdRWGiDU1NfUJ6YYbbpi2bdsKEAGAZmX+/PmZOHFixowZk7lz5+bEE09Mjx49GrssAADWEd/4xjGpra3NjTden6OPPjI77fTJ9OjxiWywwQaZO3du/vrXJ/Paa9Pqw8Unnng8r776Srp1226VAWKSDBw4ODfffGMmThyXoUOHpbLyQ93aZK0p3Ht1dXWuuOKK+seLFy9e7nGSfPvb3y5NZQAAJfTAAw9k9OjRefLJJ9O7d+9873vfy2677dbYZQEANFm11Uuy7dmjGruMVaqtXtJo+z7mmOPSu3efjBo1Mk8++XgmTBiX6uol2Wij9vn4x7fPUUd9I/367Z8kGTt2dJLkgAMOLJyzS5cu+fSnd89jjz2Shx6akr337l3y91GkMEQcOHBgZs6cWf+4f//+yz0GAFhXnXDCCdlmm20ycODAtGrVKg899FAeeuih5cb4shQA4P/3zsKlycKljV1Gya3OXZlXZpttts13v/vBNyG+4IILc8EFF67WnFdeefWHqqUUCkPEiy++uPDFy5YtW6vFAAA0lMGDB6esrCzz5s1r7FKavWVLq9OxY9vGLgMAgI/gQ51M/fzzz2fMmDEZP378Ct/YAwCsCy655JLC7b4sXXvKK6vy0oUHl3QfTfnUKgCA5mC1Q8S5c+dm/PjxGTNmTJ577rnstttuOfvss0tZGwBAg/NlKQAArOgD7858//33Z/To0XnooYey1VZbpX///pk+fXquuOKKdOjQoaHqBAAoGV+WAgBAscIQ8XOf+1zKyspy0EEH5eSTT07Pnj2TJL/5zW8apDgAgFLxZSkAAKy+whCxe/fueeKJJ/K3v/0tW2+9dbbYYotstNFGDVUbAEDJ+LIUAABWX3nRxl/96lf5/e9/n8997nP55S9/mc997nMZNmxYFi1alKVLm/8tvQGA5qt79+6ZP39+/va3v+Xpp5/O22+/3dglAQBAk1UYIibJxz72sXzrW9/Kfffdl5tvvjkdO3ZMeXl5DjjggPzP//xPQ9QIALDW+bIUAABW3weGiP+pV69e+fGPf5yHH344P/rRj/LCCy+Uqi4AgJLzZSkAAKyewmsirkrLli0zYMCADBgwYG3XAwDQKHr16pVevXrlhz/8YX7/+99nzJgxjV0SAAA0GR8qRAQAaK58WQoAACtao9OZAQAAAID1jxARAAAAACjkdGYAAAAAPtCGbVqkZYuqxi5jlZbUVGfRgprGLqPZEiICAAAA8IFatqjKYXee0NhlrNJdh1+TRfloIeITTzyeb33ruOy662655pobVjpm+vTpOeigAdl8884ZM2ZikmTChHH5yU/OS5Lsuuuncs01v1jlaw8+eGDq6uqSJI888uQqa7nppl/kuuuuTpLceec92Xrrrisd95/7fl+LFi2y6aYds+uuu+Woo76ebbbZdpX7WV1OZwYAAACAtaCiojJPPfVkXn31lZVuHzdudOrq6lJRUXxcX11dXcaPH5uysrIkydixoz9w3x//+PY55pjjcswxx+Xggw9N27ZtM2nS+HzjG0fmmWf+vsbv5b8JEQEAAABgLdhrr88neS8s/G+1tbWZOHFcPvGJntlkk00K53n00amZPv2N7L//gGyySYdMmjQ+NTXFR1l+/OPdM3TosAwdOizf+c53c8stv87++w/MkiWLc/XVV334N/X/CBEBAAAAYC3YZptts9NOO2fSpAlZunT50O/hhx/Km2++mQMOOPAD53n/yMNBgw5K3777Zd68efnjH+9fo1rKyspy8MGHJkmeffaZNXrtyggRAQAAAGAtGTTowPz73//OlCkPLvf82LH3ZMMNN8w++/QtfP2cOXPypz89mK222jo77/zJDBhwQP3r19T71158/7Toj0KICAAAAABrSZ8++6Z16zbLhX6zZ8/OI4/8OX369E3r1q0LXz9x4rgsXbo0/fsPTJJ067ZdunffIU888Xhee23aatdRV1eXe+4ZmSTp2XPHD/FOlufuzAAAAACwlrRqtUH23bdfxowZlenTp6dLly6ZMGFsamtrM2hQ8anMdXV1GTdudMrLy7PffgPqn+/f/4A8//z/ZNy4MfnWt05Z6Wv/9a/nc8MN1yZJFi5ckCeffCIvvPB8WrZslWHDvvWR35cjEQEAAABgLRo06MD/d4flMVm2bFnGjRuT7bb7+AceEfj444/l9ddfz2c+s3s222yz+uf79u2XFi1aZOLE8Stca/F9//rXC7nxxutz443X5+6778o777yd/fbrn5tvvi077rjzR35PjkQEAAAAgCTl5e9dO7Cubtkqx7y/rbx81cfm7bBDj3TvvkMmTBiXHXfcKTNnzsjpp3//A/c/Zsx7p0D373/Acs9vtFH77LXXF/LAA3/IlCkPpnfvPiu8dv/9B+acc87/wH18WEJEgHVY+/YbpkWLipLNX1NTm3nzFpVsfgAAgKakTZu2SZK33357lWPmzZu33NhVGTz4oAwfflGGD78oLVu2Sr9+/QvHv3czlj8mSX70o7Pyox+dtdJxY8bcs9IQsdSEiADrsBYtKnL7xH+UbP6v9u9ZsrkBAACamq222jpVVVWZNm1a3n57XjbaqP0KY5555u9Jko9//OOFc+2773658srLMnv2rOy//4C0bVscOk6aND41NTXZYYce+fjHu690zEMPPZi//OXRTJ/+Rrp0+djqvam1RIgIAABNQNt2G6RVy9K258tqqlPeoqqk+wCAdVnLli3Tp0/fTJo0PiNGXJ6zzz43ZWVl9dtnz56V2267NcmKpxz/t9atW+eyy67K22/Pyw479PjAfY8bNyZJ8r3vnbXKayded93VuemmX2Ts2NE54YSTVvNdrR1CRAAAaAJatazMwNPHlnQf4y8dlJcuPLhk82979qiSzQ0ADeXb3z41//znPzJhwrg8/fTf85nP7JHWrVtn5swZmTLlwSxatDBHHfWNfOpTu33gXLvssutq7fOJJx7Pq6++km7dtiu8+crAgYNz8803ZuLEcRk6dFgqKxsu2hMiAgAAAPCBltRU567Dr2nsMlZpSU31Wplno43a58Ybb81dd/0mDz74QCZOHJ8lS5Zko402yq67fioHH3xo9txzr7Wyr/eNHTs6SXLAAQcWjuvSpUs+/end89hjj+Shh6Zk7717r9U6iggRAQAAAPhAixbUZFFqGruMBrHhhhvmG984Jt/4xjGrNX7AgAMyYEDx6c3/afz43y73+IILLswFF1y4Wq+98sqrP9K+P6xV34saAAAAACBCRAAAAADgAwgRAQAAAIBCQkQAAAAAoFCDhYgvv/xyDj/88PTt2zeHH354XnnllVWOfemll/LJT34yw4cPb6jyAAA+FD0OAADrgwYLEc8999wMGTIkv/vd7zJkyJCcc845Kx1XW1ubc889N3369Gmo0gAAPjQ9DgAA64MGCRHnzJmTZ599NgMGDEiSDBgwIM8++2zmzp27wtjrr78+e++9d7p27doQpQEAfGh6HACguamrq2vsEmgkH7T2lQ1RxIwZM9KpU6dUVFQkSSoqKrLZZptlxowZ2WSTTerHPffcc3nooYdy66235uqrr/5Q++rQoc1aqRlgXdG6TauSzt+xY9uSzt9ctGzVorTzV5X+I9tar7mG7HESfU5j8/9I02EtVkNZ6XdR6nUodY+TJBtsWFXaHTSDdSh1j5OUvs8pLy/98VPN5fdSRUVFamuXprKy9OtO01Nbu7S+r12ZBgkRV0dNTU1+9KMf5eKLLy4s+IPMmbMgy5ZJzYH1Q8eObbNwweKSzV9XuzRlFaX9qKitqcnceaV7Dw2hY8e2WbK4pqT7WFK9tKTzJ8mbb84v+T5Koby8rEmHa2urx0lK1+c0lz98Sq3U/49Yh9W3rv6+aigdO7ZNGuBPolKuQ6l7nPe9u6i6tDtoButQ6h4nKX2fs2zZspLOn5RmHRqjx2nXrm0WLVqYdu3aN+h+aRreW/tV9yMNEiJ27tw5s2bNSm1t7f9LtWsze/bsdO7cuX7Mm2++mWnTpuW4445Lkrzzzjupq6vLggUL8uMf/7ghygTgv5RVVOa1sdeVdB9bDjo+ybodIrL+0uMAAM1Jhw4d6m8St+GGrVNRUZmysgY4pJZGU1dXl9rapVm0aGEWL16QzTfvusqxDRIidujQIT169MiECRMyaNCgTJgwIT169FjuNJ8uXbrk0UcfrX88YsSILFq0KGeccUZDlAgAsMb0OABAc9KyZct07do1c+bMyZw5731RSvNXUVGRdu3aZvPNu6Zly5arHNdgpzOfd955OfPMM3P11VenXbt2GT58eJJk6NChOeWUU7LTTjs1VCkAAGuNHgcAaE5atmyZLl26pEuXxq6EpqbBQsRu3bpl5MiRKzx/ww03rHT8ySefXOqSAAA+Mj0OAADrg9LfoggAAAAAWKcJEQEAAACAQkJEAAAAAKCQEBEAAAAAKCREBAAAAAAKCREBAAAAgEJCRAAAAACgkBARAAAAACgkRAQAAAAACgkRAQAAAIBCQkQAAAAAoJAQEQAAAAAoJEQEAAAAAAoJEQEAAACAQkJEAAAAAKCQEBEAAAAAKCREBAAAAAAKCREBAAAAgEJCRAAAAACgkBARAAAAACgkRAQAAAAACgkRAQAAAIBCQkQAAAAAoJAQEQAAAAAoVNnYBQAAja+mtiYdO7Yt2fxLaqrzzrwlJZsfAAAoLSEiAJAWFS1yzOjvlWz+Gw/8aRIhIgAArKuczgwAAAAAFBIiAgAAAACFhIgAAAAAQCEhIgAAAABQSIgIAAAAABRyd2YAGlV1bU06dmxbsvkX11Rn/jx3BQYAAPgohIgANKqqihY5/M4TSzb/nYdfnfkRIgIAAHwUQkRgvdW2fcu0alFVsvkdAQcAAEBzIUQE1lutWlQ5Ag4AAABWgxurAAAAAACFhIgAAAAAQCEhIgAAAABQSIgIAAAAABQSIgIAAAAAhYSIAAAAAEAhISIAAAAAUEiICAAAAAAUEiICAAAAAIWEiAAAAABAISEiAAAAAFBIiAgAAAAAFBIiAgAAAACFhIgAAAAAQCEhIgAAAABQSIgIAAAAABQSIgIAAAAAhYSIAAAAAEAhISIAAAAAUEiICAAAAAAUEiICAAAAAIWEiAAAAABAISEiAAAAAFBIiAgAAAAAFBIiAgAAAACFhIgAAAAAQCEhIgAAAABQSIgIAAAAABQSIgIAAAAAhYSIAAAAAEChysYuANZHbdu3TKsWVSWbf3FNdebPW1Ky+QEAAID1ixARGkGrFlU57M4TSjb/XYdfk/kRIgIANEUbb1SVyqqWjV0GAKwRISIAAEADqqxqmZcu+UrJ5t/2zDtKNjcA6y8h4nqk1KfQJk6jBQAAAGiOhIjrkVKfQps4jRYAAACgOXJ3ZgAAAACgkBARAAAAACgkRAQAAAAACgkRAQAAAIBCQkQAAAAAoJAQEQAAAAAoJEQEAAAAAAoJEQEAAACAQkJEAAAAAKCQEBEAAAAAKCREBAAAAAAKCREBAAAAgEJCRAAAAACgUGVD7ejll1/OmWeemXnz5qV9+/YZPnx4unbtutyYn//855k0aVIqKipSWVmZU089NZ///OcbqkQAgDWmxwEAYH3QYCHiueeemyFDhmTQoEEZO3ZszjnnnNx6663Ljdl5553zzW9+MxtssEGee+65HHnkkXnooYfSqlWrhioTAGCN6HEAAFgfNEiIOGfOnDz77LO56aabkiQDBgzIj3/848ydOzebbLJJ/bj//Ea+e/fuqaury7x587L55ps3RJmF2rbbIK1alvbHtXjJ0sx/592S7gMAWHuaQ48DAACro0FCxBkzZqRTp06pqKhIklRUVGSzzTbLjBkzlmuw/9OYMWOy1VZbrXFz3aFDm49c76oMPH1syeZOkvGXDkqrjm1Luo+G0LEZvIfmwDqsprLSTt8Q69C6TWmPZNpgw6qSzp+kWaxDy1YtSjt/Vek/ssvLS3up5Ob4e6khe5yktH0OH6w5/je8rmoOa1FWVuIPvxJPn5R+HUrd4yQN0Oc0g3UodY+TlL7PKXWPkzSP30vwQRrsdOY18dhjj+WKK67IL3/5yzV+7Zw5C7JsWd1ar6mhfiG8+eb8ks3dHN5Dc9EQa2EdPljHjm2Ttf/rYjmlXoeOHdtm4YLFJd3Hu4uqSzp/kmaxDksW15R0H0uql5Z0/iRZtmxZSecv1TqUl5etM+HaR+lxknW/z1nXNcTvElbPut7ndOzYNnV1Jf7wK/H0Sen/dil1j5M0QJ/TDNah1D1OUvo+p9Q9TlKadViXehzWDw1yd+bOnTtn1qxZqa2tTZLU1tZm9uzZ6dy58wpjn3rqqXzve9/Lz3/+82y77bYNUR4AwIeixwEAYH3RICFihw4d0qNHj0yYMCFJMmHChPTo0WOF03z+/ve/59RTT82VV16Znj17NkRpAAAfmh4HAID1RYOEiEly3nnn5bbbbkvfvn1z22235fzzz0+SDB06NE8//XSS5Pzzz8/ixYtzzjnnZNCgQRk0aFCef/75hioRAGCN6XEAAFgfNNg1Ebt165aRI0eu8PwNN9xQ/++jRo1qqHIAANYKPQ4AAOuDBjsSEQAAAABYNzXJuzOvr5YtrXZXPgAAAACaHCFiE1JeWZWXLjy4ZPNve7ZTqQAAAABYc05nBgAAAAAKCREBAAAAgEJCRAAAAACgkBARAAAAACgkRAQAAAAACgkRAQAAAIBCQkQAAAAAoJAQEQAAAAAoJEQEAAAAAAoJEQEAAACAQkJEAAAAAKCQEBEAAAAAKCREBAAAAAAKCREBAAAAgEJCRAAAAACgkBARAAAAACgkRAQAAAAACgkRAQAAAIBCQkQAAAAAoJAQEQAAAAAoJEQEAAAAAAoJEQEAAACAQpWNXQCsqbbtNkirlqX7T3fxkqWZ/867JZsfAAAAYF0jRGSd06plZQaePrZk84+/dFDml2x2AAAAgHWP05kBAAAAgEJCRAAAAACgkNOZ4b8sW1qdjh3bNnYZAAAAAE2GEBH+S3llVV668OCS7mPbs0eVdH4AAACAtcnpzAAAAABAISEiAAAAAFBIiAgAAAAAFBIiAgAAAACFhIgAAAAAQCEhIgAAAABQSIgIAAAAABQSIgIAAAAAhYSIAAAAAEAhISIAAAAAUEiICAAAAAAUEiICAAAAAIWEiAAAAABAISEiAAAAAFBIiAgAAAAAFKps7AIAAACairbtNkirlv5MAoD/5tMRAADg/2nVsjIHnTG+pPu4Z/jAks4PAKXgdGYAAAAAoJAQEQAAAAAoJEQEAAAAAAoJEQEAAACAQkJEAAAAAKCQEBEAAAAAKCREBAAAAAAKCREBAAAAgEJCRAAAAACgkBARAAAAACgkRAQAAAAACgkRAQAAAIBCQkQAAAAAoJAQEQAAAAAoJEQEAAAAAAoJEQEAAACAQkJEAAAAAKCQEBEAAAAAKCREBAAAAAAKCREBAAAAgEJCRAAAAACgkBARAAAAACgkRAQAAAAACgkRAQAAAIBCQkQAAAAAoJAQEQAAAAAoJEQEAAAAAAoJEQEAAACAQkJEAAAAAKCQEBEAAAAAKCREBAAAAAAKCREBAAAAgEKVjV0AwMpsvFFVKqtaNnYZAAAAQISIQBNVWdUyL13ylZLuY9sz7yjp/AAAANBcNNjpzC+//HIOP/zw9O3bN4cffnheeeWVFcbU1tbm/PPPT58+fbLPPvtk5MiRDVUeAMCHoscBAGB90GAh4rnnnpshQ4bkd7/7XYYMGZJzzjlnhTHjx4/PtGnTct999+XOO+/MiBEj8vrrrzdUiQAAa0yPAwDA+qBBQsQ5c+bk2WefzYABA5IkAwYMyLPPPpu5c+cuN27SpEk59NBDU15enk022SR9+vTJb3/724YoEVhDbdttkI4d25bsH4B1gR4HAID1RYNcE3HGjBnp1KlTKioqkiQVFRXZbLPNMmPGjGyyySbLjevSpUv9486dO2fmzJlrtK/y8rK1U/RKbLbxBiWb+32VG3Us6fwdN9zkgwd9RKVcg/eVei1KvQ5J6dei1OvQqmVljr9kcsnmv+7MPtZhNbXeoEVJ56/YoE1J50+axzps1Ka0NwKqaL1RSedPkg4bblzS+Uu1Dg2xvqvSkD1Osm73OX6nrx795uop9Vp0tA6rpdTrUOoeJyl9n9Mc1qHUPU5S+j6n1D1OUpp1aMweB1amrK6urq7UO3nmmWdyxhlnZOLEifXP7b///vnpT3+anj171j83cODAXHjhhdl5552TJDfccENmzZqVH/7wh6UuEQBgjelxAABYXzTI6cydO3fOrFmzUltbm+S9i4vPnj07nTt3XmHc9OnT6x/PmDEjm2++eUOUCACwxvQ4AACsLxokROzQoUN69OiRCRMmJEkmTJiQHj16LHeaT5L069cvI0eOzLJlyzJ37txMnjw5ffv2bYgSAQDWmB4HAID1RYOczpwkL774Ys4888y88847adeuXYYPH55tt902Q4cOzSmnnJKddtoptbW1ueCCC/Lwww8nSYYOHZrDDz+8IcoDAPhQ9DgAAKwPGixEBAAAAADWTQ1yOjMAAAAAsO4SIgIAAAAAhYSIAAAAAEAhISIAAAAAUEiICAAAAAAUEiI2gN69e+eFF15Ikrz77rs55phjctZZZ6W2trZ+zFFHHZWddtop8+bNq3/ukUceSffu3TN8+PCGLrnZqKmpyRVXXJG+ffumf//+2W+//XLJJZekpqam5Pv+z3UvcvPNN2fOnDklr2ddcO+992bw4MEZNGhQ+vXrl9NPPz1JMmjQoCxevPgjzb2667E+6d27d/r165cDDjgg++yzT0444YQ8+eSTSZJ77rknvXr1yqBBgzJo0KAceOCBmTp1apKkrq4uV155Zfr3758DDjgg+++/f2666ab6ed988818//vfz5e//OUMGDAggwcPzl133bXcvr/97W/ns5/97Ar/L3bv3j3HHnvsCs8tXLiwFD+CRrGy/xYPOuigPProoxkxYkQ++9nPZvDgwenbt28OPvjg3Hrrrct9XnTv3j0DBw6s///ksssuq9/2yCOP5NBDD82gQYOy33775Wtf+1qWLVuW5L11u+WWW9K/f//sv//+6devX374wx/mnXfeqX/9gw8+mO7du2fy5MnL1XfmmWdmp512yvTp05d77rbbblurPxvWTfqcxqPPWbfocxqOHqdx6HGg+ats7ALWJ/Pnz89xxx2Xnj175uyzz05ZWdly27fbbrtMnDgxX/3qV5Mko0ePTs+ePRuj1GbjrLPOypIlSzJq1Ki0adMmNTU1ueeee1JdXZ0WLVo0dnlJkltvvTV77rlnOnTo0NilNKrZs2fn/PPPz+jRo9O5c+fU1dXlueeeS5KMHTu2katrvq688spsv/32SZL77rsvxx13XG688cYkyZ577pkrr7wyyXuN1wUXXJB77703v/3tbzN16tTcc889admyZaqrqzNt2rQk7wUIRx55ZA466KBccsklKS8vzzvvvJNJkybV73PevHmZOnVqttlmmzzwwAPZd999l6vppZdeymOPPZbPfOYzDfEjaHIGDx6cM844I0ny2muv5Xvf+16mTZuWH/7wh/Vj7rjjjrRu3Trvvvtu+vfvn969e6dnz5455ZRTcuutt2aHHXZIkjz77LP1nzWXX355/vKXv+SWW27JpptummXLlmXy5Ml5++23065duyTJqFGjsscee+Tuu+9Onz59lqurY8eOGTFiRC6++OKG+DGwDtLnNDx9zrpDn9Pw9DhNjx4H1n1CxAYyZ86cfP/738+XvvSlfPvb317pmAMPPDBjx47NV7/61SxcuDBPPvlk9t9//1RXV9ePueGGG/K73/0utbW16dSpU3784x+nY8eOmTp1ai6//PIsWbIktbW1GTZsWPr375/kvW//d9xxx/z1r3/N7Nmzs99+++W73/1ukuSqq67KhAkT0rJly5SVleXWW2+t/0W7rnvllVcyefLkPPjgg2nTpk2SpEWLFjn88MNTW1ub4cOH509/+lOS5POf/3y++93vpqKiImeeeWaqqqryyiuv5LXXXss+++yTL33pSxkxYkRmzpyZr3/96/n617+e5L1v2/r3758nn3wys2fPzte//vUceeSRK9Qye/bs/OQnP8n06dOzZMmS9O/fP8OGDcs111yT2bNn55RTTknLli1z6aWXZquttspll12Wv/zlL6mpqcn222+f8847L61bt264H14jeOutt1JZWZn27dsnScrKytKjR48k730r+eSTT6Z169bp3bt3Bg0alD//+c958803881vfrP+Z/7444/n/PPPT5Lsvvvu+cMf/pDrrruuvoF836rWY32377775u9//3tuvPHG7L333sttmz9/fjbaaKMkyaxZs7LxxhunqqoqSVJVVZXtttsuSTJhwoS0b98+xx9/fP1r27Vrl6985Sv1j8eNG5cvfvGL2WuvvTJq1KgVGuyTTz45P/vZz3LHHXeU4m2uU7bccstceOGFOeCAA/Ltb387bdu2XW77u+++m6VLl6Zt27ZZuHBhFi1alE033bR++yc+8YkkycKFC3PTTTdlzJgx9dvLy8uX+9n/+9//ztSpU3Pvvfemf//+efPNN9OxY8f67V/5yldy22235f/+7//q1xvep89pePqcdYs+p3HpcZoePQ6sm4SIDeQ73/lOhgwZssrGOnnvF2lVVVVefPHF/PWvf02fPn1SWVlZ31yPHTs206ZNy1133ZXy8vL8+te/ziWXXJJLL700n/jEJ/LrX/86FRUVeeutt3LQQQdlr732qv9AnDFjRm6//fYsXLgwffr0ySGHHJKNN944N954Y6ZOnZpWrVplwYIFadWqVYP8PBrCs88+m6233rr+Z/Cf7rzzzvzzn//MPffckyQZOnRo7rzzzgwZMiRJ8q9//Su33HJLamtr07t378yfPz+33XZb3nzzzfTr1y+HHHJIfbP71ltv5fbbb89bb72VwYMHp1evXvXfkL3vjDPOyIknnphPf/rTqa6uzje+8Y3stNNOOeGEEzJy5Mjlvim9+uqr07Zt29x9991Jkp/+9Ke5/vrrc+qpp5bsZ9UU7LDDDtl5552z9957Z/fdd8+nPvWpDBo0KBtvvPEKYxcvXpw777wzr7/+egYOHJgDDzwwLVq0yGmnnZaf/exn6dWrV37/+9/nV7/61Ur3tar1+NznPlfqt9nkffKTn8z999+fvffeO3/+858zaNCgLFq0KHPnzs11112XJNl///3zm9/8Jvvuu2969eqVPfbYI/37909lZWX+8Y9/ZOeddy7cxz333JMzzjgju+66ay666KLMmjUrnTp1qt++77775vbbb8/kyZNX+Ka4uXj/D+r3vfLKK6sc261bt7Rq1Sovv/xy/c/2/T9YXn311RxxxBHZdtttkySHHXZY9t1333zmM5/Jpz71qQwcODCdO3fOiy++mKqqqvpxKzN27Nh86Utfyqabbpp99tknY8aMydChQ+u3b7jhhjn++ONz2WWX5ec///lHefs0Q/qchqfPWbfocxqfHqdh6HGgeRMiNpAvfvGLmTRpUo444ohsttlmqxw3ePDgjB49On/729/yox/9KL/73e/qt91///155plncuCBByZJamtr6795njt3bn7wgx/k1VdfTUVFRd5+++28/PLL2WWXXZIk/fr1S3l5edq2bZtu3bpl2rRp2XLLLbPNNtvke9/7Xj7/+c9n7733rp+vuZs6dWoOPPDA+m8ZDzrooEyePLm+ue7Tp0/9tm222SZf/OIXU15enk6dOqVdu3aZOXNmunXrliQ55JBDkiSbbrpp9t577zz22GPLNdeLFi3KY489lrlz59Y/t3Dhwrz44osrbebuv//+LFiwoH7tq6urV2jWm6Py8vJcffXVeeGFF/KXv/wlkydPzo033pjx48evMHb//fdPkmyxxRb161FTU5NWrVqlV69eSZJ99tlnpUebrOl6rG/q6urq//0/T/V59NFHc9ppp+V3v/tdNttss0ycODF//etf88QTT+Taa6/NuHHjcuONNy73+pV59tln884772SPPfZIWVlZ9tlnn4wdOzbHHXfccuNOP/30XHjhhendu/faf5NNwH/+QZ289ztoTbx/qs8777yTr3/96/V/jJxzzjk5+uij88gjj2TKlCm57rrrMmrUqA9cl+S9P3zOOuusJO8dMXb22Wcv12An7zXwN910U/72t7+tUb00f/qcpkWf0/TocxqfHqdh6HGgeRMiNpBjjz02DzzwQI466qgMGzYsN998c5Jk4MCBy11gd7/99kv//v2z6aabZvvtt1+uua6rq8sJJ5xQ38z9p/POOy+9e/fOVVddlbKysvTt2zdLliyp3/6f3wZVVFSktrY2FRUVueuuu/Lkk0/mkUceyUEHHZRf/OIXzaaR+8QnPpFXX301b7/99grf0tfV1a1wrab/fPzfP6+V/fxWZmXzLlu2LGVlZbn77rtX6/pEdXV1Offcc/PZz372A8c2R9tvv3223377fPWrX83++++fxx57bIUxq1qP//7Zr8yarsf65umnn87HP/7xFZ7ffffds3Tp0vzrX//KzjvvnMrKyvTq1Su9evXKwQcfnM997nOZN29edtxxx4waNWqV8999991555138uUvfznJe388tm7deoUG+7Of/Ww23XTTjBs3bu2+wXXQSy+9lMWLF6/0G/Z27dplzz33zMMPP1x/RMOWW26ZLbfcMoceemj9Z89hhx2WJUuW5OWXX84222yzwjxPP/10XnzxxZx99tn1z82ePTtPPvlkPvWpT9U/16JFi5x88sm59NJL06VLlxK8W9ZV+pyGp89ZN+lzGo8ep+nR48C6x92ZG9Dxxx+fAw88MNdee21uuOGGjB07doU7dLVu3Trf//736y84+5969+6dX//613n77beTvPfB9P4FmefPn5+PfexjKSsry8MPP5xXX331A+tZsGBB5s6dm8985jM55ZRTsv322+df//rXWninTUPXrl3Tu3fvnHPOOVmwYEGS945quOWWW7L77rtn9OjRqampSU1NTcaMGfOhm9nRo0cnee8oiSlTpqxwoeQ2bdpkt912y/XXX1//3IwZM/Lmm28meW/N58+fX7+td+/eufnmm+vv0rdgwYK8+OKLH6q2dcmsWbPy1FNP1T+eOXNm5s6dmy222GK1Xr/ttttm0aJFeeKJJ5IkkydPXu6ObO/7oPVYn02ePDm/+c1vcvTRR6+w7fnnn8/ChQuzxRZb5Jlnnsnrr79ev+0f//hHNtpoo7Rr1y79+/fP3Llz84tf/KL+m+F33nknt9xyS6qrqzNx4sTcfffduf/++3P//ffnoYceSllZWR5//PEV9nn66adnxIgRpXvD64DXX389Z599do444oiVHkFVXV2dp556Kl27ds3ChQvz0EMPLfdzf/3117PFFlukdevW+cY3vpFzzjmn/i6pdXV1GTduXKZNm5ZRo0bl2GOPrV+X+++/PyeffPJK/1gaOHBg5s2bt9I/fFm/6XMalj5n3aLPaVx6nKZHjwPrJkciNrBhw4alrq4uRx11VG699dblrpHxvvdPYfhvgwcPzrx58+ovrlxXV5cjjjgiO+ywQ04//fScf/75ueGGG9K9e/d07979A2tZsGBBTj755CxevDh1dXX5xCc+scLFf9d1l1xySX7+85/n4IMPTosWLbJs2bJ88YtfzKmnnpo33nij/pSpvfbaK4cddtiH2kfnzp0zZMiQvPnmmzn++ONX+rP/3//931x88cUZOHBgkvca6gsvvDAdO3bM1772tfzgBz9Iq1atcumll+a4447LVVddlUMOOSRlZWUpKyvLSSedVH9aUXO1dOnSjBgxIm+88UZatWqVZcuW5Tvf+U79RZM/SFVVVS699NKcd955adWqVfbYY49suummK1ykOSlej/XNKaeckqqqqrz77rvp1q1brr/++uyyyy556aWX6q8XVFdXl7q6ulx88cXZZJNN8o9//CPnn39+FixYkKqqqmywwQb5+c9/nvLy8my44Yb51a9+lZ/+9Kf58pe/nNatW6eysjJDhgzJ5MmTs9VWW6Vr167L1TBgwICMGjWq/hSt9+20007p2bPncs38+mDMmDGZOnVq3n333bRp0yYDBw7MUUcdtdyYr3zlKykvL8+SJUvymc98JkcccUSqq6tz++2358c//nFatmyZ2traDBw4MPvss0+S5LTTTsvNN99cP1ddXV169eqVz372s5k0aVJ+85vfLLePAQMG5IADDljum/vkvVPyTj311PX+Iv2snD6nYelz1h36nIanx2l69Diw7iurW52LCAAr1bt371x77bUr3BWPxrFgwYL6bzIfeeSRnHnmmbn//vtTXu6gawBYU/qcpkWfA0BjcyQi0Gzcd999ufnmm1NXV1f/jb3GGgBoDvQ5ADQ2RyICAAAAAIV8dcV6p3fv3nnhhReWe27o0KGZNm3aB772qKOOygMPPFCq0tYr1gEA1i6frU2HtQCgOXI6MyS54YYbGrsEYh0AYG3z2dp0WAsA1nWORIQs/23xUUcdleHDh+eII47Il7/85fzv//7vSl8zceLEHHzwwZk5c2bGjx+fQw89NIMHD87gwYMzderU+nGPP/54Bg4cmIEDB+YnP/lJvvSlL9Xv66WXXsqxxx6bgw8+OAcccEBGjRpV+jfbhFkHAFi7fLY2HdYCgHWdIxFhJWbMmJHbb789CxcuTJ8+fXLIIYeka9eu9dtvuOGGPPzww7n55pvTtm3b7LXXXhkwYEDKysry0ksv5Rvf+EamTJmS6urqnHbaafnZz36WXr165fe//31+9atfJUmWLl2a7373u/npT3+abt26ZcGCBTn44IOzyy67pFu3bo30zpsW6wAAa5fP1qbDWgCwrhEiwkr069cv5eXladu2bbp165Zp06bVN3UjRoxIly5dcv3116eqqipJ8tprr+X000/PrFmzUllZmbfeeitvvvlm5syZk1atWqVXr15Jkn322Sft2rVLkrzyyit58cUXc9ppp9Xvt6amJi+99JKm7v+xDgCwdvlsbTqsBQDrGiEirETLli3r/72ioiK1tbX1j3fZZZc8/PDDmT59en2jd9ppp+XMM89Mnz59smzZsnzyk5/MkiVLkiRlZWUr3UddXV023njjjB07tnRvZB1nHQBg7fLZ2nRYCwDWNa6JCGvo85//fM4777wcd9xx+de//pUkmT9/frbYYoskyd13353q6uokybbbbptFixbliSeeSJJMnjw577zzTpJkm222SatWrTJmzJj6uV988cUsWLCgAd/Nuss6AMDa5bO16bAWADRFjkRkvXT00UenoqKi/vHChQvX6PWf/exnc/HFF+eEE07IFVdckbPOOisnnnhiOnXqlM985jNp3759kqSqqiqXXnppzjvvvLRq1Sp77LFHNt1007Rt2zaVlZW59tprc9FFF+XGG2/MsmXL0qFDh1x++eVr8Z02bdYBANYun61Nh7UAoLkpq6urq2vsIqA5W7BgQdq0aZMkeeSRR3LmmWfm/vvvT3m5A4EbknUAgLXLZ2vTYS0AaAiORIQSu++++3LzzTenrq6u/ptiDV3Dsw4AsHb5bG06rAUADcGRiAAAAABAIV9PAQAAAACFhIgAAAAAQCEhIgAAAABQSIgIfCgjRozId7/73cYuo0EdddRRGTly5FqZ68wzz8xll122VuYCANYePc5Ho8cBaL6EiMAqjR8/PgcddFB23XXX7LXXXjn22GPz+OOPr7X5X3/99XTv3j1Lly5d63MeeOCByz0/d+7c7Ljjjundu/dqzbM+/gEBAOsLPY4eB4A1J0QEVuqmm27KRRddlGHDhuXhhx/OAw88kCFDhuQPf/hDY5dWr6gxX7RoUV544YX6xxMmTMjHPvaxhigLAGjC9DgA8OEIEYEVzJ8/P1deeWXOOeec7Lvvvtlwww3TokWL9O7dO2ecccYK4x999NF84QtfWO653r17589//nOS5O9//3sOOuigfOpTn8qee+6Ziy++OEly5JFHJkk+/elPZ9ddd81TTz2VJLn77ruz33775dOf/nSOOeaYvPHGG/Xzdu/ePbfffnv23Xff7Lvvvqt8D4MGDcro0aPrH48ZMyaDBw9ebsysWbNy8sknZ4899kjv3r1z6623JkmmTJmS6667Lvfee2923XXXHHDAAfWveeONN/KVr3wlu+66a775zW9m7ty59dv+8Ic/pH///unVq1eOOuqovPjii/Xbnn322Rx44IHZdddd853vfCdLlixZZe0AQGnocfQ4AHx4QkRgBU899VSWLFmSffbZZ63Md+GFF+ZrX/tannzyyfz+97/PfvvtlyS57bbbkiR/+ctf8tRTT2XXXXfN5MmTc9111+Wqq67K1KlTs9tuu+X0009fbr7JkyfnrrvuyqRJk1a5zwMOOCCTJk1KbW1tXnzxxSxcuDCf/OQn67cvW7YsJ5xwQrp3754pU6bklltuyS233JI//elP+cIXvpDjjz8+++23X5566qmMGzeu/nUTJkzIxRdfnKlTp6ampia//OUvkyQvv/xyTj/99PzgBz/I1KlT84UvfCHDhg1LdXV1qqur861vfSuDBg3KY489ln79+uW+++5bKz9bAGD16XH0OAB8eEJEYAXz5s3LxhtvnMrKyrUyX2VlZaZNm5a5c+emdevW2WWXXVY59o477shxxx2Xbt26pbKyMsOGDcs///nP5b6pP+6449K+ffu0atVqlfNsvvnm2WabbfLnP/85o0ePXuEb+qeffjpz587NSSedlKqqqmy55ZY57LDDCpv2JDnooIOyzTbbpFWrVunXr1/++c9/JkkmTZqUL37xi/nc5z6XFi1a5JhjjsnixYvz1FNP5W9/+1tqamry9a9/PS1atEi/fv2y0047ffAPDgBYq/Q4q6bHAeCDrJ1PT6BZad++ff79739n6dKla6XJvvDCC3PllVdmv/32yxZbbJGTTjopX/rSl1Y6dvr06bnooosyfPjw+ufq6uoya9as+uv9dO7cebX2O3jw4IwePTpPPfVUbrvttrz66qv12954443Mnj07vXr1qn+utrZ2uccr07Fjx/p/32CDDbJo0aIkyezZs9OlS5f6beXl5encuXNmzZqVioqKdOrUKWVlZfXb/3MsANAw9DirpscB4IMIEYEV7LrrrmnZsmUmT56cfv36feD4DTbYIIsXL65/XFtbu9x1dLp27Zqf/exnWbZsWe67776ccsopefTRR5drON/XuXPnDBs2bLlr9Py3lb1uZfbdd99ccMEF6dmzZz72sY8t12B37tw5W2yxxSpPuVndfbxvs802W+4i53V1dZkxY0Z9Yz1r1qzU1dXVzzt9+vRsueWWa7QPAOCj0ePocQD48JzODKygbdu2OeWUU3LBBRdk8uTJeffdd1NTU5MHH3ww//M//7PC+G222SZLlizJH//4x9TU1OSaa65JdXV1/faxY8dm7ty5KS8vT7t27ZIkFRUV2WSTTVJeXp7XXnutfuxXvvKVXH/99fnXv/6V5L0LoN97770f6n1suOGGueWWW3LhhReusG3nnXdOmzZtcv3112fx4sWpra3NCy+8kL///e9Jkg4dOuSNN97IsmXLVmtf++23Xx588MHlriNUVVWVXXfdNbvssksqKytz6623ZunSpbnvvvvy9NNPf6j3BAB8eHocPQ4AH54jEYGVOvroo9OhQ4dcffXV+e53v5vWrVunZ8+eGTZs2Apj27Ztm3PPPTc//OEPU1tbm2OPPTabb755/fY//elPueSSS7J48eJ06dIll112WVq2bJkkGTZsWI444ogsXbo0v/jFL7LPPvtk4cKFOe200/LGG2+kbdu22XPPPesvVL6mVnVdnoqKilxzzTUZPnx4vvzlL6e6ujrbbLNNvvOd7yRJ+vXrl3HjxmX33XfPFltssdxdEFdm2223zU9/+tP8+Mc/zqxZs9KjR49ce+21qaqqSpKMGDEiP/rRj3L55Zfni1/84lq7oDsAsGb0OHocAD6csrq6urrGLgIAAAAAaLqczgwAAAAAFBIiAgAAAACFhIgAAAAAQCEhIgAAAABQSIgIAAAAABQSIgIAAAAAhYSIAAAAAEAhISIAAAAAUEiICAAAAAAU+v8Awb7PTVnh60gAAAAASUVORK5CYII=\n",
"text/plain": [
"<Figure size 1152x576 with 2 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plot_scores(pd.concat([buildings_raw_results_long, buildings_pca_results_long, buildings_umap_results_long]))"
]
},
{
"cell_type": "code",
"execution_count": 81,
"id": "083ea48b",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAB5kAAAI0CAYAAAAnep4gAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAAsTAAALEwEAmpwYAAB1IUlEQVR4nOz9ebxVZd0//r/OwAFlEAVEUJwTEZzNNO0OCUQZBOcibVKch6zMgRI1NamfZeKYqalYIoLMajmnOZNmt2LdKuDAoCA4oHA4nN8ffjhficGtsM/E8/l49Iiz1rWv673PEs77rNdea5VUV1dXBwAAAAAAAAAKUFrXBQAAAAAAAADQcAiZAQAAAAAAACiYkBkAAAAAAACAggmZAQAAAAAAACiYkBkAAAAAAACAggmZAQAAAAAAACiYkBkAAAAAYB0zZsyYdO7cOWPGjFlue48ePdKjR4+CxgIA6y4hM1CvXXPNNencuXM6d+6cV199daVjlv2i8+n/devWLfvtt19+/OMfZ+rUqSt93fDhw9O5c+cMHz68mG8BAGClPm+fc9RRR61yrjfeeCPbb799zdj/tqrtAEDjUlVVlTvuuCNHHXVU9txzz3Tt2jV77713+vfvnyFDhuT++++v6xLr1JNPPrnac0HCdAAoXHldFwCwKtXV1bnzzjtTUlKS6urqjBo1KmedddYqx2+//fbp2bNnkuSDDz7IlClTMnHixPzlL3/JH//4x+y+++61VToAwGp93j6nvLw8Tz/9dF599dVsvfXWK+wfNWpUqqurU15eniVLlhSzdACgnqqqqsrxxx+fv/3tb2nVqlW+/vWvZ5NNNsmCBQsyY8aMTJw4Ma+++mq+8Y1vJEl69eqVnXfeORtvvHEdVw4ANERCZqDeevTRR/PGG2/kkEMOySOPPJK77rorZ5xxRioqKlY6vkuXLjn11FOX23beeedl5MiRufzyy3PrrbfWRtkAAJ/p8/Y53bt3z3333bfSMLqqqipjxozJjjvumDlz5mT27Nm18RYAgHpm4sSJ+dvf/pbtt98+I0aMSMuWLZfb/9FHH+X555+v+bply5YrjAEAKJTbZQP11qhRo5Ikhx9+ePr37593330399133+ea47DDDkuS/Otf/1rr9QEAfFGft8/Zdttts+uuu2bs2LGprKxcbt9DDz2UOXPm5IgjjihqzQBA/faPf/wjSXLwwQevNDxeb731stdee9V8/UVvDf3EE0/k6KOPzq677prddtstxx13XF555ZWVjp0zZ04uuOCC9OjRI926dctee+2VU045ZaXnaZY91uzJJ59cYd8bb7yRzp075+yzz15h30cffZTrrrsuAwYMyC677JJdd901Rx55ZCZOnLjcuLPPPjvf+c53kiRXXnnlco9de/LJJ3P00UfnnHPOSZKcc845y+1/4403auZZsmRJbrvtthxxxBHZbbfdsvPOO2fgwIEZMWJEli5dWvg3EgAaOFcyA/XSO++8kwceeCBbbrlldtttt7Ro0SI33XRTRo4cmT59+nzu+crL/XMHANQPX7TPOfzww3Puuefm/vvvzwEHHFCzfdSoUVl//fXTp0+fXHnllbXxFgCAeqh169ZJkmnTphVtjYceeij3339/vva1r+Wb3/xmXnnllTz88MN54YUXMmnSpGy00UY1Y19//fUMGjQoc+bMyV577ZW+fftm5syZueeee/LQQw9l+PDh2W+//daonvfeey/f/e538+KLL6Zr16459NBDs3Tp0jz66KP58Y9/nP/85z8544wzkqTmEWt33XVX9txzz+y5554182y66aY14fz999+fb3zjG+nSpUvN/latWiVJKisrc8IJJ+TRRx/NVlttlX79+qVp06Z58skn84tf/CLPP/98fv3rX6/RewKAhkLqAtRLY8aMSWVlZQ455JAkyXbbbZeuXbvmySefzPTp07PFFlsUNM8dd9yRJJ7HDADUG1+0z+nTp08uueSSjBo1qiZknj17dh555JEccsghadGiRa29BwCg/tl///3zhz/8Ibfffns+/PDD9OrVK127ds2mm2661ta47777csMNN2Tvvfeu2XbZZZfl97//fUaPHp3BgwfXbD///PMzZ86c/PCHP8yJJ55Ys33QoEE56qijcvbZZ+eBBx5I8+bNv3A9l1xySV588cX85Cc/WW7tRYsW5aSTTsp1112XAw44IF26dEnPnj3TsmXLmpD5vx+5ttlmmyVJ7r///vTs2bOmV/u0a6+9No8++miOOuqonHvuuSkrK0vyyeNLfv7zn2f06NHp3bt3TaANAI2Z22UD9U51dXVGjRqV0tLSDBw4sGb7wQcfXLNvZV566aUMHz48w4cPzy9/+csceuihGTVqVDbeeOMVnl0IAFAXvmifk3xyi8t+/frlscceq7ll45133pmqqiq3ygYAssMOO+RXv/pV2rZtm/Hjx+fUU09Njx498pWvfCUnn3xyHnjggTVeo0+fPssFzElq+pAXXnihZtusWbPy6KOPpmPHjjn22GOXG7/bbrulb9++mT9/fv76179+4VrefffdjB8/Pt26dVsuYE6Spk2b5swzz0x1dXUmTJjwhdf4tKVLl2bEiBFp165dzjnnnJqAOUnKyspy9tlnp6SkZK2tBwD1nSuZgXrniSeeyIwZM7Lvvvumffv2Ndv79euXYcOG5a677srpp5+eJk2aLPe6qVOnZurUqctt69ixY2677bZ07NixVmoHAFidL9rnLHPEEUfk9ttvz5133pnTTjsto0ePTufOnbPTTjvV1lsAAOqxPn36pFevXnnyySfz7LPP5qWXXsqzzz6b++67L/fdd18GDhyYSy+9NCUlJV9o/m7duq2wrUOHDkmSBQsW1Gx78cUXk3xyZ7mV9TV77bVXxo8fnxdffHG5D959Hi+88EKqqqpSUlKS4cOHr7B/yZIlSZJXX331C83/31577bXMnz8/W265Za655pqVjmnWrNlaWw8A6jshM1DvjBw5MklWuC3RhhtumB49euTee+9d4VmEySdXAF166aWprq7O3Llzc+edd+byyy/PCSeckJEjR2a99dartfcAALAyX7TPWaZr167p2rVrxowZk1122SVvvvlmfv7znxe9bgCg4WjSpEn23Xff7Lvvvkk+uZXzvffemyFDhmTs2LHp1avXF76d87JnE39aefknp5iXLl1as+39999PkrRr126l8yzbvmzcFzF//vwkn4TNn76K+r99+OGHX3iNla03bdq0XHnllUVfDwDqOyEzUK/Mmzcv9913X5LkRz/6UX70ox+tdNwdd9yxypOvJSUladu2bU444YQsWLAgN954Yy6//PKcc845RasbAOCzrI0+J/nkauahQ4dm6NChadasWQ466KCi1AsANA5lZWXp06dP/v3vf+eaa67JE088UfRnBrds2TJJ8s4776x0/9tvv50kadGiRc22ZVdXV1VVrTB+ZWH0sjW+973v1co5n2Xr9erVa7UhMwCsK4TMQL1y1113pbKyMl27dk2XLl1WOuaBBx7I3//+97z++uvp1KnTauc7+eSTM3bs2Nx222056qijPnM8AECxrK0+Z9mttWfNmpWBAweu9IoiAID/1rx58yRJdXV10dfaYYcdkiTPPvtslixZUnO18zJPPvlkkk/u0rLMBhtskCSZOXPmCvP961//WmHbTjvtlNLS0jzzzDMF17XsOcorC7KTpLS0dJX7t95667Rq1SrPPfdcKisrV/l4EwBYVwiZgXpl1KhRSZLzzz9/lc8WvPzyy3PNNdfkzjvvzBlnnLHa+Vq0aJHBgwdn2LBhufLKKzNs2LC1XjMAQCHWVp/TokWLXH/99Zk/f/5yJ2YBgHXbxIkTs+GGG2bvvfeuCUuXefvtt2t6kT322KPotWyyySbZZ5998thjj+Xmm2/OMcccU7Pv+eefz8SJE7PBBhssd0X1sv5ozJgxGTBgQE0wPXPmzFx11VUrrNGmTZv0798/48aNy1VXXZXjjz9+hTB7xowZKSkpqfnwXuvWrWvmXJkNN9xwlfvLy8tz1FFH5eqrr85FF12Uc845J82aNVtuzJw5c/Lee+9l2223Xe33BwAaAyEzUG88+eSTee2117Lddtut8sRrkhx22GG59tprM3r06Jx66qmfOe+gQYNy4403Zvz48Rk8eLBGHwCodWu7z6mNk8MAQMPy/PPP55Zbbkm7du2y2267ZbPNNkuSvPHGG3n44Yfz8ccf5xvf+MZqH8uxNl1wwQX51re+lV/96ld57LHH0q1bt8ycOTP33HNPSktLc8kllyx3u+ydd945X/7yl/P000/n8MMPz1577ZV33nknDz74YPbdd9+VBr/nnXdepk+fniuuuCLjx4/PbrvtlrZt22bOnDl55ZVX8sILL+Q3v/lNTci81VZbpX379pk0aVKaNGmSDh06pKSkJAMGDMimm26aXXbZJeutt15uvvnmLFiwIG3atEmSHH300WnZsmVOOumkTJ06NbfffnsefPDB7LXXXmnfvn3mzp2b6dOnZ8qUKTnjjDOcewJgnSBkBuqNO+64I0ly+OGHr3bcZpttlq9+9at57LHH8uCDD37mvM2aNcvxxx+fiy66KL/73e8yfPjwtVIvAEChitXnAAAs84Mf/CBbbrll/v73v+fll1/Oo48+msWLF6d169bZc889069fv/Tv37/m2cfF1qlTp4wePTpXX311HnnkkTz11FNp3rx5vva1r+WEE05Y6Qfvrr766vzqV7/K/fffn1tvvTVbbrllzjzzzOyzzz65++67Vxjf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CxcXdf4kDf5Y1EavkySLFi8p+hpLly4t6vzFOg5r2u9ccsklGTp0aPr27VuzbfLkybnooosyevTo1b5WrwMAFFtdn9th5RYtWpS5c+fmvffeT1VVVV2XQy0oKytLq1Yt06ZNmzRt2nSV42olZG7Tpk26dOmSiRMnZsCAAZk4cWK6dOmy3O2Ukk+e5/Pwww9nwIABWbJkSZ544on07t27NkoEAFgj+h0AoL6bNm1aDjzwwOW29e7dO0OHDv3M1+p1AADWPYsWLcq0adPSrFmLtGnTPmVl5R6D0shVV1enqmpJFi78MNOmTcuWW265yqC5uPeH+pTzzz8/I0aMSO/evTNixIhccMEFSZLBgwfnhRdeSJL07ds3bdq0SZ8+fTJw4MBsu+22Oeyww2qrRACANaLfAQDqsy222CKTJk1abts999yTTp06FfR6vQ4AwLpl7ty5adasRVq1ap3y8iYC5nVASUlJysubpFWr1mnWrEXmzp27yrG19kzmbbbZJqNGjVph+/XXX1/z59LS0pxzzjk555xzaqssAIC1Rr8DANRn5557bk444YTceuut6dixY958881Mnz491157bUGv1+sAAKxb3nvv/bRp076uy6COrL9+88ydOzsdO658f62FzAAAAADUnd122y1//etf89BDD2XOnDnZb7/98vWvfz2tW7eu69IAAKiHqqqqUlYmSlxXlZWVr/Y53P7LAAD4f1555ZXcc889eeeddzJ06NC88sorqayszPbbb1/XpQEArLHZs2enWbNmGTBgQM22BQsWZPbs2Wnf3hUqAACsyC2y112fdewLfibzK6+8kquuuqrmeTuvvPJKpk6dumbVAQDUE3fffXeOOuqozJ49O+PGjUuSLFy4MJdeemkdVwYAsHacdNJJmTVr1nLbZs2alVNOOaWOKgIAABqqgq5kvvvuu3PhhRemV69emThxYoYOHZqFCxfmsssuyx//+McilwgAUHxXXHFFbrzxxnTp0iV33313kmT77bf3oboGpmXrpmnWpKKoa3xcuTjvz19U1DUaA8cCoP6ZNm1aOnfuvNy2zp0759VXX62jigAAgIaqoJDZSVcAoLGbN29ezW2xl90KpqSkxC2BGphmTSpyxMgTi7rGHUdek/cj2PwsjgVA/bPRRhtl+vTp2WKLLWq2TZ8+3TOZAQCAz62gkNlJVwCgsevatWvGjRuXgQMH1mybNGlSdtppp7orCgBgLTr00ENz6qmn5owzzkinTp0yY8aM/O53v8vhhx9e16UBANAArbd+0zRrWlDUWCc+XrQkHy304fRiKejIO+kKADR2Q4YMyTHHHJM777wzCxcuzDHHHJPXXnstN954Y12XBgCwVhx33HEpLy/PsGHDMmvWrGyyySY5/PDD8/3vf7+uSwMAoAFq1rQ8/X88rq7LWKUJlw1YKyHzXnvtliTZZJNNMnLkXWnatOkKYwYO7JtZs2bm0UefSnl5/Q3e16aC3qWTrgBAY1ZdXZ2KiopMnDgxjzzySLp3754OHTqke/fuad68eV2XBwCwVpSWlubYY4/NscceW9elAABAgzNr1qyMHPmnfOc7PqSZFBAyO+kKAPVDddWStGvXsqhrVFUuzrz5694tZEpKStK/f/9MmTIlffr0qetyAADWqrfeeiulpaXZZJNNkiQfffRRrr322vz73//OrrvummOOOSZlZWV1XCUAANRfrVq1SlKSm2++KQcdNDCtW29Y1yXVuc8MmZ10BYD6oaSsPNNvvbCoa2xx9HlJ1r2QOUm6dOmS1157Ldtss01dlwIAsFYNGTIkgwYNqgmZL7zwwjz99NPp1atXRo8enQ8++CA/+tGP6rhKAACov5o2bZZvf/voXH75ZfnDH36fn/zkrIJfe999f8mdd47Mf/7znyxZUpnNNuuU/fc/IN/61lGpqKhYbuzAgX2TJLfffmeuv/7a3HffXzNv3ty0b98+Bx10SI4++rspKSlZYY1//euF3HbbLXn++efy3nsLstFGbfLVr+6TY445Pu3atVuzN78KBd0u20lXAKCx23PPPTN48OAcfPDB2WSTTZZr1g477LA6rAwAYM1MnTo1++yzT5Jk4cKFmTx5cm677bZ069Ythx12WI477jghMwAAfIbDDjsid945MmPHjs4RR3wzm2++xWe+5pprhufmm29K69ats//+B2T99dfL44//Pddcc2WeeOLxDB9+dcrLmyz3mqqqJTnttJPzzjtvZ++9v5qysrI88shDufrqK7J48aIce+zxy42fOHFcfvnLi9KkSZN87Wtfz8Ybt88bb7ye8ePH5tFHH8kf/nBzNtmkw1r9XiQFhsxOugIAjd2UKVOy6aab5qmnnlpue0lJiX4HAGjQKisrs/766ydJXnjhhTRv3jzdunVLkmyzzTZ5991367I8AABoEMrLm+Skk07Luef+NFdddUWGDbtsteNfeOH53HzzTWnffpPceOMtadOmbZLkxBNPzVln/TiPPfa3jBhxS773vWOWe93bb7+dbbfdLldccXWaNWuWJDnmmONzxBEDc/vtt+V73/tBTTA9Y8b0XHrpxenQoUOuvvoP2XjjjWvmeeaZp3LaaSflt7/9/31mrV9EQSGzk64AQGN366231nUJAABFsdlmm+XJJ5/MV77ylTzwwAP5yle+UrNv3rx5WW+99eqwOgAAaDh69OiZHXfcKQ8//GCee+4f2WWXXVc5dsKE8UmS73//mJqAOUnKy8tz+uk/yuOPP5bx48euEDInyY9+dGZNwJwkG220Uf7nf7pn8uSJmT59erbZZtskyZgxo7JkyZKcccaZywXMSbLHHnvma1/7eh599JF8+OGHad68+Rq99/9WUMjspCsAsC5YsGBBHnzwwcyePTvt27fPfvvtlw022KCuywIAWCOnnHJKTj755HTq1Cmvvvrqcud57r///uy44451WB0AADQsp512RgYP/n6uuOK3ueGGm1f6jOQkefnll5Iku+/+5RX2bb75Ftl4443z1ltv5v3330/Lli1r9rVo0SKdOm2+wms23rh9kuT999+r2fbCC/9MkkyZ8mxefPF/V3jNvHnzUlVVlddfn57tt9/hc7zLz1ZQyJw46QoANG7/+Mc/cvzxx2frrbdOx44d8+CDD+aSSy7Jddddl113XfUnEgEA6ruePXtmzJgxeemll7LDDjukU6dONfu23nrr7LLLLnVXHAAANDA77rhzevTomQceuC/33feX9OrVe6XjPvzwgyRJ27btVrq/TZu2mTVrVj744L9D5pYrHV9WVpYkqapaWrNtwYIFSZLbbrtltTUvXPjRavd/EQWFzE66AgCN3SWXXJKhQ4emb9++NdsmT56ciy66KKNHj67DygAA1tzmm2+ezTdf8WqI3XffvQ6qAQCAhu2kk07NI488lGuuuTLdu/dY6ZjmzVskSebOfSebbdZphf1z576TZNWhciFatPhkjfvvf6RmvdpSWsigZSddb7/99vzmN7/J7bffnvPPPz8XXXRRsesDAKgV06ZNy4EHHrjctt69e2fGjBl1VBEAAAAAUB9ttlmnHHro4XnrrTdzxx23r3TMdtttn+STW1n/t9dfn5E5c+akY8dNl7uK+fPq1u2TR98899w/vvAcX1RBIbOTrgBAY7fFFltk0qRJy2275557lrudJAAAAABAkvzgB8elZcuWufnmG/LRRyvejrp//wFJkptu+kPefffdmu1VVVUZPvzyLF26tGbMF3XYYUemvLw8l19+WWbMmL7C/srKyjz33JQ1WmNVCrpd9rKTrv3796/Z5qQrANCYnHvuuTnhhBNy6623pmPHjnnzzTczffr0XHvttXVdGgAAAABQz2ywwQb57nd/kCuv/N1K9++008456qjvZsSImzNo0OHp0eMbadZsvTzxxN/zyiv/l5133iVHHfXdNaphyy23ypAhQ3PxxRfkW986PHvttXc233yLLFmyJLNnz8pzz/0jG264YUaOHLNG66xMQSGzk64AQGO322675a9//WseeuihzJkzJ/vtt1++/vWvp3Xr1nVdGgDAWlNZWZnnn38+c+bMSZ8+fbJw4cIkyfrrr1/HlQEA0NB8vGhJJly2ZlfiFtPHi5YUfY0jjvhWRo8elZkz31rp/lNOOT2dO2+fUaNG5u67J2XJkiXZdNPNcvzxJ2XQoKPTpEmTNa7hwAP75ktf2i5/+tOITJnydJ566omst956adu2XXr0+EZ69tx/jddYmYJCZiddAYDGbvbs2WnWrFkGDPj/GuMFCxZk9uzZad++fR1WBgCwdrz88ss58cQTU1FRkdmzZ6dPnz55+umnc9ddd+Xyyy+v6/IAAGhgPlq4KB8tXFTXZRTdE0+s+nbTFRUVueuuiat9fa9evdOrV++C1ho7dtIq9w0efEIGDz5hpfu23fZLOe+8CwpaY20p6JnMs2fPTpIMGDAggwcPzoABA1JSUlKzHQCgoTvppJMya9as5bbNmjUrp5xySh1VBACwdp1//vk57bTTcs8996S8/JPrDr785S/n2WefrePKAACAhqagkNlJVwCgsZs2bVo6d+683LbOnTvn1VdfraOKAADWrv/7v/+ruWtLSUlJkk9uk71oUeO/+gQAAFi7CgqZnXQFABq7jTbaKNOnT19u2/Tp0z0eBABoNDbddNP861//Wm7bP//5z2y++eZ1VBEAANBQFRQyO+kKADR2hx56aE499dQ8+OCD+b//+7888MADOe2003L44YfXdWkAAGvF6aefnuOPPz5XXHFFKisrc9111+X000/PD3/4w7ouDQAAaGDKCxm07KTrGWeckU6dOmXGjBn53e9+56QrANBoHHfccSkvL8+wYcMya9asbLLJJjn88MPz/e9/v65LAwBYK/bbb79cf/31GTVqVL785S/nzTffzPDhw9OtW7e6Lg0AAGhgCgqZnXQFABq70tLSHHvssTn22GPruhQAgKK4++67c+CBB6Zr167Lbb/nnntywAEH1FFVAABAQ1RQyOykKwDQWL311lspLS3NJptskiT56KOPcu211+bf//53dt111xxzzDEpKyur4yoBANbckCFDcuCBB66w/bzzzhMyAwAAn8tqQ2YnXQGAxm7IkCEZNGhQTb9z4YUX5umnn06vXr0yevTofPDBB/nRj35Ux1UCAHxxr7/+epKkurq65s+f3ldRUVEXZQEAAA3YakNmJ10BgMZu6tSp2WeffZIkCxcuzOTJk3PbbbelW7duOeyww3LcccfpdwCABq1Xr14pKSlJdXV1evXqtdy+tm3b5pRTTqmjygAAgIZqtSGzk64AQGNXWVmZ9ddfP0nywgsvpHnz5unWrVuSZJtttsm7775bl+UBAKyxqVOnJkmOOuqojBgxoo6rAQAAGoPS1e100hUAaOw222yzPPnkk0mSBx54IF/5yldq9s2bNy/rrbdeXZUGALBWbb/99ivdfvHFF9dyJQAAQEO32pDZSVcAoLE75ZRTcvLJJ+fggw/O7bffnu9///s1++6///7suOOOdVgdAMDaM2bMmJVuHz9+fC1XAgAANHSrvV32spOunTp1yquvvppbb721Zp+TrgBAY9CzZ8+MGTMmL730UnbYYYd06tSpZt/WW2+dXXbZpe6KAwBYC+68884kSVVVVc2fl3n99dfTunXrOqgKAABoyFYbMjvpCgCsCzbffPNsvvnmK2zffffd66AaAIC1a9y4cUk+eSzasj8nSUlJSdq2bZthw4bVVWkAADRgrZqXp6yiaV2XsUpVixflvQ+X1HUZjdZqQ+bESVcAAACAhmzZnel++9vf5owzzqjjagAAaCzKKprm1YsPresyVmnrIaOTtRAy77XXbst9XVpampYtW2XbbbdN//4Dc8ABfVb6umnTXsudd96RKVOeyezZs7No0cdp3bp1tttu+3Tv3iO9ex+Ypk1XHtLfdNMfct11VydJRo4cky222HKN38fa9pkhMwAAAAAN3xlnnJF33303Dz/8cN55550ce+yxmT17dqqrq7PJJpvUdXkAAFCvHXPMcUmSJUuWZMaM6XnkkYfy7LPPZOrUl/LDH/54ubE33PD73HDD77N06dJ067Zj+vTpl/XXXy/z5s3LlCnP5pJLLsyYMaPyxz/etsI61dXVmTBhXEpKSlJdXZ1x4+7KaafVvw+LCpkBAAAA1gFPPfVUTj311HTr1i1TpkzJsccem+nTp+fGG2/MtddeW9flAQBAvTZ48AnLff3000/mtNNOysiRf8oRR3wrHTt2TJL88Y835Prrr0379pvk4ouHpVu3HVeY69FHH8mf/jRipes8+eTjeeutN9O3b/88/vjfM3nyhJx44ilp0qTJ2n9Ta6C0rgsAAAAAoPguueSSXH755bnhhhtSXv7JdQc777xz/vnPf9ZxZQAA0PB8+ctfyRZbbJnq6uq89NL/Jkneeuut/OEP16W8vDy/+c0VKw2Yk2Tfff8nl19+5Ur3jRt3V5JkwIBD0rv3gZk/f34eeuiB4ryJNeBKZgBgnTZo0KCUlJSsdsxtt6142xoAgIbmzTffzN57750kNf1PkyZNUlVVVZdlAQBAg1VdXZ3k/+uvJ00alyVLlqRXr97ZZpttV/vaioqKFbbNnTs3f/vbw9l88y2y0047p3nz5vnzn0dk3Lgx6dWr99p/A2tgtSGzk64AQGN3+OGH13UJAAC1Yptttsnf/va3fO1rX6vZ9ve//z3bbbddHVYFAAAN01NPPZkZM6anpKQkXbrskCR5/vnnkiR77LHnF5pz0qTxWbJkSfr27Z8k2WabbdO58/Z59tln8vrrM9Kp0+Zrpfa1YbUhs5OuAEBjd/DBB9d1CfVGy1brpVnT4t7o5uNFS/L+ex8VdQ0AYOXOPvvsHH/88enevXs+/vjjnHfeeXnggQdy9dVX13VpAABQ711//bVJkiVLlmTGjOl55JGHUl1dnW9+89vp0OGT5zG/8847SZKNN974c89fXV2d8ePvSmlpaQ48sF/N9r59D8rLL/8q48ePzcknn7YW3snasdqziJ910rWysnKtFgMAUNvGjh37mWMGDhxY9Drqg2ZNy9P/x+OKusaEywbk/aKuAACsyi677JLx48dn/PjxOfTQQ9OhQ4fceeed2WSTTeq6NAAAqPduuOH3ST65NXbLli2z8867pn//ATnwwL41Y/779tmfxzPPPJU33ngje+2193Ihde/eB2T48N9m0qQJOf74E1Ne3mQN38na8YUuVVm8eHFuv/323HDDDXn44YfXdk0AALXm7LPPzhZbbJG2bdvWNIGfVlJSss6EzABA49e+ffsMHjy4rssAAIAG54knpnzmmHbt2mX69GmZM2fO555/7NgxST65cvnTNtigdfbd93/y4IP355FHHk6PHj0/99zFsNqQ+dVXX82QIUMyderUbLnllhk2bFhee+21XHTRRWnfvn3OOuus2qoTAKAojj766Nx7771p3rx5Bg4cmJ49e6aioqKuywIAWOvOPPPMVV5R8atf/aqWqwEAgMZn5513yTPPPJ1nnnkqBx00sODXvfvuu3nkkYeSJD//+Tn5+c/PWem4sWPHNIyQ+eKLL86WW26ZE044IRMnTsxJJ52UZs2aZdiwYfnqV79aWzUCABTNkCFDcvbZZ+dvf/tbxo4dm0suuSTdu3fPwIEDs8cee9R1eQAAa80WW2yx3Ndvv/127r333vTv37+OKgIAgMalb98Bufnmm/Lgg/fntddezVZbbb3KsYsXL6652GXy5AmprKzM9tt3yZe+1Hml4x999OE8/fSTeeutN9Ox46ZFqf/zWG3I/K9//St/+9vfUlFRkS9/+cvZfffd8+CDD3pWDwDQqJSVlaV79+7p3r17Pvjgg1x99dX5zne+kxtvvDF77bVXXZcHALBWnHLKKStsO+yww3LVVVfVQTUAAND4dOzYMccee3yuvfaq/OhHp+WSS36VLl12WGHc448/lhEjbs5VV33ynOfx48cmSc4885x07dptpXNfd93VuemmP2TcuLty4okr9va1bbUhc2VlZU2Cvv7666dly5YCZgCgUXr//fczadKkjB07NvPmzctJJ52ULl261HVZAABF1aVLlzz11FN1XQYAADQa3/veMamqqsoNN/w+3//+Udlxx53TpcsOWW+99TJv3rw899yUvP76jJrw+dlnn8n06dOyzTbbrjJgTpL+/Qfmj3+8IZMmjc/gwSekvHy1MW/RrXb1xYsX53e/+13N1x9//PFyXyfJ6aefXpzKAABqwYMPPpi77rorU6ZMSY8ePXLmmWdm9913r+uyAADWuscff3y5rz/++ONMmjQp2267bR1VBABAQ1a1eFG2HjK6rstYparFi+ps7WOOOS49evTM6NGjMmXKM5k4cXwWL16UDTZonS99abscffT3csABfZIk48bdlSQ56KCDVztnx44d8+UvfyVPPfVEHn30kXTv3qPo72N1Vhsy9+/fP7Nmzar5um/fvst9DQDQ0J144onZaqut0r9//zRr1iyPPvpoHn300eXG+FAdANAYDBkyZLmv119//Wy//fa57LLL6qgiAAAasvc+XJJ8uKSuyyi6J56Y8oVet9VWW+cnPznrM8ddeOHFufDCiwua84orrv5CtRTDakPmX/7yl6t98dKlS9dqMQAAtW3gwIEpKSnJ/Pnz67qUdcLSJYvTrl3Lui4DANZJDzzwQF2XAAAANBJf6GbdL7/8csaOHZsJEyascKUPAEBDcumll652vw/VrV2l5RV59eJDizZ/fb5FEwDUBwsWLMiDDz6Y2bNnp3379unevXtat25d12UBAAANTGmhA+fNm5ebb745Bx98cAYOHJgXXnhhhdssAQA0Fi+//HKGDRuW//mf/6nrUgAA1op//OMf6dWrV26//fa8/PLLuf3227P//vvnH//4R12XBgAANDCrvZK5srIyDzzwQO666648+uij2XzzzdO3b9+89dZb+d3vfpc2bdrUVp0AAEU3b968TJgwIWPHjs3UqVOz++67+1AdANBoXHLJJRk6dGj69u1bs23y5Mm56KKLMnq0u4EAAACFW23IvM8++6SkpCSHHHJITj311HTt2jVJ8uc//7lWigMAKDYfqgMA1hXTpk3LgQceuNy23r17Z+jQoXVUEQAA0FCt9nbZnTt3zvvvv5/nn38+L7zwQhYsWFBbdQEA1Ip99tkn5513XrbaaquMHDkykydPzsknn5wmTZrUdWkAAGvVFltskUmTJi237Z577kmnTp3qqCIAAKChWu2VzLfeemvefPPNjB07NjfeeGMuuuii7Lvvvlm4cGGWLFlSWzUCABRN586d8+yzz+b555/PFltskc022ywbbLBBXZcFALDWnXvuuTnhhBNy6623pmPHjnnzzTczffr0XHvttXVdGgAA0MCs9krmJNl0001z8skn5y9/+Uv++Mc/pl27diktLc1BBx2UX/3qV7VRIwBA0dx6663561//mn322Sc33nhj9tlnn5xwwgk+VAcANDq77bZb/vrXv+bb3/52unbtmqOOOip/+ctfsttuu9V1aQAAQAOz2iuZ/9see+yRPfbYIz/72c/y17/+NWPHji1SWQAAtWfZh+pOPvnkPPPMMxk3blzNh+oOPfTQ/PSnP63rEgEA1ooNNtggAwYMqOsyAACABu5zhczLNG3aNP369Uu/fv3Wdj0AAHXKh+oAgMbq9ddfz+WXX56XXnopCxcuXG7fQw89VDdFAQAADdIXCpkBABo7H6oDABqbn/zkJ+nUqVPOOuusrLfeenVdDgAA0IAJmQEAAADWAf/5z3/y5z//OaWlpXVdCgAA0MD5rQIAAABgHfDlL385L774Yl2XAQAANAKuZAYAAABopH73u9/V/HnTTTfNMccck/333z9t27Zdbtzpp59e26UBANDArd+iSZo2qajrMlZpUeXiLPygsq7LaLSEzAAAAACN1KxZs5b7ukePHlmyZMkK2wEA4PNq2qQiR4w8sa7LWKU7jrwmC7NmIfOzzz6Tk08+Lrvuunuuueb6lY556623csgh/bLJJh0yduykJMnEieNz0UXnJ0l23XW3XHPNH1b52kMP7Z/q6uokyRNPTFllLTfd9Idcd93VSZKRI8dkiy22XOm4T6+9TJMmTdK2bbvsuuvuOfro72arrbZe5TqFEjIDAAAANFK//OUv67oEAABYZ5WVlecf/5iS6dOnrTQUHj/+rlRXV6esrDxVVUtWOU91dXUmTBiXkpKSVFdXZ9y4u3LaaWesdu0vfWm7/M//dE+SfPjhB5ky5dlMnjwh99//11x11bXp1m2nNXlrnskMAAAA0Fi9/vrrBf0PAABY+/bd92tJPgmT/1tVVVUmTRqfHXbomo022mi18zz55ON5660306dPv2y0UZtMnjwhlZWrv0r7S1/qnMGDT8jgwSfkhz/8SW6++U/p06d/Fi36OFdffeUXf1P/jyuZAQAAABqpXr161VztsColJSV56aWXarEqAABYN2y11daZN29uJk+emBNPPCXl5U1q9j322KN5++23c8wxx+eGG36/2nnGjfskpB4w4JC0arVB/vznEXnooQfSq1fvgmspKSnJoYcensmTJ+TFF//1xd7Qp7iSGQAAAKCRmjp1al566aVMnTp1lf8TMAMAQPEMGHBw3n333TzyyMPLbR83bkzWX3/9zwyK586dm7/97eFsvvkW2WmnndOv30E1r/+8ln34tKSk5HO/9r8JmQEAAAAAAACKoGfP/dO8eYvlQuE5c+bkiSf+np49e6d58+arff2kSeOzZMmS9O3bP0myzTbbpnPn7fPss8/k9ddnFFxHdXV1xowZlSTp2rXbF3gny3O7bAAAAIBG6phjjskNN9yQJBk0aNAqr1i47bbbarMsAABYZzRrtl723/+AjB07Om+99VY6duyYiRPHpaqqKgMGHLza11ZXV2f8+LtSWlqaAw/sV7O9b9+D8vLLv8r48WNz8smnrfS1//nPy7n++muTJB9++EGmTHk2//73y2natFlOOOHkNX5fQmYAAACARmrgwIE1fz788MPrrhAAAFiHDRhwcO66685MmDA2gwefkPHjx2bbbb/0mVcUP/PMU3njjTey1157Z+ONN67Z3rv3ARk+/LeZNGlCjj/+xOWe9bzMf/7z7/znP/9OkpSXl6dt27Y58MC++c53vp+tttp6jd+TkBkAAACgkerfv3/Nnw8+ePVXSQAAAMsrLf3kTkDV1UtXOWbZvtLSVT+lePvtu6Rz5+0zceL4dOu2Y2bNmpkf//inn7n+2LGf3GK7b9+Dltu+wQats+++/5MHH7w/jzzycHr06LnCa/v06Z/zzrvgM9f4ooTMAA1c69brp0mTsqKuUVlZlfnzFxZ1DQAAoDj+9a9/paKiItttt12SZN68ebn44ovzn//8J7vsskvOOuusz3wOHAAArItatGiZJFmwYMEqx8yfP3+5sasycOAhGTbskgwbdkmaNm2WAw7ou9rx7777bh555KEkyc9/fk5+/vNzVjpu7NgxKw2Zi03IDNDANWlSltsm/W9R1/h2365FnR8AACieSy65JKecckpNyDxkyJDMmTMnRx55ZCZOnJhf//rXOf/88+u2SAAAqIc233yLVFRUZMaMGVmwYH422KD1CmP+9a9/Jkm+9KUvrXau/fc/MFdc8dvMmTM7ffr0S8uWqw+lJ0+ekMrKymy/fZd86UudVzrm0UcfztNPP5m33nozHTtuWtibWkuEzAAAUM+0bLVemjUtXqu+tHJxSptUFG1+AOqXV155JXvssUeS5L333svf/va3TJgwIVtttVV69OiRb37zm0JmAABYiaZNm6Znz96ZPHlChg+/PEOGDE1JSUnN/jlzZmfEiFuSrHhL6//WvHnz/Pa3V2bBgvnZfvsun7n2+PFjkyRnnnnOKp/dfN11V+emm/6QcePuyoknnlLgu1o7hMwAAFDPNGtanv4/Hle0+SdcNiCvXnxo0eZPkq2H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vJKzzz477733Xlq1apVhw4Zl6623zuDBg3Paaadlxx13TFVVVS688MI89thjSZLBgwfnyCOPrI3yAADWmH4HAGjM9DoAAMAytRYyAwAAAAAAANDw1crtsgEAAAAAAABoHITMAAAAAAAAABRMyAwAAAAAAABAwYTMAAAAAAAAABRMyAwAAAAAAABAwYTMtaRHjx7597//nST56KOPcswxx+Scc85JVVVVzZijjz46O+64Y+bPn1+z7Yknnkjnzp0zbNiw2i650aisrMzvfve79O7dO3379s2BBx6YSy+9NJWVlUVf+9PHfXX++Mc/Zu7cuUWvpyG4++67M3DgwAwYMCAHHHBAfvzjHydJBgwYkI8//niN5i70eKxLevTokQMOOCAHHXRQevXqlRNPPDFTpkxJkowZMyZ77LFHBgwYkAEDBuTggw/O448/niSprq7OFVdckb59++aggw5Knz59ctNNN9XM+/bbb+enP/1pvvGNb6Rfv34ZOHBg7rjjjuXWPv3007P33nuv8Hexc+fOOfbYY1fY9uGHHxbjW1AnVvbf4iGHHJInn3wyw4cPz957752BAwemd+/eOfTQQ3PLLbcs9/Oic+fO6d+/f83fk9/+9rc1+5544okcfvjhGTBgQA488MB85zvfydKlS5N8ctxuvvnm9O3bN3369MkBBxyQn/3sZ3nvvfdqXv/www+nc+fOue+++5ar7+yzz86OO+6Yt956a7ltI0aMWKvfGxouvU7d0u80LPqd2qXfqRv6HRoj/U7d0es0PPqd2qPXqTv6HWBdV17XBaxr3n///Rx33HHp2rVrhgwZkpKSkuX2b7vttpk0aVK+/e1vJ0nuuuuudO3atS5KbTTOOeecLFq0KKNHj06LFi1SWVmZMWPGZPHixWnSpEldl5ckueWWW/LVr341bdq0qetS6tScOXNywQUX5K677kqHDh1SXV2dqVOnJknGjRtXx9U1XldccUW22267JMlf/vKXHHfccbnhhhuSJF/96ldzxRVXJPmkOb3wwgtz991355577snjjz+eMWPGpGnTplm8eHFmzJiR5JOTLUcddVQOOeSQXHrppSktLc17772XyZMn16w5f/78PP7449lqq63y4IMPZv/991+upldffTVPPfVU9txzz9r4FtQ7AwcOzFlnnZUkef3113PmmWdmxowZ+dnPflYz5vbbb0/z5s3z0UcfpW/fvunRo0e6du2a0047Lbfccku23377JMmLL75Y87Pm8ssvz9NPP52bb745bdu2zdKlS3PfffdlwYIFadWqVZJk9OjR2WuvvXLnnXemZ8+ey9XVrl27DB8+PL/85S9r49tAA6XXqRv6nYZDv1M39Dv1j36Hhky/U/v0Og2Lfqf26XXqJ/0O0NgJmWvR3Llz89Of/jT77bdfTj/99JWOOfjggzNu3Lh8+9vfzocffpgpU6akT58+Wbx4cc2Y66+/Pvfee2+qqqrSvn37/OIXv0i7du3y+OOP5/LLL8+iRYtSVVWVE044IX379k3yySdpu3Xrlueeey5z5szJgQcemJ/85CdJkiuvvDITJ05M06ZNU1JSkltuuaXmh1FDN23atNx33315+OGH06JFiyRJkyZNcuSRR6aqqirDhg3L3/72tyTJ1772tfzkJz9JWVlZzj777FRUVGTatGl5/fXX06tXr+y3334ZPnx4Zs2ale9+97v57ne/m+STT6z17ds3U6ZMyZw5c/Ld7343Rx111Aq1zJkzJxdddFHeeuutLFq0KH379s0JJ5yQa665JnPmzMlpp52Wpk2b5rLLLsvmm2+e3/72t3n66adTWVmZ7bbbLueff36aN29ee9+8OvDOO++kvLw8rVu3TpKUlJSkS5cuST75ZN+UKVPSvHnz9OjRIwMGDMjf//73vP322/nBD35Q8z1/5plncsEFFyRJvvKVr+T+++/PddddV9NoL7Oq47Gu23///fPPf/4zN9xwQ7p3777cvvfffz8bbLBBkmT27NnZcMMNU1FRkSSpqKjItttumySZOHFiWrduneOPP77mta1atco3v/nNmq/Hjx+fr3/969l3330zevToFX4ROfXUU/Ob3/wmt99+ezHeZoPSqVOnXHzxxTnooINy+umnp2XLlsvt/+ijj7JkyZK0bNkyH374YRYuXJi2bdvW7N9hhx2SJB9++GFuuummjB07tmZ/aWnpct/7d999N48//njuvvvu9O3bN2+//XbatWtXs/+b3/xmRowYkf/7v/+rOd7waXqduqHfaVj0O3VPv1P/6HdoSPQ7tU+v0/Dod+qWXqd+0u8AjZGQuRb98Ic/zKBBg1b5S0jyyQ+bioqKvPLKK3nuuefSs2fPlJeX1/wiMm7cuMyYMSN33HFHSktL86c//SmXXnppLrvssuywww7505/+lLKysrzzzjs55JBDsu+++9Y0DjNnzsxtt92WDz/8MD179sxhhx2WDTfcMDfccEMef/zxNGvWLB988EGaNWtWK9+P2vDiiy9miy22qPkefNrIkSPz0ksvZcyYMUmSwYMHZ+TIkRk0aFCS5D//+U9uvvnmVFVVpUePHnn//fczYsSIvP322znggANy2GGH1fxi8M477+S2227LO++8k4EDB2aPPfao+ZTZMmeddVZOOumkfPnLX87ixYvzve99LzvuuGNOPPHEjBo1arlPHF599dVp2bJl7rzzziTJr3/96/z+97/PGWecUbTvVX2w/fbbZ6eddkr37t3zla98JbvttlsGDBiQDTfccIWxH3/8cUaOHJk33ngj/fv3z8EHH5wmTZrkRz/6UX7zm99kjz32yF//+tfceuutK11rVcdjn332KfbbrPd23nnnPPDAA+nevXv+/ve/Z8CAAVm4cGHmzZuX6667LknSp0+f/PnPf87++++fPfbYI3vttVf69u2b8vLy/O///m922mmn1a4xZsyYnHXWWdl1111zySWXZPbs2Wnfvn3N/v333z+33XZb7rvvvhU+bdlYLDv5sMy0adNWOXabbbZJs2bN8tprr9V8b5f9Yjd9+vR861vfytZbb50kOeKII7L//vtnzz33zG677Zb+/funQ4cOeeWVV1JRUVEzbmXGjRuX/fbbL23btk2vXr0yduzYDB48uGb/+uuvn+OPPz6//e1vc9VVV63J26eR0uvUDf1Ow6LfqR/0O7VDv0NjpN+pfXqdhke/U/f0OrVHvwOsy4TMtejrX/96Jk+enG9961vZeOONVzlu4MCBueuuu/L888/n5z//ee69996afQ888ED+9a9/5eCDD06SVFVV1XyKc968eTn33HMzffr0lJWVZcGCBXnttdeyyy67JEkOOOCAlJaWpmXLltlmm20yY8aMdOrUKVtttVXOPPPMfO1rX0v37t1r5mvsHn/88Rx88ME1n9Y75JBDct9999X8ItKzZ8+afVtttVW+/vWvp7S0NO3bt0+rVq0ya9asbLPNNkmSww47LEnStm3bdO/ePU899dRyv4gsXLgwTz31VObNm1ez7cMPP8wrr7yy0qb3gQceyAcffFBz7BcvXrzCLzaNUWlpaa6++ur8+9//ztNPP5377rsvN9xwQyZMmLDC2D59+iRJNttss5rjUVlZmWbNmmWPPfZIkvTq1Wuln9z+vMdjXVNdXV3z50/fUunJJ5/Mj370o9x7773ZeOONM2nSpDz33HN59tlnc+2112b8+PG54YYblnv9yrz44ot57733stdee6WkpCS9evXKuHHjctxxxy037sc//nEuvvji9OjRY+2/yXrg0ycfkk/+Dfo8lt1O6b333st3v/vdml/azjvvvHz/+9/PE088kUceeSTXXXddRo8e/ZnHJfnkF8RzzjknySdXXwwZMmS5X0KST37Juemmm/L8889/rnpZN+h16h/9Tv2j36kf9Du1Q79DY6TfqV/0OvWTfqfu6XVqj34HWJcJmWvRsccemwcffDBHH310TjjhhPzxj39MkvTv3z/HHntszbgDDzwwffv2Tdu2bbPddtst94tIdXV1TjzxxJrG99POP//89OjRI1deeWVKSkrSu3fvLFq0qGb/pz9RVVZWlqqqqpSVleWOO+7IlClT8sQTT+SQQw7JH/7wh0bT9O6www6ZPn16FixYsMInXqurq1d4btKnv/7v79fKvn8rs7J5ly5dmpKSktx5550FPSuouro6Q4cOzd577/2ZYxuj7bbbLtttt12+/e1vp0+fPnnqqadWGLOq4/Hf3/uV+bzHY13zwgsv5Etf+tIK27/yla9kyZIl+c9//pOddtop5eXl2WOPPbLHHnvk0EMPzT777JP58+enW7duGT169Crnv/POO/Pee+/lG9/4RpJPftFu3rz5Cr+I7L333mnbtm3Gjx+/dt9gA/Tqq6/m448/XumnVFu1apWvfvWreeyxx2o+GdypU6d06tQphx9+eM3PniOOOCKLFi3Ka6+9lq222mqFeV544YW88sorGTJkSM22OXPmZMqUKdltt91qtjVp0iSnnnpqLrvssnTs2LEI75aGTK9TN/Q7DZN+p27pd+of/Q4NhX6n9ul1Gi79Tt3R69RP+h2gsSmt6wLWNccff3wOPvjgXHvttbn++uszbty45X4JSZLmzZvnpz/9ac4666wVXt+jR4/86U9/yoIFC5J88gN86tSpST55psamm26akpKSPPbYY5k+ffpn1vPBBx9k3rx52XPP/397dxpUZdnHcfzHIqCAuaYoPgMyE6WZkLhmOqIwMAqimCOOmKYhljIKzmRW5pKiuSaailbgMjalg7sziJgrWtqZ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\n",
"text/plain": [
"<Figure size 1728x576 with 3 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plot_scores(\n",
" pd.concat([buildings_raw_results_long, buildings_pca_results_long, buildings_umap_results_long]),\n",
" score_types=(\"ARI\", \"AMI\", \"Silhouette\")\n",
")"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "c88ba3ae",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python [conda env:anaconda3-docmap]",
"language": "python",
"name": "conda-env-anaconda3-docmap-py"
},
"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.8.8"
}
},
"nbformat": 4,
"nbformat_minor": 5
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment