diff --git a/wyk/3a_Uczenie_nienadzorowane.ipynb b/wyk/3a_Uczenie_nienadzorowane.ipynb new file mode 100644 index 0000000..6353e93 --- /dev/null +++ b/wyk/3a_Uczenie_nienadzorowane.ipynb @@ -0,0 +1,819 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "### AITech — Uczenie maszynowe\n", + "# 7. Uczenie nienadzorowane" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "notes" + } + }, + "source": [ + "Wyobraźmy sobie, że mamy następujący problem:\n", + "\n", + "Mamy zbiór okazów roślin i dysponujemy pewnymi danymi na ich temat (długość płatków kwiatów, ich szerokość itp.), ale zupełnie **nie wiemy**, do jakich gatunków one należą (nie wiemy nawet, ile jest tych gatunków).\n", + "\n", + "Chcemy automatycznie podzielić zbiór posiadanych okazów na nie więcej niż $k$ grup (klastrów) ($k$ ustalamy z góry), czyli dokonać **grupowania (klastrowania)** zbioru przykładów.\n", + "\n", + "Jest to zagadnienie z kategorii uczenia nienadzorowanego.\n", + "\n", + "W celu jego rozwiązania użyjemy algorytmu $k$ średnich." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "## 7.1. Algorytm $k$ średnich" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "slideshow": { + "slide_type": "notes" + } + }, + "outputs": [], + "source": [ + "# Przydatne importy\n", + "\n", + "import ipywidgets as widgets\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "import pandas\n", + "import random\n", + "import seaborn\n", + "\n", + "%matplotlib inline" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "slideshow": { + "slide_type": "notes" + } + }, + "outputs": [], + "source": [ + "# Wczytanie danych (gatunki kosaćców)\n", + "\n", + "data_iris_raw = pandas.read_csv('iris.csv')\n", + "data_iris = pandas.DataFrame()\n", + "data_iris['x1'] = data_iris_raw['sl']\n", + "data_iris['x2'] = data_iris_raw['sw']\n", + "data_iris['x3'] = data_iris_raw['pl']\n", + "data_iris['x4'] = data_iris_raw['sw']\n", + "\n", + "# Nie używamy w ogóle kolumny ostatniej kolumny (\"Gatunek\"), \n", + "# ponieważ chcemy dokonać uczenia nienadzorowanego.\n", + "# Przyjmujemy, że w ogóle nie dysponujemy danymi na temat gatunku,\n", + "# mamy tylko 150 nieznanych roślin.\n", + "\n", + "X = data_iris.values\n", + "Xs = data_iris.values[:, 2:4]" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": { + "slideshow": { + "slide_type": "notes" + } + }, + "outputs": [], + "source": [ + "# Wykres danych\n", + "def plot_unlabeled_data(X, col1=0, col2=1, x1label=r'$x_1$', x2label=r'$x_2$'): \n", + " fig = plt.figure(figsize=(16*.7, 9*.7))\n", + " ax = fig.add_subplot(111)\n", + " fig.subplots_adjust(left=0.1, right=0.9, bottom=0.1, top=0.9)\n", + " X1 = X[:, col1].tolist()\n", + " X2 = X[:, col2].tolist()\n", + " ax.scatter(X1, X2, c='k', marker='o', s=50, label='Dane')\n", + " ax.set_xlabel(x1label)\n", + " ax.set_ylabel(x2label)\n", + " ax.margins(.05, .05)\n", + " return fig" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": { + "slideshow": { + "slide_type": "notes" + } + }, + "outputs": [], + "source": [ + "# Przygotowanie interaktywnego wykresu\n", + "\n", + "dropdown_arg1 = widgets.Dropdown(options=[0, 1, 2, 3], value=2, description='arg1')\n", + "dropdown_arg2 = widgets.Dropdown(options=[0, 1, 2, 3], value=3, description='arg2')\n", + "\n", + "def interactive_unlabeled_data(arg1, arg2):\n", + " fig = plot_unlabeled_data(\n", + " X, col1=arg1, col2=arg2, x1label='$x_{}$'.format(arg1), x2label='$x_{}$'.format(arg2))" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "1f6d6588f31343a8954f9a91a2971507", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "interactive(children=(Dropdown(description='arg1', index=2, options=(0, 1, 2, 3), value=2), Dropdown(descripti…" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "widgets.interact(interactive_unlabeled_data, arg1=dropdown_arg1, arg2=dropdown_arg2)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "notes" + } + }, + "source": [ + "Powyższy wykres przedstawia surowe dane.\n", + "Ponieważ nasze obserwacje mają 4 współrzędne, na płaskim wykresie możemy przedstawić tylko dwie z nich.\n", + "\n", + "Dlatego powyższy wykres umożliwia wybór dwóch współrzędnych, na które chcemy rzutować.\n", + "\n", + "Wszystkie takie „rzuty” przedstawia również wykres poniżej." + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "slideshow": { + "slide_type": "skip" + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAu0AAAG8CAYAAABqhJuoAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nOyde3gV1bn/v2tmX7JzkYSQIBJAoQiNNAhBDVAvlVOqR9SHgmgFUVQS5BT762kVz+nhpz3U5yeixx5rubaKIlYQ9Nji4+14RE8RFAKVaiSlCBhQSYiJ5rKzb7N+f+zMZF9mzd6T7Mvsvd/P8+xHmcuaNWtmvbPyrnd9X8Y5B0EQBEEQBEEQ1kVKdwUIgiAIgiAIgjCGBu0EQRAEQRAEYXFo0E4QBEEQBEEQFocG7QRBEARBEARhcWjQThAEQRAEQRAWhwbtBEEQBEEQBGFxkjpoZ4z9lDH2MWPsI8bYHxhjecm8HkEQBEEQBEFkI0kbtDPGhgO4G8AUzvkEADKAm5J1PYIgCIIgCILIVpIdHmMD4GKM2QDkA/jc6OCrrrqKA6Af/dL1Swr0XtMvzb+kQe82/dL8Swr0XtMvzT8hNqOdA4Fzfoox9giAzwC4AbzBOX/D6JwzZ84kqzoEkTbovc4eFIWjtcsLrz8Ah01GaYEDksTSXa20Qe82EQ+Z1m/ovc4eMu3di0XSBu2MsRIA1wM4D0A7gBcYYws4589GHFcLoBYARo4cmazqEERKofc6+1AUjsbTHVj8zH6cbHOjosSFjQunYNzQooz+CJiF3m3CDJnSb+i9zj4y5d0zQzLDY/4BwDHOeQvn3AfgRQDTIg/inG/gnE/hnE8pKytLYnUIInXQe519tHZ5NeMPACfb3Fj8zH60dnnTXLPUQu82YYZM6Tf0XmcfmfLumSFpnnYEw2JqGGP5CIbHzACwP4nXsxTn3vdKv847/tA1Ca4JQRCJwOsPaMZf5WSbG15/IE01IgjrQ/2GSBfZ+O4lzdPOOX8fwHYABwD8tfdaG5J1PYIgiGTisMmoKHGFbasoccFhk9NUI4KwPtRviHSRje9eMj3t4JzfD+D+ZF6DIIjEYHbBTrKPtxqlBQ48c/vFONHajXyHjG5vAKNK81Fa4Eh31Qgi7Yj6d2mBAxsXTomKKw7tN36/guZOD3wBBXZZQnmhE5LEMtpepAKy2cZko81O6qCdSC0UkkP0F7MLdpJ9vFXx+BWsePmjsHsgiFwnVv8eN7QILy2drjv48/sVHD7dgSXP1mvnblp0EXx+jsWbM9teJBOy2fGRbTY72TrtBEFkAGYX7PTn+MfebMSKWZXYWluDFbMq8dibjRm1ICgbFzURRCKI1TckiaGsyInhJfkoKwp60RWFo6XDg1Nfu9HS4UFZoVM7t+krtzZg1yuPIJsdD9los8nTThCE6QU7Zo9XFAW3TjsPy3cc0jweq+ZUQVGUxNxACsjGRU0EkQjM24NoL+6qOVV45PVGHGxqR75Dpr4WA7LZsclGm02edoIgTC/YMXt8gEMz/kDQcC7fcQgBw9xv1iIbFzURRCIw2zf0PKDLdxzCkivGAAC6vQHqazEgmx2bbLTZNGgnCEJbLKYaOL3FYgM5nnOu6/HgPHO+AGbvmSByBbN9Q+QBLXbZUVHiwojBLmy8hfqaEWSzY5ONNpvCYwiCiLlYbKDHqx6P0I9Apnk8zN4zQeQKibIHw0tc2FY3VVOPob4mhmx2bLLRZpOnnSAIAPqLxRJFtng8ktlGBJEriOzBOYNcOKfYBZtNor4WB2SzY5Nt7xF52gmCMI1ZObBs9HgQBBGE7IH1oWeUHZCnnSAI0xhJaWlSbm3daOnwQFGCMZDZ5vEgCCKIyB60u726tgAge5BqyGZnB+RpJwjCNKKFZIqiZEVCDoIg4kfPHpQVOvFFew/qQpImkS1IH2Szs4OsH7T3N0soQJlCCUKEaJFSgEPXm/PS0ukoLXBYKoV2pqfoJohUotdfgKAHN8A5nq+tAeccEmNod/swyGXXBuxAuC0oK3Km81Zykmyw2am6hpXJ+kE7QRCJR12kFOmdEcmEef0BS6XQzpYU3QSRCvT6yzO3XwyPXwnbtnpuFR569TBaOj3YfMfFWZfYJpPJdJudqmtYHYppJwjCNKGLlHYv/x5eWjod44YWCZNZMMaSmnLbLNmY3pogkoVefznR2h217Z7twQRJJ9vcOH6mO+sS22QymW6zU3UNq0OedoIg+oW6SCkUkTdHZsEY1xWzKlHssqPd7cO6XUcTlnLbLNmY3pogkkVkf5k0ohgjBrt0+1Cxyw4AePytI1i/oDoqpj3TJAOziUy22am6htVJ2qCdMTYOwNaQTaMB/F/O+a+TdU2CINKLSCas3e3FvVeNwz3bD4VNpbscxim3k5XYIxsShxBEqgjtL5NGFOPnPxiHpq/cun2o3e0DALR0ejCsOI8kAy1OptjsVF3D6iQtPIZz3sg5v5BzfiGAagDdAF5K1vUIgrAGejJhfoVrxh/om0r3K/opsZOd2CNbEocQuY1Iqi/RhPaXJVeMwfIdh/D4W0ewak5VWB9aPbcK63Yd1fpTsctBkoEZQCbY7FRdw+qkKjxmBoCjnPMTKboeQRAWwudXdKc1fX5FeI7TJmHl9ROQ75DR7Q3AaUucj4EShxCZTioX5YX2l26vHyfb3DjZ5sYjrzdq4RMVJS64HDKeuHkS9acswGo2GyC7DaRuIepNAP6QomsRBGExRIudHDYZPl8Ap9q6caK1C6fauuHzBdDa5cVDr34CbyD4gfAGFDz06icJXXBEiUOITEa0KO9MlyfK+x7LI2+0X933xdfB67gcfX35YFM76jbX42cvfAiHTcbgAupP2YIVbTZAdjvpnnbGmAPAdQD+RbC/FkAtAIwcOTLZ1SGIlEDvdTiixU6DnDION3firpDFamsXVGN4sRO3TjsPy3f0xVOumlMFRRF7eYjUQO+2NRAtyuv2BLDg9+8bSjOGeuSNPPYAdKUe9fpypoco0HsdDtlsa5KK8JirARzgnJ/W28k53wBgAwBMmTIlOQF5BJFicuG9NpPkQpIYxpYVYlvdVPgCCuyyhPJCJ0539GjGHwgOOu56th5ba2vw9HvHwpQLnn7vGB64bkIqb5HQIRfe7UxAtCjv2JmuKGnGFS9/JExyJPLYb6ubijy7FLVv4ZMfYOey6VF9OdM9nrnwXpPNznxSMWj/ESg0hiCyCrPxtIrCcaSlM+r4fIes6y0MKFzXayNn9riAIBKGnid07fzJ+L8vfxx2nKiPqTJ5Io/95+1uuOwyygqdYfvLCp041dYTJeWYSwluMhGy2dlBUmPaGWP5AL4P4MVkXocgiNRiNsmF6HibxHTjJmWJacZfPX75jkMIZKX/iyDME7oo7917v4eV109Ap8ePlk5P2HHd3oBhkiNR7HJrlxd1z9bj7hljw/bdPWOsNmAHcjPBTSZCNjs7SKqnnXPeDaA0mdcgCMIcZqZIRZhNciE63iYxrF1QHRUfKUtM93jOOfx+Bc2dnrApW1uCVQoIwirE018551i0aR8mjSjGqjlV2uBpZmU5vlVeiGfvuATHznTh8beOoKzIgX+7phJefwAtHR6UuOxRHvtVc6rwyOuNONnmxtihhXjqtotQnG9HUZ4d+Q4p5xPcpBqy2YQKZUQliBwiUTJxZpNc2GVJ93iAobTQjj8sroHCOSTGIMuAxJju8XkOCYdPd2BJyAdj3YJqjB9aRB8BIuuId5HoilmVqChx4WBTuybDWFHiAjjwo417tXPX31INp03Czb97P6w8NXb583Y3Wru8eOT1RhxsasfMynK0d/u0mPiKEhd+e/NkzKwsxxsNzVo9cy3BTSohm02EQi1GEDmE2SlSEUZJLkTycavnRidiATjmrduLSx9+G5ev3oVLH34b89btBedct3yvj2vGX63/kmfr0RwREkAQ2UBrlxePvRkchG+trcGKWZV47M1GtLu9+PKbHnR5/FgxqxJvNZzWEh0dbGrHyp0NKHLaosJY6jbXo+krd1T/b3P7cPZZeShw2rByZwMONrWjosSFf/3Hyqj+9k/PHcB9V387pxPcpBKy2UQo5GkniBzC7BSpCFGSCyBaIm7jwikY5LLh4dcaw5QFHn6tEb++6ULd+vT4Fd3ym9q6dY/3B0hWjMg+FEWJWtz3xM2T8MXXPajb3Oe5XDWnCi8fPIUVsyrx7bOL4HLYhH09PyINvdr/1T69tbYGJ9vcaHf7wMF1y/ja7Qu7Vq4luEklZLOJUGjQTuDc+17p97nHH7omgTUhko3ZKVKziLxCW2trUFYU7okrK3Joi5oi62MTDABEU7Y2mSYNiewjwBG1uK+tyxcl4bh8xyGsmFWJlTsbNCnHlg6Pbl/hANbfUq0NxHbUN4X1f8YY5N7+xzl0yyh02rB219/x4OwqlBU5U9ASuQvZbCIUajWCyCGMpkjNoMZZzl6zG9NXvY3Za3aj8XSH0CskScCyGedj5c4G3LhhL1bubMCyGeejME/C2gXVYfVZu6AaZQUO3fLLChxYF3H8ugXVKC+kgQORfXAe7ekuzrfr9rGzz8oL68t6ff3XN16IwQX2sH5494zzUeKya3163vo9mLtuD1bubECXx4+18yeHlbFqThVWv35YO49ILmSziVDI004QOYRoitTs1LZRQhY9r4qiQJiQY3x5IbbW1sCvcNgkhvJCJ9p7/Lrlv7R0OsYPLcK2uqnwBxTYSImAyGL0vKxFeXbdPjak0IFhg1xaX1b7eugCU19Awe2bwvvVkmfr8dLS6QAQ1efu2nIAL941DVtra/DF1z1hi1QbvujQvPpE8iCbTYRCg3aCyDEkiZn60OrJjXn9AUwbXYrFl42GLDEEFI6N734KmUE39bVf0Y+N9SscsiwFp3p7y5dlSVi+1x+AzebEOcUuQW0JIvMJ7XPP3XkJfvVKA1o6vLh7xljkOyT89ubJ+KfnDoTFtNskFjWQkyQGzjnmrtsDAFq8eign29xwe/1Bu1DoxIpZlRg12IV8px0BRYEvoIADWhmh55HMY2ogm02o0KCdIAghIrmxc4qdWDB1FBZt2qdtXzN/MvIcEpxeCSuvn4B8h4xubwBOm2QYB2mm/AInycoR2Y1en9u06CJ4/Iq2+HRmZTmeuf1ifO32obnDg6ffO4YHZ1fplhfqrW93+3T74dGWLow7uxD3XjUOT+0+hlunnYc7n+lb6LrlzkuSGldNJA6y2dkNzU8QRIYjkusS4fcr+LzdjROtXfi83Q2/X7yKXyQ519kTwNItB8KmQpduOYDOngAeevUTeHuVAbwBBQ+9+gkK82TdOMh8p6Q7pSoqv9urCOtvth0IwopEhjGUFToBMLi9AayYVYlJI4rxRkMzFj75AZo7PFi5swE/mXE+ZCnYByL7h03m2Fpbg//+58sxanBwIBUZo/74W0fw2Vdu3LP9EOZUj4ha/PrgKw1YH9F/Ny6cghKXnfpcPyCbTTa7v5CnnSAyGLOJN/x+xVSiCz3JuVVzqhAQTJ0GFK57fI9X0Y2DbO70CKdg9bYzcN36jysvxN/PdA04AQlBpJvQhYGTRhTj5z8Yh9ue+iCsP6lx5ePPLsLK6yfg3/7rI7R0evCHxZfga7c/rH+snT8ZdhvDnU/3eem33HkJvuryornDo5XFEOxj5UXOqL73RkMzfnndBWFx1SUuO460dFKfMwnZbLLZA4EG7RZjIPKLRHajF6coWlwkWiDW3OnRTXSxrW6qbsyhnuTc8h2HsLW2RnfqVJaY7vHb6qbCbpcxvCQ/rHyRnJloalbh0K3/1toazbukStk99mYjSdIRGUdon1hyxRitP00aUYwlV4yB0ybh4blBBZdPW7qwaNM+7VyPPzqRzV1bDmDToou1bW80NKPhiw6svH4C6jbXAwj+cVBa6NTkHEV9L7QvtXR4TNmeXIRsNtnsREPhMQSRAYjkuhRF0fVuiBaI+QL6x4sSXehJzp1sc0NiiJpmXzN/MiQJusdzrj/tKZIzKy906sqEBQT1Ub1FofJkt047D4pCCTyIzKLEZdfe/WKXXRuw//wH47ByZwPmrtuDRZv2YdmM8/HqX78IO1di+v0v0nF5ss2Nc4cUoKLEhUkjinHvVePw8GufYNWcKngDipZdFegLoYksI1FJf7IVstlks5NBvzztjLHvc87fTHRlCILQx6xcl2iBmNlEFyKvisKBVz48haduu0hTCti+/zMsnHae7vGM6U93GsmZ6cmENXfqJ4wx8hYRRCbR5vbh8bf+hhWzKlFeFPR+h3rcgT75vZXXT8C2+pPauYogGVJkqHBFiQsFDhnb6qZC4Rw3bdiLk21utHR48fDcKjz93rEwD+jT7x3DA9dNCCsj2Ul/Mh2y2WSzk0F/Pe2/T2gtCIIwROTV4pybSrwh8oaUFzp1FwWJvCpOm4RZE4f3fuiDMY6zJg6HXWa6XjqZiRdTqXJmw0vyUVbk1OIZbTYJ5xS7MLK0AOcUu2CzScL6yxIz5S0iiHQjWoTn9QfwRkMz6jbX45+3fYhVc6pQWuDQfb9HlxXgf+/9Hv733ivw3/98OfLsLCoZ0tr5k+FXAlF9eEhhUIZPjWUHgINN7bh3+yHc8d3RUQmYIpPhJCrpT7ZCNptsdjIQetoZY38U7QJQmpzqEAShh5FXa9xQV9yJN2w2SdcbIglkvMYNLdL1qnzT4wUALZ26OjgAY7peuv/3w++YWkwlQlT/NoGUHXn9CCtitBgxtK8fbGrHI683YvUNE3Xf78NfdmDlzgasmhP0ji+7ciw++fxrzZtqlyU4bQycA9vqpoJzHmUj9GxLnj1cAjDfIetqwCci6U+2QjbbuP5ks/sHE/1VwxhrA7AAQGfkLgBbOedDYxbOWDGA3wGYAIADuJ1zvkd0/JQpU/j+/fvjrHp8DGRh5/GHrknLdTOJgbSRBUnK1yYR77WicDR+2YHFm0MM9C1TMO7sxKy0b+nwYPaa3VEG9KWl07XFU6EfgC+/6cG89Xuijt9WNxUnWrtwz/Y+JYLVc6swqrRAeHwikm4oCsfx1i6caO3WBhqjSvNxbmkBDSKS9F4DybHZuUCs/hY5GHvm9ovh8Slh/f/RGybioVcP42BTOypKXHjoh9+BL8Bx3pACHDvThZICO57b+xmu/s4wjCkvgE2SIDNAkqSwQWLkHxBP3XaRNrCLrJsFFwiSzSabnY0IG8Aopn0vgG7O+TtRpTHWGOeF/xPAa5zzuYwxB4D8WCdYiVwZeBPWR1E47DYW5v2y2xgUhSfEwBktKtPz5uQ7ZN3jfQEFD78Wrgjw8GuN+M+bLjS1mKo/ePxKmBdp48IpCSubIBKJUX/T82AX59lwoq07PAGOXQo7d1ixC7c+2ScN+esbL8TNNSPx4+cOattUj/xPvz9Ok9aLvJ5o4SAtMDUH2ezYkM02j3DQzjm/GgAYY5Wc84aI3f83VsGMsbMAXAbgtt7yvAC8/a4pQeQwzZ0e3PbUvqR5PURTuYwx3cVUIvkwm8TQ0unRpOTU7bLEMLOyHHOqR2gfhh31TZANPl56cmmij51ZGTWCSCeM6cvjSYyhpcOjvfPDBrkgSQyft7t1+/+KWZWo21yPihIXWjo8YQOvDe8exY8uHqWpz6hykff8YDxWv344TFpPjVEGgh5cClsYOGSzyWYng3gCk7YxxpazIC7G2G8A/L84zhsNoAXAU4yxg4yx3zHGCiIPYozVMsb2M8b2t7S0mKw+QViTRL/XZmW/zCJavCQLJOScNkl3cZHLIekuasqzS1g24/ywxW3LZpwPl0PfBInl0vTD+Uh+LnWQzR44MkNUP3n0hono8vp133lR/y922YOxyQuqg3HoEfJ5QwodunKRRtJ6ubrAlGw22exMIB7Jx0sArALwHoAiAFsATI+z7MkAlnHO32eM/SeA+wCsCD2Ic74BwAYgGEcWf9UJwrok+r02K/tlFtGistYur+51OfTlvdp6FzFFLmq6/9oLcFdk0pfeBBuI+lPevBeG5OdSB9nsgSNJUlQ/kRgL88yGvvOi/j+8xIWttTWwSQxz1u0JO3f5jkPYtOhiXblII2m9XF1gSjabbHYmEM+g3QfADcAFIA/AMc55PH8qngRwknP+fu+/tyM4aCcIwiSqbFbkSv5IGbZEU1rgwItLp8Lr5wgoHLLE4LAxzetmlyVwzmGXJUhScPtPvz8uKp5SlOI6kCAvjOp1irxuur2DZqaLsxlqhz4UhYOD41//sRLHznThoVcPo6XTg813XCx854cW5en2/7OL8mCzSTjV1q17rl1mQrlII2m90HAZon+QzSabnQziGbTvA/AygIsQlHpczxibyzmfa3QS5/xLxlgTY2wc57wRwAwAkbHxBEHEgUg2y4z0lhEiCbrRg/Nx+huv5nFRp+IHOez49KvuuOXGvvymx5TXyawXxoreQSNZPyt9BJINtUMfem2xdv5k9PgUMOjHuTtscsz+L+ovLoeM4SUu3X32BHl8CX3IZpPNTgZCyUftAMamcM73R2y7hXO+OWbhjF2IoOSjA8CnABZxzttEx1tN8pGIDUk+xsZqsnh6noTWLq+ufNjW2hrc2JstMXL7M+8dw9wpI8Oy69152bd05cYUheP4V11o+sqtKSmMGOzCuYMLdD9iVjWeZrwwRpJsifJixlmftEo+xmoHvXsAYGlvlx7xPAtRW6yYVYkd9U34l3/8NgIKILFgdlOnjWF4cT4kiRmWL+ovY8sK0dzRA7dfwWet3Xj8rSNo6fRg9dwqjB5SgKGDBr4gMs2QzSabbUi22eyYnvbIAXvvtpgD9t7j/gKANHwIwiKIDOvgfLv+oinBFKlf4bhm4nAs2rRPK2fN/MmQJfHgwefn4fJet0wRGs9s8MIke6GVVT+SkRi1g949PHP7xfD4FcvfVyjxPgtRWxS77Ch2OdDpCYR5SNctqMaws4KONaPy9fpLicuOIy2dUV79To8fD7/WiF/fdGFK24joH2Sz+0822myaHyOIHEK0WMivcE09QEWVAxNtf+J/jmDFrEpsra3BilmVeOJ/jsDtVXTLb+70aElGtO2b96O1S6wCK0qVnS5EbSe6B3W6OJRELrQyW590YdQOevdworU7I+4rlND7mDSiGCtmVaLL48eX3/SEqWeI2mJwgQPLZoyNWvi35Nl6NHd60NrlxWNvNob1t8febAxrE7W/DOv1nn/+jRtfft2Dst4Y6pNtbty15QC+6fGjpdMDm0X/ACLCIZvdf7LRZtOgnSByCJEnIcC5ruxXkUvC2giZsLULqpHvkHDrtPOiJOaYQG5MJH+WSfJe/V1olSzpvEyRTDNqB717ECWBsdp9haLeR6S84rz1e8Jk70pc9ijZvTXzJ2P164cNJQIVRdHtb5GyjaGye5c9vAsrXv4IP//BOEwaUayVV1rgwNoULIgkEgPZ7P6TjTY7noWoBEFkCaKkLjJjurJfD1w3AcdbvsHztTWaEsHBE60YnF+qKyNnlMBDb3smYbWFVpkimWbUDnr30O0NZMR9haLeh568YqjsXZvbh8ff+htWzKpEeZETZUVO/PufPsYbDc245wfj9fumxBDgiEu2Uc+Tt3zHobAkTMMG5aG80Am73brtSfRBNrv/ZKPNJk87QWQ4isLR0uHBqbZutHR4NK+e36/g83Y3TrR24fN2N/x+BTIDHr1hYpgn4dEbJsImMdx39bfh6FUGcMgS7rv62+CcY9nzh/DdVW/j8tW78N1Vb2PZ84eEqc4VgffHLjPd7amYPRW1j1n644UxO11spq6ZlAQnMnTji6/d+KrLA845nr3jEjx120WYNKIYFSUujCrNz5j7UlGfRaS8ohoq4wsE8Hm7G26vH3OqR2DdrqP4w/ufgXPgju+OxvpbqvHaX7/AmvmTo7zwLoeEgKLv9YwUkjCKmVfbcdggFw3Y0wzZ7P63kRmy0WaTp50gMhjRwpZvDSlAY3NnlEbwiMF5wcyJ10/QFAHy7BKcdglfdfvCFx0tnILifLvAC6OfOETWSRqjJuoQeYXS0T79WdSYbC+M2bpaceGXEaH3V1boxL1XjcM92w9p97p+QTWGFeeh2BX8gGXKfQF9zyJUJk8NlXn6vWModJ6neTnVBaEA8KONe7Vtq+ZU4Z3Dzdi06GLYZAafX8HuI82QpSFo/sYTl4dO5MlTFTCs3o65ANns/reRWbudjTY7puRjKiHJx8yDJB9jk0z5MJFElZHsl972bXVTMW/9nqjtLy6dhtZOr66yQKQyhdF20Qdp/NCihOkW+/0Kmjs98AUU2EOy/fVHwstsgg29a5u9ryTKjaVV8lEl9P7W31KNlTsbtMHtkivGoLTAgWGD8jC0KA8ABtye6SD0I75iViVW7mzQ/hv6XJ+67SJtsKVSUeLCyusnIM8u4eHXGtHS6cFzd16Cm3/3PsoKnbjv6vH42QsfGg4OMkVRKIGQzc4ym22zSf2yhblis8nTThAZjGg63Ej2y8yiI59fEXoGzGwHgEEuGzYtujhMgzpRAwm/X8Hh0x1RH5iyQv1skEYLf8wOfETXNvtxy5SFpf0l9P6KXfYwb3SoF3r9gmo47RJue2pf0gYLySL0/e/2+rXQlHgX244pK0Bhng1P3DwJDpustVlZoRPOCG+rU6ctMm32JRchmx3EyG6atYW5ZLOtbQEJgjBEJFFlJPult90uS7rbHTZZGONnZntrlxc/2vg+/uE/3sGVj76Df/iPd/Cjje8nTMavudOjGWCgTy5PJItmtPDHrCyX6NrNnR5T95BsubF0oy6oA4B2t0+4cLPu2Xo0feUecHumC/X9z3fYUFHi0u41FHWxbSgVJcFsk4ML+vpO6ALXHz93EIs27cONG/Zi0aZ9WPjkB7rvpNVk94hwyGYHMbKbZm1hLtnsjBm0n3vfK/36EUQ2I1rYUl7ojJKWW9cr8yY63upSV0aIvE4BhZu+L7N1NZLqM0MmLSztDzKDtrBt3a6jWD23KmrhJhBsu3yHHLXNbHumG/V57qhvilrQN6o0X9g/9coQtVO2zMLkEmSzgxjZTbO2MJdsNoXHEEQGYzTlOX5oEbbVTYU/oMAWErNnduo0ESRbnlD1OkUtvvygS7oAACAASURBVJIljBuab+q+RBJrjOmfY3RtM2R7aIMUseBN4RzDBuXptl23N/xj25/2TDfq83xwdhUURcG2uqngnIelidfrn3plhC5wVcmmWZhcgmx2ECO7afbecslm06CdIDIcdWozEptNwjnF0bq6ouNF280u8NFD9UhExhwmyiOheqkiYxT7k0BG9QiHxlmvmlMFWXDL/bm2qE1FzyAbKC1w4KffHxf2DmxfUoMnb5uCU209Wqz2iMEucED7qA7kWaYbvecZ+ezPPivPsD9JEsPZZ+Ultf8QqYVsNtns/pIx6jEU6mJNSD0mNslUIkg2iVSjSMSHxKjsU+3d8Ph52KKpYWe5dJURjOrf0uHBL146hDnVIzSpsx31TXhwdpXQOKtKBEZe09C6pljhwxLqMUD4OxBQOLq9fnR5A/jJ83/R2uI/b7oQ3yrPR5eHx9WemcRAnn0y+08GQzY7gky32cOL8wHA1D3kks2mQTsxIGjQHhurfQDMGOIkSlr1G736t3Z5dY32A9dNwNO7P8XcKSODmSUVju37P8Odl33LUDpMZKADgV5Dr3DYJNavzJJpaFPLDNpVWjo8+N27f8ct087Dl1/3oLXLi3W7juJgU7smc8cYCwsnAZCyQWuyBitW7E8ZDtnsCKz4jpmx2Q/OrgIA/O7dv8dtt3PJZlN4DEHkEGY9BlaTIRTVv6zQgVunnRc1Peq0MVwzcTgWbeqTD1wzfzIYjJ0VTlu0vJ7fH0BjSxfuCplSXbugGuPLC019BKzWpumAgeOaicNx04bw5EKPvN6Ig03t8AYU3PL7D8KesdMmYeGTHyTd05VMrxo9e8IsuWazFUWBLJm327lis5M6aGeMHQfQASAAwM85n5LM6xFEppBIT56ZskTSWCKPQSIXI5m9Z5F35rE3G8Oy9D32ZiPuv/YCvNt4Gk/ddlGYZ+bc0nws3XIg7H6XbjmArbU1wvq0dnm1wWHoPW+trdGMv1rWXc/WY2ttDYaX5MfdDsle4GVFQtta9aBHPpflOw5piYjskoSnbrsIG9/9FNvqT2LxM/ux8voJcb+3AyGePqL37qjnGr3fufjsswWy2amx2ecNGQ2/XzFlt3PJZqfC0/49zvmZFFyHIDKCRMccJtMLk6jFSGbrKTp+cL5d1zsjSdD1zBglLBHVpz/JT8yQ7AVeVkPvWW658xLdtiwtcGD13Cos+8NBtHR6sGb+ZADAtvqTujKQyfB0xeojoncznpmAXHv22QLZ7NTZbIfM0OUVSDIaXCNXbHbmr+whiAzDbCKI/palKBwtHR6cautGS4cHisJNJ4MIlbTavfx7eGnp9H59qIzq6fMFcKqtGydau3CqrRs+X0B4vF/hUcl4lu84BEWBrmfGKGGJqD79SX5ihkS1aaag9ywlpt+WwwblYf+xr3CwqV17hosvGy2UgUyGpytWHwn1HG6trcGKWZV47M1GnGjtjtmnB/Ls9fozkRrIZqfOZnv8imm7HeDIGZud7EE7B/AGY6yeMVardwBjrJYxtp8xtr+lpSXJ1SGI1GD0XicyPk5UlqIoaDzdgdlrdmP6qrcxe81uNJ7uQHGeTTeBR4nLLrxGIjIsiurJwHG4uRM3btiLy1fvwo0b9uJwcydkSd9DEhB4TkTb7TLDmvmTw+53zfzJsMtM+AxECTPKChxYG9F2a/spUZbJWSvN2my9Z9/jD0QlHFo1pwrtbh8uH1+OedUVAILPRJYYNi6cglGl+VHPJBmerlgJUxRFwa3TzsPKnQ24ccNerNzZgFunnYchheF1EfXp/jx71YsZ2Z9p4J44yGbHV89k2+yAwk3bbc71k+hlo81OdnjMdM7554yxcgBvMsYOc87fDT2Ac74BwAYguGI7yfUhEkx/VX0GojqTjmuaxei9TmR8nKisAIeuR2Jb3VQ8/tbfwuILH3/rb4bSWIlAlPzC41eEMYei5Bd622VJv3xfgOOVD09FxU0unHae8BkYJj8pL8TW2poBKRFkOmZttt47ysDCEi21u314+r1jmFM9Ait3NuCp2y7CtvqTqChxwWmTcG5pAQCkJIlJrIQpAQ5dz+GmRReHlZPImQCzcc2Eechmh5Mum22TJfgVmLbb44a6csJmJ3XQzjn/vPe/zYyxlwBcDOBd47MIIrtJZHycqCzOBbF8AQVvNDTjjYbmsH33X5vcVfAyA564eRLaunza6v6SAjv8CkdZoTPsg7Ru11H4Fa57X2rqbr3tmxZdhKav3GFJesoKHLj2woqwuMnQ1OCiZyBKmGG3y6YWMBH676jTxnDHd0fjZy98GBbn+vLBU1gxqxJ2W3AhasVgF8oLg16tVHqVjRKmiPqWXe4bhCR6JsBK6hW5CNns1Nls1Qtu1m7nis1O2qCdMVYAQOKcd/T+/0wA/56s6xFEppDI1Meislq7vKa8HsleBW+zMfj8Cla8/JFmbB+bNxF5Ngn3XjUO92zvW6S0em4V8mwSRpTkx526W1E4PL7w8tcvqIYkSaZTgxOJJfKZMcZgY0CeXcIfFtfg9DdBnfaXD57C9ZOGhy1YW7+gGoyxdCQ3ESLylLoccsamlCeMIZudOpsdvDbZbRFJS67EGBsN4KXef9oAPMc5f9DoHEquRCSTOMJjsiZRh2iQM7as0HSG0ETwRbsbN6zfE/XheaFuqu72F++ahsH5DjR3euALKLDHyFj3ebsb83TK2VY3VTcteI5hmeRKqlybxx/ATRv2YtroUiyYOgpLtxzQ5B71nqFdliyTMCYdf0BY6Y8Wi0E2O0mQzU4rqU+uxDn/FMDEZJVPEIQYI89QOjwV3oC+hJdouy+g4PDpDiwJSYqxbkE1xg8t0v0I+ATl+ANK4m+G6Behg5JHb5iIk21ubKs/CQB46raLYLdJwmcoCh1IR3hIOvpQuvotkTrIZpPNjgfKiEoQWYooxs8oXjdZ2AVTvKokV+R2ALqLrx64boKuF8YuS5hZWR6VEtsmiwWykpWqPtcxSlqlegvb3T7UXXpuWJryb9w+4YI1q4WHpKMPpeOaRGohm21sswGy2zRoJwgi6ZQXOrFuQXWUF6aswKG7Pc8u6SbkEKWxLitwYNmM86PSVZcJFopRuEFyMGrX0MWUf/viG8zSWWi2YWE1ap/pe4Zr5k+G0yZhsIWSmxBELmA1mw2Q3QaSGNPeHyimnUgmuRTTbkX8fgXNnZ6whUVtbh9+8dKhKG/L/ddegBs37I3y5ojST7d0eEzFPJs9PsNJWUy7UbsC0Pa9+dPLtAF76HHP3H4xTrR2Y3RZAbx+Bdv3f4Y7L/sWyoqcOe9hI3Qhm51ErGSz+3tOhpL6mHaCIFJDpgxmbDYpaprU6w/oypn94ppK3XhHEWYl8UhCLzkYteuwQX2DclH8OgAs2rQPW2tr8LMXPoxLhpMgMg2y2f2zwWS3k58RlSCIJJLpmRJFKbrVeMrI7aIYZrOpvs0eT8RHrHb19ErINX7ZoXtcQOGoKHFp3rNcmvYmcgOy2cblGNlgsts0aCeIjEaUKbG1y5u2OikKR0uHB6fautHS4dE+RnrbRSnj1SQakdtFMcyxUs8P9HgiPozaNfRdXbfrKFbNqQo7bs38ydi+/zNsXDgFwwa50poqnCCSBdnsIP2xwWS3KTyGIDIaq00X9kdrWE/ODACcNgkrr5+gZctzCvR+AfOSeCShlxyM2tUT8q4ebGrHI683YsWsSow/uwgSY3DIDHdcNgZDCmiwTmQvZLOD9McGk92mQTtBZDRWk8ITeZG21U3FY282hsmBPfZmIx6cXYWyImdUrHJLhwcLn/zA1IIjszHPFCOdHNR2VeN2v/jaDYdNhj1CKu5gUztW7mzAc4trcOnDb2vPN5c+wETuQTa7j/7Y4Fy32zRoJ4gMptRiUngiLxLAdeXAFEU/kYbVvFGEOfS8d+sXVOOJmyfhx88d1JWEo+dL5AJks4mBQIN2gshgrDZdKPIicQ7N+ANBY758xyFsq5tqqpxcWnCUyeh57+qerccjN0wM89w9/d4x3POD8QDo+RK5AdlsYiDQQlSCyHDU6cLhJflpX7wnWijEES3/dbLNDVGeCFpwlNmIvG5Dz8rDyp0NuHHDXqzc2YAfXzkWG9/9lJ4vkVOQzSb6C3naCYJIGCIvUmuX15QXxmreKMIcIq9bgUPGtrqpWrKWfIeEn/zDWNxjG0/PlyDSANnszII87QRBJBQ9L1J/vDBW8kYR5hA97yGFTpxT7MLI0gKcU+xCcT49X4JIN2SzMwfytBMEkXTIC5Nb0PMmiMyG+rA1oUE7QRApIdelunINet4EkdlQH7YeTLSoIB0wxloAnEh3PXoZAuBMuisRA6vX0er1A8LreIZzflWiLxDjvc6ENko0dM+pJSnvNWAJm50N7xLdQ/8hm50a6J5Ti/C9ttSg3UowxvZzzqekux5GWL2OVq8fkP46pvv66YDumUgU2dCudA+ZRS7dqwrds3WghagEQRAEQRAEYXFo0E4QBEEQBEEQFocG7WI2pLsCcWD1Olq9fkD665ju66cDumciUWRDu9I9ZBa5dK8qdM8WgWLaCYIgCIIgCMLikKedIAiCIAiCICwODdoJgiAIgiAIwuLQoJ0gCIIgCIIgLA4N2gmCIAiCIAjC4lhq0H7VVVdxAPSjX7p+SYHea/ql+Zc06N2mX5p/SYHea/ql+SfEZrQz1Zw5k2tZcgFF4Wjt8sLrD8Bhk1Fa4IAksXRXi0ggufheE7lBIt5tsoGE1SCbTSSLgdo7Sw3acw1F4Wg83YHFz+zHyTY3Kkpc2LhwCsYNLaKPFkEQWQ/ZQIIgcoVE2DtLhcfkGq1dXu3hAcDJNjcWP7MfrV3eNNeMIAgi+ZANJAgiV0iEvSNPexrx+gPaw1M52eaG1x9IU40IInmce98r/Trv+EPXJLgmhFUgG0gQRK6QCHtHnvY04rDJqChxhW2rKHHBYZPTVCOCIIjUQTaQIIhcIRH2jgbtaaS0wIGNC6doD1GNbyotcKS5ZgRBEMmHbCBBELlCIuwdhcekEUliGDe0CC8tnU7KCQRB5BxkAwmCyBUSYe9o0J5kYsn7SBJDWZEzjTUkCIJIPZG2cdggFw3WCYLIKMxKOA50zEeD9iRCcmYEQRDRkG0kCCLTSYcdo5j2JEJyZgRBENGQbSQIItNJhx0jT7tJzEyFkJwZQRBENKG2cdKIYiy5YgyKXXZ4/QEoCidvO0EQlkJv7JeOMR4N2k1gdipElfcJfagkZ0YQRK6j2sayQid+/oNxWL7jEIXJEARhSURjv6FnOVM+xqPwGBOYnQohOTOCIIhoVNt494yx2oAdoDAZgiCsh2js51d4ysd4Sfe0M8ZkAPsBnOKcz0r29ZKJ2akQkjMjCIKIRrWNBU6ZQggJgrA0orGfz6+kfIyXivCYnwD4BMBZKbhWUulPuEt/5H3MSggRBEFYGZFNc9ltFEJIEIRl0LNVRmO/VMt2JzU8hjFWAeAaAL9L5nVSRSrCXdTYqdlrdmP6qrcxe81uNJ7ugKLwhF2DIAgiVRjZNAohJAjCKohsVYnLbhk7lWxP+68B3AugKMnXSQmpCHcRxU69tHQ6JWEiCCLjiGXTKISQIAgrYGSrrGKnkjZoZ4zNAtDMOa9njF1hcFwtgFoAGDlyZLKqkzBiTYX4/QqaOz3wBRTYZQnlhU7YbPFPaJBMZHaQae81QcSL2XdbZNPcvj55x0ibSiGCRKohm51b6I3VjMZfVslen8zwmOkArmOMHQfwPIArGWPPRh7EOd/AOZ/COZ9SVlaWxOokH79fweHTHZi3fg8uX70L89bvweHTHfD7lbjLUGOnQqEYz8wjm95rggjF7LstsmlHmzt1Q/8oRJBIB2SzcwfRWM0uS5YffzHOk28Iez3tP4+lHjNlyhS+f//+pNcnWXze7sa89XuiFitsq5uKc4pdBmf2Qem900pSGjjT3+tEce59r6T8mscfuibl17QgSTMc8bzbejZt1ZwqPPJ6I1o6PVGhfy0dHsxeszvKjlKIIKED2WzCNKKx2ot3TQsLkUnj+Et4MUqulEB8AUV3asUfiN/TTjKRBEFkE6pN21pbg5NtbrS7fXjk9UYcbGoHgKjQPwoRJAgimYjGaj2+gOXHXykZtHPOdwHYlYprJRqfL4DmTg/8CodNYigvdMJu158qUadWIv96s8niKCRR7CZ5lOInVvwrxccSRHqRJAaHTcbPXvgwyj66HDJaOjzw+gOw2yRIjGFmZTnmVI9AscuOdrcPO+qbYLdJ2nHUjzMLstFEuujp8aPV7dXGcKUuh+FYzerjL/K0G+DzBXC4uRN3PVuvTZWsXVCN8eWFugP38kIn1i2oxpKQ49ctqEZ5of4LQKEwAydWG1IbE4Q1UOUdQ/viM7dfjNPfeMK2/f7Waiy7cizu2nIgzI56fAH8aOP71I8zDLLRRLro6fHjSGtX1BhubGmBqbGalUhJTHu8WC2O7FRbN27csDfqr7GttTUYXpKve466ItkfUGCLoR5DsZsDJ1Ybmmxjio9MIhTTnjbSGtMeSqRHlYPjh2veC+ufT912EVa8/FFUn115/QQs2rQvbBvZSuuTYBsdCdlsQojRGG5oUV7cY7U0QDHt/cGvcP0Y9RAVg8iPUInLDrssgXMOe+9UiwiK3Rw4sdqQ2pggrEPk1POptm6UFTqxYlalFgozpNCh22fzHXLUNurH1odsNJEK9EKZjcZwNpsUt0CIlaBBuwE2ienHPfUOxCOn9WZWluPuGeeHTbkYTfMZpcYl4iNWG1IbE4R1ybNLuPeqcbhn+yHNZq6ZPxkzK8vxRkOzdlxFiQvd3vBBHPXjzIBsNJFsRKHM5YUOwzFcJmKZuQArUpgnY+2C6rDUtWsXVKMwL2hMIrNnzakeoQ3Ygb5sWq1dXt3yKYX3wInVhtTGBGFdPH6uDdiBoM1cuuUA/uXqb0f12VGl+dSPMxCy0USyae70aAN2IGhH7nq2HhzQHcOVujL33SJPuwGdPQHs+uQ0nltcA845GGN4+cBJ/LC6AoNc0dN6xS67qWk+knccOLHakNqYIKyLSHpNlhi21U0F51zrswCoH2cgZKOJZCMKg/H4FYwtLcDW2pow9Zi8vMwd+mZuzQUMVDoq9HzGGP76+dd49L+PaPsrSly46ZJRAKKn9drdPtPTfFaXF0oGiZb3itWGudjGBJEu4u3fSu9HVM9myhLTjTelfmxdjJ472WgiUejFrhuFMufl2TA8gwfpkWTPnWDgEop6569bUA0AeKOhWTitpx6/o74pSkaIpvnCIXkvgshe4u3f6nH/daAJa+ZPxtIQece1GSK9RvRBdp1IBaLY9bGlBVi7oFonpj377EhWST4OVEJRdH7kNK1RUogSlx1tbh9N8wmwuMwlyYclEZJ8TBspk3yMt3+HHjevugKLLxsNWWJw2iTDBHaENUmjXSebnUMYSTiWFzrjToSZAeSG5ONApaO8/kCU/NjfvvgGnHP4FQ4WUBAIKGjt8ocNyiONUui/FYVTFr8QSN6LILKXWP1bzWPhCyj47c2TUJhnBwMQUDjW7TqKn848H209Pvg6PWQvMwiy60Si0ctkaiThaLfLwvw52URWDdoHKh2V5wiXH6u79FzMurBC+8tOnXLZ+ZeTWP+/x2NOAdKUYTQk70UQ2YtR//b7FRw+3YElz9Zj2uhSLJg6Crc++UGfbZ0/GR5/AAt+9wHZywyD7DqRSESZTCuKnVkn4WiWrJJ8HKh0lNcXLj82d8pIXRmhuVNGav82knSMlISMdXwuQPJeBJG9GPXv5k6Ptt5n8WWjtTh2oNe2bjkAfwBkLzMQsutEIml1e3XHXt1eRVfCMRtj10VkladdkhjGlhViW91U+AIK7L2paUO9NKHTs/aI1LXeCPkxWWJCObLQf4dOAYaWL0sMZYXOsDISMWUYS53BynH2JO9FENmLUf8OlXcU2VabzDBpRDEAYMkVY1DsssPrD0DpzUKdSNWpTCPRqltGZZv9ZpBdJ/qDXghMXp7NMAxmfHlhmIRjhseumyarBu2KwnGkpVMYjhI6PRuqDjN+aBFsNgkOmxQ29RJQuO5UTOjS3YoSF+y9g3698lfPrcLDrzXiYFO7dvxApgxjhdyIFHAef+tvYQo46ZxyJnmvzCUdi0mJzELUv+1yuH3Vta2c4/7rKuHxKfjZCx+G2TinTcLCJ3MzdCaZoZaJ+maQXSfMIAqBGVtaYCjhmCux6yKyKjwmVjhK6PSsun/Js/Vo7vQAAGTGsHpulTb1sn3/Z1FTMWvmT0ZPbzptdVCuxlPplX/P9kO4e8ZY7fiBThnGuke9/Uuercec6hG6xxMEQaSC8kIn1vXa06/d3jBbq9rS9m4v2rp82oAd6LNZJ1q7czZ0JpmhlvTNINKBKASm1e1FqcuRdZlME0VWedpjrWAXZd/zBxQAgNsXwMOvNYapx+z65DSer62B168goHBsfPdT1F4+Gltra9Du9uHh1xrxxM2TgAJx+WPKCrB7+fcSMmUY6x5F+4tddt3jCYIgUoHNJmH80CItfPH/PP+XMFv78GuNuO/q8ch3yLo2LN8hR23LFTuWTHUW+mYQ6cAoBCYvz5Z1mUwTRVa1QKwV7JHTs+p+myxp+8uKwv+S6/T4oPCgDm2724d2txdHW7pQt7neVPl62f2ScY96+2dWlmNwgUP7Q2NHfZOpEB2jdQAEQRDxYrMFbeHn7W60dHo0OwoE7Vi72weHwI52e8MHjbmkTiKy+3abNGBJYVHZ7W4fAGDSiGLcPWMs/ArH5+3uMPufzDh7InvQi103CoEBkHWZTBNFVo28Yq1gD52eVfevC1l5XFbgwLIZ52PlzgbcuGEvVu5swKwLK/CrnR9r/14243wcON7ar/JTcY+R+2dWlmPZjPOxaNO+sHsojrMzqHH689bvweWrd2He+j04fLoDfr+SsHsiCCK3KCuInv5eM38yDhxvxeACOx69YWKUHf1WeUHOqpOI7H5njx+z1+zG9FVvY/aa3Wg83aEt2h1I2esWVGNHfRMmjSjGvVeNw4qXP4qy/2os/ECvT2Q3auz6jRv24vLVu3Djhr040tpFITD9JKsyogKx//JXvcb+gAJbhNdYlNVtxazKMM+6UYZUo/IThRn1GAC6GcS21U2Ny/v/ebsb89bv6ff5GUbOZNfLlQWllBEVQAozosZLS4cHv3jpEOZUj9DCY3bUN+H+ay+ATWI40+WFQ5bQ6fGjucODHfVN+NXs74CB5axXN9LuyxJw3ROJyUIqUo/x+AO4SfD9sMuSFbJb54zNzlSMspiWuhy66jFEPzOiMsbOAlDGOT8asb2Kc34oQZUzhdnpuEBAwZffeMNCO0SDzXhj+zjnwtXL6vRvItG7ZyOjGLqK/0RrlzCO/0RrVzAkqMCB9h6/bpsarQM41datKw8WSy6MplQJIrdQ+7yiKPArwQzTbzQ0442G5rDj7r/2AngCCq55/M9RZdx/rZLTqhGR+PxKWAZvhXMEFI5urx8tHQizq3o2FzCW0Cwrchp+P/yK/reBYt9zF7NZTCkExjzC1mKMzQPwawDNjDE7gNs45/t6d28CMDn51QunP3KHaxdU4zch0lWhEo+R2G36sZRqbJ/671TGUQ5U6ksUZ3+0pQuLNu2LmeU1nvMj5cGM5MIoSyxB5BZqn3/szUbcOu08LN9xCA/98Du6dkXhwNHmLsquGYGe3Vx/SzUeuK4S//TcQZQVOnHvVeNw34t/jbKrAKLOfeb2i+HxKzHtsGh9AQfwqeA52Wm9U04iknAcnG/P+SymicSod/0rgGrO+YUAFgHYzBj7Ye++tLR2f+QO74qQrgqVeIzEJrEoGbI18ydjR32T9u9Ux1EOVOpLL85+9dwqPP7WEa08oyyv8ZwfKQ9mJBdGWWIJIrdQ+/yc6hFYvuOQlqBOT/Lxy6978PhbR7BqTvi+XIpf10PPbtZtrsdXXb6gzb1iTFg271C7qnfuidbuuOyww67/TXzwlQbd5xQqgUzkFiIJxzybRLHrCcRoXkLmnH8BAJzzDxhj3wOwkzFWASAtgfCJkjtUJR4jcXujJR+f3XMC9197Ae6/9oK0hHIMVOorVGbNH1AgSQzLnjuoJXtSyxNleY33/Mg2FsmFJVO6jCAI66H2+WKXXev7EmN46NXDupKPB5va8cjrfXa4osSFYYNcOT0TJ7KbqgxmaNuG7lftauQ+kaxmpB3u8SpR30QGaGFNoc+pvMiJf972oSaBTOQWojCYTm+A5BsTiFGrdTDGxqjx7JzzLxhjVwD4LwAXpKJykfRH7jAyvGVmZTlkiWnx2IOcMlq6+mKwrp94dpQM2T228WnL9BbrnuMhNM5elVoLpaLEhUDIiv/I8jnnwR+CUyyR58+sLMewYhf+52eXI6BwbN//mTCkKBH3QxBE5qD2+Xa3T+v77W6fJvk4r7oCiy8bjUfnTUSBQ8arP7kU37h9aHf78Ps/f4oHZ1fl9IBdUTgY05fHU2UwQ9s2dD9jDHl2CTMry8MW/UoR5amyjgoPyjrKDAjw4OxzpDTnU7ddpJ17sKkddZvrNcGGlk4P2fIcwKyEI8WuJw6j8Ji7AEiMsUp1A+e8A8BVAO5MdsX0iCV3WOKyR4VyrF1QrUk0qvKHN27Y2ydR1dKFX/7pY02KqPq8IXhg1njd8tNBrHs2i57U2toF1dh9pFm3fJ8vgMPNnZpc0y//9HHY+Wqb3rxxL6589B0s2rQPsy6swBdtXbrlJfp+CIKwNmqf31HfpIVTrNt1FKvnVqHu0nOxYOooLNq0Dz/b9iE+PdOFxc/s1+Rp755xPkpCZu1yDTWW/YE/fhQdMnTLFIwY7Aprz9D9q+ZU4YE/foT2bh/ujpAydjlkPHP7xagocYXJOl76cFDW8e8tXXjgjx/heGs3fnvzpLByR5XmR9nwVXOqsKO+iWx5DkASjuklpuQjstXOuwAAIABJREFUY+wjAJsBPAwgr/e/UzjnUxNdmXhkloyUR4xkxAIKhywxXemhSEnHrbU1AGAZZZNEqq2I2uiB6yboyljqyTXNrCzH/df2TbaI5JwA/Ta0sHpMzsiHkeRjTpF2ycdI9ZiAwpFnl+ELKJr9WH9LNVbubEi3hKClCJUhnjSiGEuuGIPSAgfOKXYhzy7hvh19tlzhHGcPykNrZzCOfd2uozjY1I6nbrsIK17+KKpdX1w6TZPQFH0XV+5swEM//A58AY4x5YVw2aOVZxhjkBkgSVI6bHnO2GyrQBKOKaF/ko+9XAJgFYD3ABQB2AJgeswrMpYH4F0Azt7rbOec3x9PbUPR048V4fUHhDJiI0sLcKqtO76Y994Xrj/EqxOvSlAayS2GlukLBD92LKAgEFDQ2tV3TnGeDS1d3rgyluq10bzqCnAelGGDPwC/P4CvPQF4/QFwADdWV+Cq7wyDLDEEFI7X/vqFFipjJOc0qrRAq39o1r6Bes5EmsIW/COAIHKWWDKDdhvg9vXZj1hx2dlKaDsVOGV0exXNljtkpsk6jh6SD6fdhkBAgcyAHp+CO747Gu1uHx569TAA4D/mTQwLdZw0ohjnlubjNz+ahEKnDT2+APyKgkEuB9zeAOyyBI7omPeTbW6MKStAWaETdlnCgt/vxf5fzIA3oKCprRsOWYLDHrSxdlmKS0LS6L7JblsTknC0HvG0rg+AG4ALQU/7Mc55POkwPQCu5Jx39kpG/pkx9irnfG+8ldOTuTKSE4wVLy2SL4yMv/YFOC5fvcu0HGEsOUM1u+iS3hXWamhJqERS5PUiz4mUaNQrw0jWMrKN5lVXYMHUUdpfzmr59cfO4IGdh1F36bmYdWEFFm3aF1ZnNeFGaHxjaBuqf/SYfYaJficIgkg9IlvotElY+OQHmDa6FAumjkK+wxYW555rEoKh7aS2ydItB8Js8UNzJuDF+pMYNigPizbt1eQdVbWYihIXHr1hIpx2Cbc8+YG27YmbJ8HjU8K2PXrDROTZg89A3bblzkt0273pKzfuvWocHDaGukvPxRffeMK+M6vnVuHh1xrR0ukJe7bxSPmS9K/1EUk4DilwkIRjGonHGu5DcNB+EYDvAvgRY2x7rJN4kM7ef9p7f6ZUZ/SkqozkBOOJl46M+1vbm65Z/fea+ZOx4Z2juuX3p76h5zd3erTBNwDMqR4RJZEUeb3IcyIlGvXKMJK1jGyj2svHaB+J0PKvrBwGAJg7ZWRY+ZHXe/ytI7ptWl7oFLaJ0TPsTxsPpDyCIBKPyBaeaA3Odi6+bDSWbjmADe8cxZr5k4Vx2dkuIRjaTmqbRNpiWZIxd8pIbZ+evOPPXvgQbb3yj+q2ti4ffvbCh1HHfRVx3IOvNGB9RCzyqjlBWd97th9Ccb4Dt0w7L+o7c8/2Q1hyxZioZ6vuN7LDJP1rfUQSjhIDxa6nkXg87XdwztXgri8BXM8YuyWewhljMoB6AN8C8FvO+fs6x9QCqAWAkSNHhu2LV8JRnT6VJIZxQ4vw0tLpulNubl+0pOOuT05jxawLcN/V34ZdlvCbt45gW/1J3fJjEUvOMDK7aDzTwaKMpKpEo6gMkaxlZBuJprrUtQ6yxAzrfLCpHQ+/1ojna2sQ6J1CKy90wm6XDdtE9AxjkejykoXRe00QmUw873YsiULVrqi29qnbLoIsMeQ7ZKyZPxlub0CTgcxmCcHQdoq0tUCwzSQGgPXtE9l8tW1VRLKOkce90dCMX153AZ6vrcGp3hmPR15v1GR9JRYMizSyu3rlGtlhK0r/ks0ORzQ26PErJOGYRmK2csiAPXTb5ngK55wHAFzIGCsG8BJjbALn/KOIYzYA2AAEF3+E7otHwjFSLlCSmHDRkl2WouSrKkpcOH/YWajbXI/1t1TjvU9bw84xI0doNjxHNB0cej1RSI8atygqI1TWMjLmOzSmXCTTJEsMW2trYJODcmFqDLze9Vo6PXDaZN12j1eGk7G++hrFNvbnnUgHRu81QWQy8bzbon6qShQGFK7t31Z/EtvqT6KixIWV10/Aok37ws5Jd182i5lY7dB2Cm0TleD9S+C8b1+72xcl4bijvklrW5Vub8DwGYRu42CQGMI88+o+m8SiJCLVfardFZXrcshh65nUtrCi9G8u22yScMwcUhIsyDlvB7ALQbnIuNELd4kMZ1m3oDruhY162T1Dy9tR3xS134yEVazwnEi5xQPHW6OmmSLvR1Tn7fs/0+qsN1X1yz99jOmr3sYvXjqEw6c7MHvNbk3m8vDpDvzipUOYvuptvPnxF7rn//ufPsaNG/bi5o17sWzG+ZhZWS68nlEb6bXJupA2n1lZjrtnnI956/f0yXCe7oCi6NvMWOWZfWYEQSQekS0cVZof/P93P9XCYtT96xZUY9Tg/H7bXyugxmqH2tt47dlrf422xWvmT8bm946h3e3HU7cFj3ur4TR+fOXYMAnHZVeOxTnFzrBzSwrseGzexLBtj94wEYML7FHtXl7o1P3WrJpThV/+6WO4fQHdzNjrdh2Nerbq/mduvxinv/HotgVJ/1oHknDMLGJKPva7YMbKAPg45+2MMReANwCs4pzvFJ2jJ7MU6rVgjOHp3Z9i8rmlYR6GB2dXxS0Jpqq3+AMKbDrqLQNVIoklSfm7d/+OuVNGQpYYbLKEX+38OMpjEnk/oXWWJYY3P/4Cw0oKUOyyY3CBA9v3f6a1yeACB1a/fljzjItk1EJlLh+YNR7fv2CY9lf2L//0cZi6TEVJUM4poHDdNjOrEhDaxowxzFu/J6p+RjJvSVSPyRn5MJJ8zCnSIvlopB7j9gXQ4fYhzyGDAVpStrorvoWAgoxVFAmVaFQxY89++afo78Gc6hFYubMhaIN58GH+aGO05F6fNGMBbJIEmQF2mwS/wuHzK5o0o83G4PUFFclsEWpjfr+C0x09+OLrnjDZyIoSF17+8TR4fBx+VdnGztDjVXSVgRw2GRwcP1zznrAtEqQekzM2O1mQhKMlGZDkY38ZBuDp3rh2CcA2owG7iNBwl1Nt3Vj/v8eB/z0edsz918YfBxeaHVSlzB4+JTcQTWCj8ByvP4APjrdrA+zyIidaOrxh4TpA8H4ipxTVOp9q68YDOw9rx26trdHKBHoz2HX0LebRi38sK3SicthZWgbTje9+iisrg+cGOI+SzFTPHxki4TjQNgl9pnpxc25fQBguE1me2foQBJF8RLawrMiJU23duOY3f47at3DaeRhekp+K6iUFM7HakQ6pgMJ1JYvv+O7o3jIU/K25E2PLC3WvoUozvnff98A5h48DkgIMKQgOkJs7PejxK7BzsSywuu3BVz7BkivG4L6rx6Pd7cO6XUfR41Win03IWoNIO+zz66/HCl2Dpr4fJP+YGkjCMfNJ2tPgnB8CMCmRZVoxDs4MLoccJdWlymapi36C8YXQvDWRUliRbeCwMcMyfQEl7Hg1+53qqVGnYDvcPlzzmz8LJRzVNk60VJfomR5t7sSiTftilk/SYQSReWS6LRcR733p2S01Q6le3HhFiQs2WcLKnQ1YMatSeNzMynK0dHjxT8/1yUZuvGUK7DaG257ap20zkgXOc0i635Q8hziaVu9+nhNIScbTFmTDEw9JOGYHGSWAm+lxcH6FR0l13bP9EO6eMRZAX5ygwnnYMUaylsX5DsMynTY5TEbt7hljo45fuuUA8npX/utJOIa2caKluvSe6eq5QbmxeMon6TCCyDwy3ZaLiPe+9OzWQ69+gt/eHB7nv2pOlbaO6Nk9x3CyzY11u45i1Zwq3ePuu/rb2oBdLXfx5v1o+sodts1IFtjr0/9OeX3iGU29+/nVKw1Yf0vs9U9kw1MDSThmBxk17xFL0tHqiKYLRwwOxo+pEmePzpsYdYxI1lI0tTW6LCjJVFJgxz0vHNJkLs8elKd7vNqCqoTj1toaAIhq40RLdUXeDwD8+LmD2sxDrPKtKB1GEIQxmW7LRcR7X3p2642GZiy7cixWzKrEt4cVQWZBRZcHrpsAh8yCoaEI2uhHXg9KF59fXhgMY7BLmFM9Al+7fbr2UE+OUSQL7BXIDPsExxvdz8rrJ/SrLciGJx6ScMwOMu6pGMWMp4KBxN4JQ0FaurS49ooSF4ryZPx5+fcQUDhkieHgiVbhtLFIlsnrV3Djhr1Yf0s1yor6/mJmAumu0NTXLZ0eOExKOA5kWjv0mbZ0eNAS4QEyKj9bp9kJIttJty1PFrHuy+8PDn63L5katdgzzy5jR30T7r/2grDvS0uHJ8zOHWxqx8qdDZpEpio4IAqdcdokvPnTyyBLTFv0a5clXTlGkcywTRZPzIvssCRJMZ8x2fDEQxKO2UtGhcekG7NyXpGUuOyGkpMVJS68sKQGX37jxU298ks3bdiLc8vOwlmO8JhytQ7PvHdMd2pLlYQ8cLwVy2acr8mD/Wrnx7rH7z7SrP3brIRjIqe1zZafrdPsBEFkH36/gsOnO3Djhr2Yu24PVu5swM9/MA4zK8uxak4VVr9+GD++ciz+87+PxJRIfGzeRJT0yjeq2WQPHG/VldIszLNh0aZ9uPLRd7Bo0z7MurACYFz3W6Yn/ajKQooYiB0mG55YSMIxu0ma5GN/sLrMUn/kvCLP/8VLh8Ikvb5o68L3LximySlyzoXyS8NL8nXrUHfpuVg47TxdSUY9ScWZleX4t1kXwB9QNK/LrdNHg3PeLwnHRE9rmy0/gfXJGfkwknzMKdIi+UhE83m7W1fi9rnFNfjJHw5qHndVklckkWi3SbBJDD6/ggAHOOfIc0jo8SpRspGD8x346ba/RF1z06KL8Q//8U7YNvVakdLIIrWZUAZihwdwbs7Y7HghCcesIC2Sj1lHf2LvQo0RAF2Jxysrh0HunZbs9vqF8kuiOnxwvB0Lp0ErQ5YlQ0nFNxqaccd3R+PGDXu1bWak1pI9rZ2t0+YEQWQv8Qw8fYJ4cSXEeXayzY3i3gR7J9vcUBQlLIxl2CCXcEB7ytsdJRu5tbZG95qRRUSunbL3OpHsshTXAHogdlvvXJKBjI3H48eZ7r5B+JB8knDMdujpmcBs7J2elJWexGOovOHW2hpD+aXIOqgSjupf1rEkItXy1PTTse7B6pBcGEEQ6SZeOySKF/cHOH7+g3F45PVGtHR6NPs8s7IcZ7qCjp547Jueve/2BnSvGRnVqX4HrGBTrVAHq+Px+PG3M9ESjqUk4ZjVUEy7CczG3ulJWelJPIbKG/oURTfurDBP0q2DnoSjkUSkGp8YGkefyfGDJBdGEES6idcO6cWLr5k/GRveOYrlO4LfhtVzq7Bu11FUlLjwb9dUagN2o3JV9Oz9qMH5umupnDam+y2zgk21Qh2szplufQlHG0k4ZjXkaTeBWZkyUTjNmPJC7F7+PQDR8oanv/bgg09b8dziGnDOwRjDywdO4ofVFRjkiq5DgOtPhYkkIh02GSUuOx6cXYX7r838aUeSCyOSwUBi/imOPveI1w7ZbBLGDy3C1toaePyKlpF6W/1JAMCY8gIUOm144uZJcNhk0/ZN9I0KBJQwSb/yQidkWdL9llnBplqhDlZHFAbjJgnHrCbnn2KsuDm9/fHG7YlCU2wS0wbkF59bjCVXjNEWDUmMYWv9STz630fCzrnpklHavyMlEmOF7CgKhy+gwK9wsF6tXTOxh1aOLSS5MIIgEo1Zm2fGDkkSA2MMC5/8IOp4l92GwQVOoCC4TWTfGWNQFB7TDnPOcabTA7cvALssYfigvLAFpWZkfe02fYnIZEB2PRyScCRUcjo8JpaEY7IkHp/e/Smmr3obD/zxI8y6sEKTY1y5swEuh6yls1bPGYjkoSoxNm/9Hly+ehfmrd+Dw6c7NK3ggbZRuiG5MIIgEkl/bF68dkgt++ndn+pKM5b0LkA1KnfVnCo88MePdOsUWfcfrn0PR1s68X+e/0vctl90L509/pR9B8iu92FWwnFIfu61US6R05KPsSQckyHxuKO+CXOqR6Buc72WECOy/BeXTgMDS4jkoUhibFvdVJxT7BpwG1kBknw0D0k+GpNl4TEk+WiC/tq8eOyQWvaKWZXatyD02/Dg7CpdFZUvv+nB5+3uqGRMkXUS1T1UQjIe2x95L7IEXPdEar8Dcdr1rLfZRhKOQ/IdUeoxTid52LMAknzUw+sPoKzQiRWzKjXDuW7XUS1ubqBxdV5/AMUuB0YPKYAsMQwucKDY5dDkvIpddv100X4lbvlFwFhqSyQxJkphrXcPVo8tJIlIgiASRTw2TzSgFMkWKkpQT90fULBiViXOGZQXJc0IAPdfG21Xpd5wyrnr9hjWyajuoRKS8dj+yHvRkw5O9ncgF+26zxcI6uOHrD0wknB0Om0YToP0nCKnn7bLIePeq8Zp6iuqmourN/voQOPqCpwyFkwdhUWb9mnlr5k/GersRrvbl/S4vf6kpA6FYguJTCZXZhSIxBHL5sUrR6ge99ibjbh12nlYvqPvO/PbmydjZmV52KDdyK7Ga4djSfyasf39uT7Rf3y+AA43d0ZJOA7Ot5OEI6GR0zHtfoVHySXes/2QlshooHF13V4FS7ccCCt/6ZYDKMoLej121DdFxbwnOm6vPympQ6HYQoIgcolYNi9eOUL1uDnVI7QBu3r8Pz13APdd/e2ErV0yOi5UQtKM7e/P9Yn+09zp0ZVwzLNLJOFI/H/2zj4+qurO/59z585MJg+YGBNEHrRaQKO/KCRakF1FaVm6oi4lgpVgxf4MyFa7rkXcbfnJ/vi5r0LadWsthLAtitItFOrWxV2rValdHloJKmuRyCIoQSAhJpKHyTzce35/TO7N3Jlz78xN5nm+79drXq/kPpx77rnnfO+55/s9n6OT1yPtgaA4dCQwOFHHrsRjVPomoSkOiWHPylt0+cXhph8PmsTY9qXTbS1JrTHSMiAIgsgmYtm8eEMGtePMwiBliWH70ungnMe0q/Ha4cjjnIOj6j+6+zrbtn841yeGj1kYTK9PIQlHQifrn/pIJiGaufwYYzjV1W9b4jESp0PC7KrKqMlGTodkmAiU7Li94SxJHXl+vsUWEgSReDJZPjYcK5tnN1TFLAyyuECGoiJmXHhkmY25wGNZZsmy1/QeSBx+fxAdfUMTSCuKSMKRiI+srgUjXepYc/mFn99UX4PVL72PVw+3204vkooiFx6aNSkqRq0ihS5FWg46d6F4bSKbyBVbpEn5Lguz61ZyjU+91oq186sNMe1b7r8BZ8/74o6Lz/YyI4bw+4No7eiL6hdMLC/ChvqaqO3DCWcicpeslnxMhBxh+CgGY0zvsA83vUTnb6RkQh6yiKySD6NOe2ZCko9icsUWmUn5msk1hqvHaKEwHBxfW783ZlnkSpklkayy2YC1hGNlsTtKPcbppMm+eUhuSj4mQo4w3OV3qqs/SoJrJLJWyZJLDAZVtPf6EFBUOAVxiuEfIgBQUew25CPTJBsJgsh9skE+Nh78QcWWXKOocx2vhGJ4mU0ZP7R6tj+oxLUiaraEI+UqdiUcnU6HLblnIv/I6k57omWoMj09YGiF00jX7JWjSyDLktCd2lhXjXWvtOKdk90JyQNBEIRdckU2MBH34ZTFUrzOiEmi2rUqit34zl9MNoTYxAqTodCa9EISjkQyyGrJx0TLUGV6ekBIFmpZhCzUshda0N7rAyCWI1ux4xAenjUxYXkgCIKwS67IBibiPmSJobGuOkqaMbLjpl3r4VkTo2QjRTKT4cQrTUkkB7sSjqmc60ZkL1k90p5oGapMTw+IvcKpmQv6ispiXWaSXKQEQaSaXJENTMR9eP0K1r3SaliNe90rrXjmnilAUfS1itwO26FFuRKOlK1YSThOrjBKOFYUueByZXV3jEgRWV9LEi1DlenpxVrh1Mx163E6aOISQRBpJVdkA0d6Hy7ZgY5eH5Y+36JvMwuxkSQGj1O2HZKTK+FI2YqVhKPLJWMsddKJYUC1JsvQVjiNjGnXZKFEMpbZ6ILOF0gBhiDyD7t2ejh2nd4F6aWy2E0SjkTCoU57lhFrhdNccUETBEHkKnbt9HDsOr0L0ovT6cCVlcWGMBiScCRGStI67Yyx8QC2ALgYgAqgmXP+o2RdL1Fkg0SWLBtXVI0kV1zQBEEQ2YLdd4ddOz0cu07vgsQxnL4BSTgSiSaZI+1BAI9yzg8yxkoAtDDGXuOcH07iNUcESWQRBEEQdqF3R25Dz5fIFJIm+cg5P805Pzj4dw+ADwCMTdb1EgFJZBEEQRB2oXdHbkPPl8gUUhLTzhi7DMAUAH8Q7GsA0AAAEyZMSEV2TCGJLCJRZFK9JlJLOiYXn/j+bSm7FtXtaOjdkf1Y1Wt6vkSmkPTFlRhjxQB2Avgbzvn5yP2c82bOeS3nvLaioiLZ2bFEk8gKhySyiOGQSfWaIBIJ1e1o6N2R/VjVa3q+RKaQ1E47Y8yJUId9K+f8V8m8ViLIlRX7CIIgiNRB747chp4vkSkkUz2GAfgpgA845/+UrOskEpLIIgiCIOxC747chp4vkSkwznlyEmbszwD8HsB/IyT5CAB/zzn/D4tzOgB8nJQM2eciAOfSnYkYZHoeMz1/gDGP5zjncxJ9gRj1OhvKKNHQPaeWpNRrICNsdi7UJbqH4UM2OzXQPacW03qdtE57tsMYO8A5r013PqzI9Dxmev6A9Ocx3ddPB3TPRKLIhXKle8gu8uleNeieM4ekT0QlCIIgCIIgCGJkUKedIAiCIAiCIDIc6rSb05zuDMRBpucx0/MHpD+P6b5+OqB7JhJFLpQr3UN2kU/3qkH3nCFQTDtBEARBEARBZDg00k4QBEEQBEEQGQ512gmCIAiCIAgiw6FOO0EQBEEQBEFkONRpJwiCIAiCIIgMJ6M67XPmzOEA6Ee/dP2SAtVr+qX5lzSobtMvzb+kQPWafmn+mSJb7Uw1587l2yq5RCJQVY7OPj/8QQUu2YHyIhckiaU7WzrZUq8zvRyJzCNb6jZB2CFb6jXZ7PwjozrtBGEXVeVoPduDB7YcQFuXF+PKPNh0by0mjy4h42UDKkeCIIjsgWx2fpJR4TEEYZfOPr9utACgrcuLB7YcQGefP805yy6oHAmCILIHstn5CY20E1mNP6joRkujrcsLf1BJU46yk+GUYz66ZvPxngmCyDzIZsdHrt0zddqJrMbpkDCuzGMwXuPKPHA6yIlkB5fsEJajS3YIj89H12w+3vNIuOzxl4d97onv35bAnBBE7kE2Oza5eM/UsyGyDlXl6Ojx4VRXP4Iqx0/umYJxZR4AIaPVWFed5hxmH+VFLmy6t9ZQjpvurUV5kUt4/HBcs+HPraPHB1W1nCSfcZA7miCITIFsdmxy0WbTSDuRVYi+nH9417VorKuGxBi6vQGse6UVP7r7unRnNauQJIbJo0vw4vIZcbkR7bpmc2HEg0KxCILIFMhmxyYXbTaNtBNZhejL+dFfvofzA0EsbN6Ppc+3oKPXB5nCY2wjSQwVJW6MLStERYnb0jBrrtlwrFyzuTDiYfeeCYIgkgnZbGty0WZTz4bIKsy+nDWX4LgyD5rqa1BZ7Nb3Z7uLLxOx65rNhREPu/dMEASRKZDNzg2bTeExRNqxM7vbbPLNmAsK8NaKmZAdEiqL3ZBlSU872118mYiVa1b0PO1OmspU3LKENXdeg0KXA/1+BW6Zxj0Igsh8yGbnhs2mTjuRVux2qrUv58jjx1zgER5v5uJ7cfkMVJS4o44n4kdzzYZj9jwnVhQLn1s2jXh09vlx78/+GPUSo7pEEEQ2QDY7+202ddqJtGK3U53syTfEyLB6nnaeWyZCdYkgiFyDbHZ2QZ12IuWEu+IUzoWNyhtQcKqrX2goIkcLtJh1kWHJFRdfJiJyqWaTkbS76AbVJYIgsplst9lAYsJps9lmJ7XTzhgrBfAvAK4BwAHczznfl8xrEtFk0opgqspxorMPH3f2o9DlQHmxG7OrKvHq4Xb9mHFlHhxr78WSZ9+OGS4TK7zGLJwmm1x8mYhZuZcXu8SLXcmS7bkFZvU2EfV5OHMdqC4RBJGtZLvNtroHu+G02WyzGefJU9JgjD0H4Pec839hjLkAFHLOu82Or62t5QcOHEhafvKRTJuI+VmfD61nerBixyE9P+sXTcUzbxzFq4fb9cWR1r3SindOhqqKVQxaR48P89bvsYxZs2EwklIguVivzcr9pW/NwNnzvqj6NnqUG3c8Y/2cwrGKszza0Tvi+hxPvRGRSR/ANkhaBq3qNq2ISqQAstlxku022+oerOx2rtnspI20M8ZGAbgJwH0AwDn3A8gegc8cIRkTMe02gvDjAegddi0/y7cexLaGaXji9qsBAN/6+Tt6h107xsxVF49rTzT5hhgZZuXu9SvCOMjTn3tRUezGqrlVKPU40e0NoGn3MdPn2tnnx1OvtRqOf+q1Vqy+45qE1OfhuoSpLhEEkY1ku822ugcru51rNjuZ4TGXA+gAsJkxdi2AFgDf5pz3hR/EGGsA0AAAEyZMSGJ28pN4KnmsTnj4fo/LIfwqjzd8Zcey6cL8KByYcGEhOnp86Oj1GfZbxaBlasxaJtfrRIw8WJW7yEh6XA6svqMKn/UFQuc7JKy+owoel/g5qaqKb9z4BazcOeSRWTu/GkFFTUj8ZabWm2wgk+s2QQyXTK7XZLNj30O+kEzBShnAVAAbOOdTAPQBeDzyIM55M+e8lnNeW1FRkcTs5CexVgTTOtXz1u/BjLVvYt76PWg926MvQKTFoL9/6nO0dXnxWV/o6znyq/nM+QHh4kWRI/2dfX5hfgoGtVPtLoaQqYsnZGq9jvW848VuuXPO0e9XsOrX72Nh836s+vX76PcrMAvPUzh04w+E6tnKnYfgkBhmV1Vi4+IabGuYho2LazC7qtK20c7UepMNZGrdJoiRkKn1mmz28O8hF0nmSHsbgDbO+R8G/9+xk33PAAAgAElEQVQBQaedSC6xJmLECp/p8vpw9vwAVv36fcPXc0ePXw9haevy4tNuL+qa9kWNvEeO9DftPoa186sNX+NPLbgWsiM0amBX0tHu8flOosKl7Ja7N6BGhUWt2HEIv2iYJjxeNVEVcskSHpo1CQ++0KLXnw31NSgtsGfKqN4QBJENkM0e/j3kIknrtHPOzzDGTjLGJnPOWwHMAnA4WdfLZ6xcZ5LE8MWLirCtYRqCKocsMVxU6MKZ8wMIKCoAWLquvP7ohrty5yGsmluFpc+3AAh97Xb2+fX94QYl0p31zsluPLf3ODbfdz0+6/Oj2xvAP/7HETxzzxSgCHqe7RqjXIpZSyZW4VLDmasQUFQEVQ6mqFBVbqoUoKhig66qXHxdxoRuUH9Q1Y2/lsaDL7Rg+9LpuHhUga38U70hCCLTIZttJN/tdrJ12h8CsHVQOeYjAEuSfL28I5Y6TDCoorW9F8sGG83sqkrDV+/m+663jBEza7hfrCjGtoZp6PcrKCty4h9eOmzYr3X6RSP9S2Z8AY/tOGRQh8mnmLR0YhYT6HE5bKkMBYMqjpzt0evVuDIPmuprMLmyGP9zri8qndJCp1hWzCEZJED7/QouLS9EkcsR5ZFZO7/atD4GFTWjVJIIgiASAdlsIpxkxrSDc/7uYIxYNef8rzjnXcm8Xj5i5jrTRr7be316IwWA+TXjDV+9T79+FI111YYYsab6GpR5nAAAp0MSxqB/8lm/HucWCKpR+7VOeLg7a8/KW/Cr5Tdi9KgCfbJpPsakpROzmMCgyi3rUSSR9aqty4tlL7SgvdcnTKdAZthQX2O47ob6GhQXSHr4lVafzp4fAGMMz+09jlVzq7CtYRpWza3Cc3uPwyExYX10SMxW/gmCILIBstlEOLQiapZjKuM0uKJoMOIrt9TjNPz/zslurHulFb9omIZTXV50ewN4+vUP8eS86lB4i4Nhw6KpeHDrQf1rWNNR16616fcfofGua9HZ69O/usM74ZHurIuKeF7HpKUTs5jA0597bc3wD5goAkTWN217n1/Fj1//0CAH9uPXP8QTt1+NzXuOG7Zv3nMcq2+/Go98ZXLUKExlsRtN9TVRo0WyxGzJkxEEQWQDZLOJcKjTnuWYuc60FUUjw1+6vYGo4zt6feAcWNi8X9/2xO2hhsPBsOu9U9h83/VwSAxOh4SH/3VIR33K+FJ848Yv4L7NfzQ0VCvyPSYt3YjK30pKSxS/qHlgIo+XJXFco6JyvHq43bDyLQCsvuNqoUwYkxgmVhRj+9LpCCoqZIeEymI3ZFnClaNLoraf9wXw2JzJhkW7GuuqTeXJCCKboYWr8guy2YRGUsNjiOQjcp011lXj6dePAogOf9nZchLrF02NOv5c74CeZnh4S3mRC381dTyWPPs2bv3h7/A/7b0GHfVlM6+IknkiF1f2YeaCLfM4hXJjFUUuNEW4Tpvqa1BZ7Bam4zIJs+ImMmGcA0c7erFg4z7c1LgbCzbuw9GOXqgqhyxLuKTUgwnlRbik1ANZlhBUuVDpIGhTFo0gCCIbIJudn9BIe5YT6ToDjCuKhoe/qIPqMd6ggjV3XqNPIrmktACnP/fpE0vDw1uksK/ngKLC43Rg0+JaPPB8yAVWXuSy5aIjMhMzF6yV3Jho9ESWJWE6qsqxsb4GS8NcpBvra8AhVi9STOI1zWTOAkGx6zdyvgVBEEQuQDY7P6FOewYSCCho7/XpEo0VRS587lP0BlXmcaLLGzA0MK1RiFYU7ej1QWIMTAJUABt3f4RZVaNRCAcKnBI6evz4zi/fGwpvWTwU3qKqHEc7eg1xalvuvwG/Wn4jAkEVzETmidRgsg+RC9YfVHDj5eV44KbL4ZAYFJVj01sfDX6UhSYrR46LiNJRVQ63UzJ8LLqdkj6aE1l/JGYtRRoJrZRHEES+QTY7/6DwmDSjqhwdPT59NVG/P4gj7b1Y2LwfNzfuxj/8+5/Q2tFncHUdOduDE+f60NblxfunPseJzj59dTSRy6ypvgarX3ofM9a+ibub9+Ou2nFo2n0MC5v34/xAEH+z7V3j1/HzB3CuL9Tx7+zz46nXWg0zwr//nx+AgWFsWaE+ycRMfYZIHJF1xe6KeBrBoIpPu734uLMPn3Z7EbQY2Sh0S6iffqkeHrXk2bdRP/1SFLslHDnbgwUb9+HmQVfokbM9pml19Pqw7pUj8A+uDeBXVKx75QgACOtPoVvsmnXKYpNFK+URBJFpkM0mm51oaKQ9jYg01jfW1+DHr39oKtGoyTStufMaLHn2bT0mvbTQiQuL3FEuM8YYVr/0vj6ZpK3Li0e2v4cf3HUt7m7ebxreMhBQB/OoCiedqGpof9eg2kz4DPBw9RkiMcTS448XM63eK0eXQBYY136fiuWDykFAqG4s33oQ2xqmCeXDti+djktKPVHpcHBhPQqqqrD+/MMd16CxrjpqkpJMK+MSBJEFkM0mm50MqNOeYsJndTPG8NRrrYZGtPSFFqyaW6V3siMlGrXjCgdnWGuTN7Y1TMMpf39UuMwnn/Wh1OPCa4/cZHCVXXJBAd5aMVPXUI10UTkG241iMulk+9LpAEKuONEMc019hkgMiVrKur3XJzS4q++4Rmi4zeTAgioXynUFFfGojdnkpW0N04T153u3qVj3Sqsh/XWvtBpWzo2EVIkIgsgUyGaTzU4G1GlPIaIv77Xzq9HR49cnjmqTOzVEEo3jyjy4sMiFbQ3T9IZ3+vMB1DXt02POiwtkBIKhiaOaq0y75vpFU1HocuCikgJ81ucTfh1rskuciw2AonKc6uo3XbrYzCVGDA+rpaztIR49YVFRjiHMZMI8siSU6ypwiuMRFbN6xLnpqnsVJUY3aUWJi+IdiZxiJNKNRGZDNptsdjKgnlUKEX15r9x5CMtmXqEfM67Mg4oSt0GiUbQq2Y4Dn2Bh836s2XUYj82ZjMDg13JFsRtnzw/ga+v3YsbaNzEQELvKfINxbKUeF0aPKsCaO6/BtoZpWHPnNRg9qgClnlDj0yaLhDOuzIP/ae/FjLVvoq3LG7WiqpVLjBgeZs/BrkE0Gz0xC7V0y0z4fIMcQrkus4hNs5V1nZIkTL/AxfDwrElYs+uwXs8fnjWJ5koQBJEVkM0mm50MaKQ9hZh9eWsj61rM25gSN7Y1TNPVY1770+moVcnm14wHfn9Cb3j/+sA0vPHozZAdErbuO65fJ2iyCpoy2OIlieGy8iKUFDiFcWXaZJFw70D4iqgq51EusRcPnsK3vzzREK5DcWojQ/QchjNpx0yuy4yBgNjl+c93XydMxxdQhAt7SACeWnAtHtk+pFL01IJrwRhMXaqi+MsXl8/QZc0oDpIgiEyFbDbZ7GRAnfYUYiZxdEmpB3tW3mKozGNdoUdzqqsfq3cdiUrrm392uf53RbEbQVVFR48P/X4F82vHo6s/iO0tbVAHrxF5Tdlh7mQJb8BOWUKx26HLPlWOcuNvt72nh/N0ewPo6PVh6fMtAEIrpD42ZzIWNu8f0eQbwkiiJu24bcpsuWSH4flqx5utoueQGE509uHjzn5dJuzS8kI4HQy/PNCmr6yrza341q1fFKZv5pr1B5WETO4iCIJIJmSzyWYng7wPj0mUJFM86QkljhbXosBp/hhELrbZVZV6TPsL37wBq++owuKf/hELm/dj1a/fh9ev4OEvT8S2hmlwORg2RKyAumHRVMgSw6mufrT3DOBE55Ck5HdfPIQjYaupfW39XrR1efH060exsHk/PjxrXBG1afcxg6vs4VkTo1xwtEJq5mBXZsvseLcs4akF1xq2P7XgWrhlCWfPD2DVr9/X6+PZ8wModDlwV+04gwzZXbXjUOB0CF2tDsYwu6oSGxfXYFvDNGxcXIPZVZUAIJzc1dnnT3hbJgiCSDdks4lw8nqkPVGSTHbSc8vGxQqcMsPjOw/h1cPtwuMjXWyzqyrx0KxJhomljXXVqCh2o63Li4piN/r9Cv46bKR7w6Kp2HL/DXo++3xBfG3DXuH582vGR7m4Vuw4hFVzq7D0+RY07T6GtfOr9Ri7jl4fRo8q0BdbsvraJoZPIutqZB10W0waNhstOtc3gAsKnYZ0Lih0whdUhXGT2xqm6W5Wbfsj29/DL5dOF7paNy6eim/dOlGfj6FNoHY6mLB+qapKozkEQWQMZLPJZieDvO60J0qSKVZ625dOB+ccjDHc+7M/RrmnNIlH0fUjGyAAPfREu0Z4p3rZzCuiGuCDWw9i833X47M+Py4scuHHbxw1Pd9MYrJ0cDLJOye78dze4/o9Rbr8Onp8tlx5RHxY1VU78YKdfX5hHbRKRyTLFQhy3P/sgah0tv7vLwnrj5kMWUBRha7WgMJNtYZF9Uvh4tGc4bZlgiCIkUA2m2x2Msjr8JjESTJZp/dptxcz1r6JT7u9lh1is+trDXBsWaFpQ9LSMOt0f+4NYGHzfix59m1848YvYMr4UuH5msRkOOPKPPoM83FlHjw8axIqi0P5qShxG4wNrXKWHKzqamtYONO89XvQerbH1M1olo426hFvOqqJR0XT/Q8nPJ4ycrskMeHqelaTr0T1y0yalDw8BEGkA7LZZLOTQV532hMlyRQrPS2eu7PPL9zf7Q3EfX0zGaZ+f6ii9/sVyzy0dYllJrVmvrPlJNZHxMA31lVjzAUF2NYwDavmVuHp1z9EV1iewwn3DOxZeQteXD6D3F0JwKxuMcZM4wXtpGM26mGWjtspTqfIJQklSgtdYpkwp8T0hUPC65em/x+Zvkt2COtXotsyQRDESCCbTTY7GeR1eEyiJJms0ls7vxo/+E1IHjEyHnxcmQc/f+BLCCocbzx6M1Qe0liNvH64mkuBS0JTfU3UksZjSt3Ys/IWOB1SlExTeB6AaJnJxrpqXH5REfasvAUA8KPfHo2KV3v8q1diYfN+PQ2rFU9plbPEY1ZXHUw8umE2WmGWjtWoh0gO7KIitzAdb4Bj17tGxYEdBz7BN278Ai4pLcCzS26AxACVA04HwBiEq+utuROmbVNUvxLdlgmCIEYC2Wyy2ckgrzvtiZJkMkuPMYbVL72vyyO+c7Ibb7Wexb8+MA0BRYXHJeFcbwAPRnTALy5R0dkXhD+owONy4Ox5n6Fib7n/Bvxy6XQEFBWyQ0JlsRuyLAFFIYnIf/yPI3qn+8IiFxp/c0TPAxDqqF/gceorqmoaq2PLCtHR48PejzqxvaXNcLwdbwCReMzqqua9iXcOgd10nLIklAO7rLwIEyuKsX3pdATD6mF77wBumjzaMFF67fxqyA6Gz/qVqI/NYrcsvK4kSbbaZqLbMkEQxEggm002OxkkvdPOGHMAOADgFOd8brKvZ5dEjwqHp6eqHI9/9Sp8/YZLUehygAMoL3Li65tCE0l/+7c36x12YGgxgl80TMPRs70odDlQXuyOcoHd+7M/YvvS6XBIDM5BvfWOHp/+oVBR4orSTT98ukdveI111XhsxyG9Ix9uMERfv031NXj69Q/1Y+lrOHMoL3Jhy/03RBlou8/HLB2Xg+lyYOH158IiJz7rCxiOHygPqRqIVu/b1jBNuPDG9qXTbY3OWEEeHoIgMh2y2UOQzbaPZaedMXYxAHDOzzDGKgD8OYBWzvmfbFzj2wA+ADBq2LnMUlSVo9+vRDUeTV5RMnGTKSrXz9mxbLrp5Na6pn2YXVWJh2dNivoaBkIurEhJRqcsoXcgqGutR3bCRV+/ZR4nnpxXjSdup6/hdGEmHzaxohi+oGqoY5vurU1YOr6AWA5s57LpwhdD5AiMdo6VEgGNthAEkWuQzSaSgelEVMbYUgD7AOxnjD0IYBeAuQB+xRj7ZjyJM8bGAbgNwL8kIK8ZgZ3FANp7fULNc20SqKJyk4kq0Cd5XOBx6gsUhB+jTTYR6aove6EFq++4Rp/0cVl5ESpLCjC2rBCVJQW4rLzIcqJouFpNRUko9Cb8f2qcqcdMPqy912drMpLddAIqx42Xl+O1R27CG4/ejNceuQk3Xl6OgMqFLwazyUhmSgRymDwZ1S+CIHIFstlEMrAaaf8WgKsBeAB8DOCLgyPuZQDeBPDTONL/ZwCPASgxO4Ax1gCgAQAmTJgQZ7bTg93FEgKKKvxS1eQVN731EdYvmmpYjGDzkuvRft6HNbsO69vWL5oKAPoCTOETS80kHjnnGFtWKLwPckkln0TXazPZL7M6ZjYZyW46LpmhfvqlhnjH9Yummk6mkiQmdJ0WFzii6vr6RVNR5Ka5EdlGNtlsgogXstlks7MBq057gHPeD6CfMXaMc34GADjnXYyxmGvNMsbmAmjnnLcwxmaaHcc5bwbQDAC1tbUZvYat3cWYXIPyjJETNrSb3PtRJ5bfeoW+WqnKgUKXA0s2v224hrZAwRO3Xx01uVXTVY93UguRGhJdrzV5rKhJRyZ1zClLwg/M8iKX8HhtVCVyeyBob8EMh8nkIgAoKwwalAjcMsOoApobkW1kk80miHghm002Oxuw0mlXGWPaqj+3aRsZYwUxztOYAeAOxtgJAL8AcCtj7IXhZjQTsLsYk8vJhDqnY0uHNM/Xv3EMblmCW5ZwgcdpugACAIwtK8TFowrwyFcm62nubDkZtdABTRTNPcwWraosdgu3y5JYCzioqFg731gn186vhluWhOmYxTUqKhcef1GRW+g6lSSGsaWFuMDj1Ov62NJCcqsSBJGTkM0mkoHVSPvXAIAxVsU5Pxy2/UIA34mVMOf87wD83WAaMwF8h3NeP/ysph+zL2ezUe0Bv4p1r7RGaZ7/cMG1+jHdXj9cskMfqe/o8Vlew2yiKE0KyW2s5LFE209/Ll59V+HAc3uPG+rkc3uP48l51cJ0zpwfEI/yOCRMHl0ozI/IxWu2tDZBEEQuQjabSAamnXbO+ScAwBjbzhh7HsA6AAUIdcRrAbyWkhxmEHYXA2CMoaPXp8svAqHGo3JgYfN+XemlzOPU98dzDVFDooaV+5gZUNF2xsSuU4fE8MhXJsct11VZ7BYu5lVZ7BYeb3feB0EQRK5CNptINIxz69AtxlgRgLUAahCaULoVwFrOuZrozNTW1vIDBw4kOllbmH1xxrs/nLOfe/E/HX2GFVDXzq/GqAIZtz+zB0CoUW5fOh2cc0MsWbzXIBJKUgpZVK/t1KPhYFb3vlhRhIqSAuG1zfIUDKpo7/UZFuSQZXGEXEePD/PW74l68ZjN+yBSQtKMh5XNvuzxl4ed7onv3xb7oBxgJGWUajL0mZDNJpudi5hWrHgWVwoA8CKkIlMA4HgyOuyZQDxfnHbcRZIkCd1a82vG68e0dQ1prodfjxpL7pKKkQ2zuvfkvGrboy2yLOGSUo/JlYzYnfdBEASR6ZDNJjKFeCaUvo1Qp/16AH8G4OuMsR1JzVUKCdddP3N+AP928KSukb5qbhWeeq3VVD81FuVFLjzylclYs+swFjbvx5pdh7FkxhfQtPuYfky45nosvVYiNzBTIRrucxetHVBe5MLjX70KrsEVc10OCY9/9SrTUK5E5Umb9xEOqRkRBJHNkM0mMoV4Rtq/yTnX/ERnANzJGFucxDylDNGX6vpFU/HMG0cNmuiqOjzHQuSEE9FqpOGa6wB94eYDiRzZSNSqe4nKk915HwRBEJkO2WwiU4g50h7WYQ/f9nxyspNaRF+qy7ce1MNX2rq8WLnzEJQRKLaGSylFrka6fel0PLf3uK65DtAXbj6QyJGNRK26l6g8hX+omq24SxAEkU2QzSYyhXjCY3IWsy/V0jA1l7au0OqiiSK8Ex+puU5fuPmBmX7vcJ77cFbdS3aeaIlrgiByCbLZRKYQT3hMzmKmu97tDRj+T9bIt5WOK5G7JPK52111z6wuU10kCIIQQzabyBTyeqRd9KXaVF+DnS0n9f+33H8DOLhhwkgioS/c/CRRz93uqnvlRS7hJKhE5okgCCLXIJtNZAJ5PdJutrrok/Oq8cTtCjwuB86e9+He9Xtp0QEiI7G76h4AWkiDIAgiTZDNJkZCXo+0A9FfqrIs6f8rKhIq80QQycBstEW0PdHSZQRBEIQ9yGYTwyXvO+1W0KIDRK5BdZogCCJ7IJtNhJPX4TGxMJswQpKMRLZCdZrIBi57/OVhnXfi+7clOCcEkV7IZhPh0Ei7BYmUVCKITIDqNEEQRPZANpsIh0baLSBJJSLXoDpNEASRPZDNJsKhTnsMtIkhBJErUJ0mCILIHshmExoUHkMQBEEQBEEQGQ6NtBMEQRAEYclwJwcDNEGYIBIFjbQTBEEQBEEQRIZDnXaCIAiCIAiCyHCo004QBEEQBEEQGU7SOu2MsfGMsTcZYx8wxv7EGPt2sq5FEARBEARBELlMMieiBgE8yjk/yBgrAdDCGHuNc344idckCIIgCIIgiJwjaZ12zvlpAKcH/+5hjH0AYCyAtHbaVZWjs88f9yIFdo8nCCI9pKKtkj0gCIJIDGSz7ZMSyUfG2GUApgD4QyquZ4aqcrSe7cEDWw6grcurLwc8eXSJ8CHaPZ4giPSQirZK9oAQMRIpRILIV8hmD4+kT0RljBUD2Angbzjn5wX7GxhjBxhjBzo6OpKal84+v/7wAKCty4sHthxAZ58/IccThEYq6zWRmrZK9iAE1W0iF6F6nVrIZg+PpI60M8acCHXYt3LOfyU6hnPeDKAZAGpra3ky8+MPKvrD02jr8sIfVEyPryh2Y9XcKpR6nOj2BtC0+5jp8QAQDKpo7/UhoKhwOiRUFrshy+bfRrnmuiFCpLJe5xuiNjOctmoXq2vkUzumuk3kIlSvkwfZ7MSRtE47Y4wB+CmADzjn/5Ss68Qi/MEwxrB67pWYMbESDolBUTl2HPgELtmhHx8IKGjv9SGocsgSww8WVOMbP3tbd608teBaeFwO4bWCQRVHzvZg2Qst+vFN9TW4cnSJsOOei64bgjDDzEja2Q5A2GbGXODG9+ZehW//4l19+4/uvg4elyNhxtnjcuDv//JKPLL9PYM9KHI7qB0TBJFzpMtmW13bDrlos5MZHjMDwGIAtzLG3h38/WUSrxeF1imet34PZqx9E8/t+Qg1X7gIS559G7f+8HdY8uzbmHvdOJQWhL5dAgEFR9p7sbB5P25u3I2FzfvR51Nw4+XlAEKj8o9sfw9BRfwR3t7r0zvs2vHLXmhBe69PeHwuum4IQkRkW5y3fg9az/YgGFRtbT/X5xO2Ga9f1Y2/tv3bv3gXAUV8XVW1P5AWVLhu/LVrPLL9PfT7VWrHBEHkFOmy2UGFm17brt3ORZudtE475/y/OOeMc17NOb9u8PcfybqehqpydPT4cKqrH2fOD+Cp11r1B1NXOwEPRnSqHxzsVH/c2Yf2Xh92vdtm2L9860F8a9ZEbGuYho2La3Dj5eXwKyo+7uzDp91eBAKKfr2AoqKi2I2Ni2v04yuK3QgqqjCvdsN1CCJbMftAbe8VG3Sz7QMBkzajqMLtvoAyLOMcCCg41dWPjzv7Qm07oGDApL0GTK5t1Y7D7VRHj29YHxGJTIcgCCKcdNnsgYAyrAHNfLHZKVGPSSRWLhNV5TjV3Q9fkENigMqBv509CR09frxzshsOiQkf1OnPB1DXtA/jyjz42X21+MrVY6CoHN3eAD48fR4SAypK3Kgc5cblFxXi7ub9uktlQ30Nfvz6h3j1cDt+/9hMPDZnMlbsOGRwxbhlCae6+qPy65QljCvzGPI0rswDp0UMPEFkOnbiFxVVbDwVVRUe72AMs6sqMb9mvL59Z8tJyJJ4u0NiuPHycjxw0+V6SNymtz6yjGnUPG4PhoW5baivwehil7C9yhITbg8Pu4ssHzPXLIC4XcIUXkcQRCLINJvtDyq27LaiqHljs7Oq0x7rhs8P+NHVH8DyrQf1/esXTcXqO6pw50/2AoDwQWlfbxXFbnT2+vVO9+yqSjw0a5Khk95YV42KYjfaurz6SP2quVV49XA7FBX6ucCQK2bNnddgybNvR+VXlhga66oNnfzGumrI9MIlshSzNlpZ4or6oG2sq4bExMZTYkx4fHGBAw/PmhQ1b8TjkvCtWydGtf0it4T66ZdiybNvG7YXOCVTW9Le6xN65LY3TBO21wKnhE331kalpcVzRmI2ivSr5Teis9cft0E3S+fF5TNQUeJO9KMliGEzElnME9+/LYE5ISLJNJvtliUwBlt2e1SBnDc2O6uGdDv7/Pi3gyex+b7r8cajN2PzfdfjD8c6cOb8AE519aPPp+gVABgKbykvdmNbwzQ4HaFO8rgyD4BQRVs7vxpNu48BAJbNvMLQ6Z5fMz6qIqzYcQjLZl6h56mty4tSjxMAoHIu/AItHJxYEeni8foVrHulFavmVmFbwzSsmluFda+0wuun8BgifjIpRMLMKPkCatQH7Yodh8AYsHZ+dJtkLPoDeMWOQ+jzqcJ5I16/Kmz7fT7x9oGAeUxjUBW344DKhe11IKBiYkUxti+djrdWzMT2pdMxsaLYdOTELCzOKk920qHwOoLIbMhmm9vsgaCKgYA9u51PNjurRtoZOG67dqz+9aWNhC/YuA9tXV7sWDbdxG3DsbB5P3Ysm64/wFKPE2NKPfh/u/6Ed052AwBKPU7D+ZH/a+lpnXQgVGG7vQEAgKJy4Reotl87X3tALtmBjl4flj7fYjje43Kgo8eXdVJEROrJtBAJM6MUMDGqnAPP7T1ucKk+t/c4nrj9anE6JrGIZkbb7nZ/UDF1ncoSE7ZXpyzhaEdv3K5Tl+wQpu9gsGXQzdIxc/ESBJF+yGZb22BV5eAQ20Kzc/LJZmf8SHv4F6kvqOKZN46ajoR39vn1rz+NcWUeBAe/Yjv7/PoDXNi8H8+8fhTfunWifk6/XzGc3+0NCNPrHxwJ1+KmdracBADsOPAJNtTXGL5AG+uGRvK1bSE1TKC8yIVN99Yajt9y/w04e96XELULIvfJNAUizSiFoxnP2VWVhknas0/kQUYAACAASURBVKsqUeCU8NCsSViz6zAWNu/Hml2H8dCsSShwSqbpiLY7TbabHW+23SU7UFnsjmrHG+prUCFor5vurYUsMeEz6Pb6hQoIZR6nMB2PS1x2ZgZdZD+sXLwEQaQfstnWNtslS7btdqFbyhubzTjPnM5gbW0tP3DggP6/6It07fxq/OA3rXjnZDe2NUzDwub9+vFTxpfiO38xGSt3DsUvbVg0Fc/v+xjbW9qE+7c+8CUogxKOsoPhvDeou3K0kfwHI2KxSgtl+IMcKgeK3BIckoRAMKQQ86uWNsz5X2PgkBhcsoRzvT586+fvGPL/xYoijL7Ao99j+FcdB8fX1u+N+hKjONWUkJRhjsh6nUhOdfVjxto3o7bvWXkLxpYVJuWaVpiNIo0e5cKpbl/URKGxpW4UO2V0DIalyBJDRZEL5/r9OH6u39BW186vxsTKInT2BaLS/+JFRfiwoxdLnx9Kf+PiGlw8yo1T3QNRcZMXj3IL09FGuyLXa6gsdsPpFGu+n/7ca/oMFg7Oh9HQ2nJ5kStuPWOrEbg4tYyTNnxnVbdHEsc8XNIR/5yO+8wnYjxTstkjJNNs9uTKEnzW78OZ8z5bdltR1Lyw2RkdHiP6Il258xBWza3C0udb9JFwbf87J7vx3N7j2NYwTX9wW/Yex/aWtqj9isohOyRUFLnQPRCEP6iAA9iy94TB7bP7g7PC4xmiC7yjx4dtLW344W+PAgA2Lg6Nwke6kZ6cV63foyQxQ2f8VFc/xakScZNpIRKSxDB5dAleXD7DYJTOnB8QTxRaOh0XFskY6zKaIrXPL3TB/p/brxamL0kMkytLsH3pdAQVFfLgasTtvT68/N4pbL7vesOCat+Ycbke0xi+erGu7OR0CF+gke0VMH8GiskcF39QEaYDwPTerMqbPuYTA3W+iVRANtvaZsuyhKAK23ZbkvLDZmd0p90s1kr7wtnZchIb6msMX4IPz5qEf/j3P+HVw+2YXVWJh2dNwsvvn9X3P/KVyRhzgcdQqBXOUGNp7xnA3o869U4+EHqQC780AWNLCqKOj0RzfWgfGjtbTkbNmo7lCsm0Bk1kNpF1LhNCJERGiZsYQzNPn8clYcmML0TN+ve4JFOjJ8sSLik1uiori924/bpxBhWCpkG3qVlMo924UrNnUOC035apE04QuQ3Z7CFENhtIvt3OZpud0eExHT2h2O7IAjQbKWeMYfVL7+PVw+368bOrKrH6jmvAOU+Jhmak66PM40SXNxD3V1imTVLJM7LO1QokZrnnZGPWls3CvlSV40RnHz7u7Eehy4F+v4JLywtxWXmR7XsLBgfdpmGjOV3egK38xMLO8t1paMsUHhMHNNKemeRaeAxANjsekm23s9VmZ/RIu9nXkNlI+amufkOHHQBePdyOJ27nccWKmbmJ7Dws0VeXncqUiDwQ+UU2jM7aHV2SJIbLyotQUuAccTsQjeYkWi4xUa5TgiByH7LZsUm23c5Wm53RnXa7HdiEyOlkQGPKhDwQRCIZzsdoMttBqsLQqC0TBJGNZJrNBlJjtzPdZme85KNWgGPLClFR4rasMCSBRhCZi522nGzIVhAEQViTSTYbILsNZPhIu10otIQgiHggW0EQBJFdkN3OsImojLEOAB+nOx+DXATgXLozEYNMz2Om5w8w5vEc53xOoi8Qo15nQxklGrrn1JKUeg1khM3OhbpE9zB8yGanBrrn1GJarzOq055JMMYOcM5r050PKzI9j5mePyD9eUz39dMB3TORKHKhXOkesot8ulcNuufMIeNj2gmCIAiCIAgi36FOO0EQBEEQBEFkONRpN6c53RmIg0zPY6bnD0h/HtN9/XRA90wkilwoV7qH7CKf7lWD7jlDoJh2giAIgiAIgshwaKSdIAiCIAiCIDIc6rQTBEEQBEEQRIZDnXaCIAiCIAiCyHCo004QBEEQBEEQGU5GddrnzJnDAdCPfun6JQWq1/RL8y9pUN2mX5p/SYHqNf3S/DNFttqZas6dy7dVcgFV5ejs88MfVOCSHSgvckGSWLqzRSSQfKzXRGpIt/1IRN1O9z0QRCRks4lMJaM67fmGqnK0nu3BA1sOoK3Li3FlHmy6txaTR5fQS4sgCEtywX7kwj0QBEGkiowKj8k3Ovv8+ssKANq6vHhgywF09vnTnDOCIDKdXLAfuXAPBEEQqYJG2tOIP6joLyuNti4v/EElTTkiCCJbyAX7kQv3QBC5ymWPvzys8058/7YE54TQoJH2NOKSHRhX5jFsG1fmgUt2pClHBEFkC7lgP3LhHgiCIFIFddrTSHmRC5vurdVfWlo8Z3mRK805Iwgi08kF+5EL90AQBJEqKDwmjUgSw+TRJXhx+QxSTiAIwha5YD9y4R4IgiBSBXXak0wsOTNJYqgocacxhwRBZAp25Q+z2X5E3uuYCzzUWScIgrCAOu1JhOTMCIKIl3yyF/l0rwRBEImCYtqTCMmZEQQRL/lkL/LpXgmCIBIFddqTCMmZEQQRL/lkL/LpXgmCIBIFhcfYxE7MqSZnFv5yIjkzgiBEdiSf7EX4vU4ZX4plM69AeZELjDGoKqcQGYIgCAE00m4DLQ5z3vo9mLH2TcxbvwetZ3ugqlx4PMmZEQQRiZkdKfM488ZeaLZxdlUlvvMXk7Fm12HUNe3Dgo37LG0qQRBEPkMj7TYwi8N8cfkMoYIDyZkRBBGJlR3JF3uh2cbVd1yDBRv3xW1TCYIg8pmkd9oZYw4ABwCc4pzPTfb1kslw4jCHI8lmV/aNIIjMRNSWrexINks4WmFm0zjnFNtOEAQRJ6kYaf82gA8AjErBtZJKKmJOSQqNIHIDs7Y8epQ7b2LXAWublk9x/ARBECMlqTHtjLFxAG4D8C/JvE6qSEWMOkmhEURuYNaWgyrPm9h1wNqm0bwfgiCI+En2SPs/A3gMQInZAYyxBgANADBhwoQkZ2dkpCJGnaTQcoNsqtdEcjBry4GgmtWx63brdqxwoGwuCyJ3IJtNZANJG2lnjM0F0M45b7E6jnPezDmv5ZzXVlRUJCs7CUOLOR1bVoiKEnfUyyUYVPFptxcfd/bh024vgkHVVvqauzgcchdnH9lWr4mRIWr3Vm05lh3JZOzWbbNyCJd3jCwLVeXo6PHhVFc/Onp8pCZDJB2y2UQ2kMzwmBkA7mCMnQDwCwC3MsZeSOL10k4wqOLI2R4s2LgPNzfuxoKN+3DkbI+tjju5iwkiuzBr96UFMrVliG3a2vnVWP3S+0J5R7vSugRBEPkC4zz5hpAxNhPAd2Kpx9TW1vIDBw4kPT/J4tNur0G+DAi9oLYvnY5LSj0WZxoh9Zi0kZRCzvZ6TVhj1e4vHlWQCW05aReMt26rKseZ8wP4tNuLzj4/mnYfwzsnuzGuzBMl79jR48O89XuiypNkIAkBZLOTyGWPv5zya574/m0pv2YGYlqvSac9BoGAgvZeH4IqhywxVBa74XSKQ1UCiiqM3Qwq5iPtZh10ejnFT6yPHPoIIhLFwEAQnV6/bg/KPS7Ldk9tOYQm71jXtM+wva3LC1VV0dHjgz+owClL8AUUVBS7sWpuFUo9TnR7A2jafQz+oKIfR+04uyAbTRCJISWdds75bgC7U3GtRBIIKDjS3osHX2jRpco21NfgyspiYcfd6ZCE8mWyQxyFRPKOIydWGVIZE4liYCCIo519UfZgbKlYwtGs3ecrInnH2VWVONfnx9Lnh8r0Xx/4Eh6bMxkrdhzStzXWVUNi0EfgqR1nD2SjCSJx0FvFgvZen/6CBkKjQg++0IL2Xp/w+MpiN5rqawyxm031NagsFo+0kbzjyIlVhlTGRKLo9PqF9sDrV221+3xFFNv+vduq9A47ECrTU90Deodd27ZixyF8/JmX2nEWQjaaIBIHhcdYEFTFq/UFTSZEybKEK0eXYPvS6QgqKmSHhMpiN2RZ/G1E8o4jJ1YZUhkTicLKHthp9/mKSN5R1D4ZICznyDFXasfZAdlogkgc1Gm3QJaY2O1tEYtX5nHC6ZDAOYfTIVm692g1wJETqwypjInhIJrLYmUPZFmyNdk8X4mM8e/o8WF2VSXm14zX49clJi7nfr+xE0ftODsgG00QiYOGgiyoKHJhQ4Tbe0N9DSoGJdsipcm+++IhHLEhVUbyjiMnVhlSGRN20eayLGzej5sbd2Nh834cae9FuUdsD8o9VJeGywVuBx6aNQlrdh3Gwub9WLPrMAqcEjYsmhrVZi8tL6R2nIWQjSaIxJESycd4yTSZpY4eH15+rw23Vo0B5xyMMbxx+DRuu3YcKkrcUdJkGxfXYM2uw7akymjW/MhJoDIByYcRONXVj4XN+6Pa8baGaSj3uKLUYwoKMt5hmXbJRzOsypqxkOKM1mYBkK3MUpKoHkM2O4mQ5GPayB/Jx5F2gsPPB4Bfv3cGq3cdMRzzlavHAIiOxSv1OG3H5uWjJFyiP1RilWE+ljERGzM5V6vY9YICGWMzv5OeVuJt36rKLcv60vLCqHOoHWcuVs+dbDRBJIacevuMVDpKdH5jXTXWvdKKd052A7COxev2Big2LwYk70VkAlZyrvHMZSHExNu+teNMZXKprLMKsusEkRpyKqZ9pNJRovNX7DiEh2dNBBA7Fm9ny8ko6TeKzTNC8l5EJmAl51pZ7BbGrpOEY2zibd/acc2/O4b1EfHrVNbZB9l1gkgNOTXSPlLpKH8weiW+D0+fx6TRxfjdipmQJYaKIpfBBTixotggYVbmcUb9T3GYQ5C8F5FqRKuYWoVlOJ0OXFlZjG0N0+JaCZkYIlb7DgZVtPf6EFBU/OSeKSgucMLBgF80TAPAIYHB7ZTQ3usje5lFkF0niNSQU532kUpHFbgkw0p8S//8Msy9bpw+UUobBdr1bhs2/v6EqQtQi80jl2E0JO9FpBKzVUzHma1iOtgunU4HxpZFx1QT1li172BQxZGzPVj2QgtuvLwc9dMvxTd+9seh57JoKko8Mhb8ZD/ZyyyD7DpBpIacCo8ZqXSUP8ANK/HV1U4QutDraifo/1u5AMllGA3JexGpxGwV036/SiEwScCqfbf3+rBs8Fk8cNPlWL71oPG5bD2IoAKyl1kI2XWCSA05NdIuWnHPjnvVr6iGkQKHxIQuP0dYelYuQHIZRjPSZ0QQdrBcxZRCYBKOVfsOhNlXM9saaQby3V5mC2TXCSI15FSnPR7CYyqdEcuNRyoZKCoXuvyUsMWSIl2A4enLEsPsqkq8erjd9PjhYFfztszjRJc3kDHGlOS9iGQgil23UoKhEJjkYNa+w+2rmW11OiRMGV8KAFg28wqUF7nAGNMXqMvn+UHJXNMjEe8MsusEkXxyqtMeK4Y8PKZS299UX4MrR5dAliVcVOjEhvoa3Z2+48Anhv81F/qeo6FOuHZ+mccJAML0N9TXAABePdyeEJdhrHsU7W+qr8HTr39oyAPFiRK5hFns+sTyImEbplVMU09lsRtN9TVY9kILXvnv08Ln8vrh01h9RxUGAioe/eV7BhvnliXcGxYDn092LJnzo+idkdukY4EkInnk1IqokSuUAsYVST/t9mLBxn1R+7cvnY5LSj34tNuL1S+9j/k143X1mNNdffjy1WPgD6pQVI4dBz5BXe0EfNbnR7c3gJ0tJ/HkvGrL9Lc1TAOAhIyOxLpHs/2r5lZh6fMtUccTBmh1vSwlB1cxTSQZsyKq5olUOcf//fc/GWztzpaTmF8zHi6HhFW/fj/qWa658xosefZtw7Z8sWOx7H4y0s6SdwbZ7BhkW6edVkQFkC8rosaKIQ9ExKxr+4OKqu/v6DFOejp8uhezqkKGrdsbwB9PdOPWqy7Gwub9+jFP3G6dvqJyTCgvSsk9ivZXFLsxaTB+t9sbQNPuY7biRK1Ciggi1diVcKRVTDMHWZZwSakHH3f24dXD7YbQQQD45p9dDgDCZ1nockRty5d4dyu739HjG1HIjFnapYMe5CnjS7Fs5hXo9wfxabdqsP/JDNkhCCKanHqTxZKdMl19zxEyQB6nwyD5OK7Mg/WLpmLNrj/pbsLGumqoXBzTHiv9VNxj5P4p40vx2JzJWBzmVm6sq0aBK748xQopIohUYhYGM7rEWsKRyCxcJrYyoKgIKOJ490ifcD5JCprZfUXl+ij5cMNYzNLu9gYwZXwpvvMXk7Fy56Eo+y9JjCSNCSLF5FR4zEhj2tvPD+BrG/bGdBP+4K5rcXfzftvpJwK7Me2b77te6Gr+5dLpGFPqiXm9WCFFOQa5WjMcszCY7Q3T0NkfEMa051kojIiMCY/R6OwbwIdneg0DJI111ZAlCS6ZRcW0N9ZV47LyQty1MT813EV2f+PiGvzotx9GCR3YDWOximmfXzMea3YdFtp/p0NKWsiODfLGZmdbmMtwofAYAPkSHhNLdkqWJVw5ugTbl05HUFEhR4R6mIW3aG5C7f9LSj3Ys/IW2+mn4h4j95uFDQQGQ4JiESukiCBSiWl9VjkmlhcZJBzzMHY9axjwq1j3Sqth9el1r7TiR3dfB5csoaPHh833XY9eXxDtPT6se6UVz9wzJW8lBUV2X1XVqPCi4YQMidIu8zjx5Lxq9PuDpvafc3FbzJeQJYJIB7beaIyxf+Sc/32yMhMPdmPoFEXFmfN+Qzy22QixlZsw/H+P02E6kqDFbCYS0T1bjWSES2992u0V3pNDYvi4sw9Oh4SKIhe6B4LCMjUL+XFIDKe6+oXyYLHkwigOkogHuxKOFLueuWhtXlVVBFUODqCj16d7MIHQcyxwORBUOB4MW3hJ2+eSze1uPuKUJcyuqtQn86qcgzEGhXN09PgMdlVkcwFrCc2QuIJqKs3JB/+mVVAJInWYvuEYY09HbgKwmDFWDACc84eTmTERw5E73FBfgx+HSVdZhauUeZy6JFnk+UB6VnkbqdRXuMxa+D39w78PxelvqK/BrnfbsPH3J6LSj+f8SHkwK7mwZEqXEbkDSTjmDlqbf+q1Vnzjxi9g5c5DuPHycqxfNFVfFVWzG76AgjW7DmPt/GpDHHW+r64ptJuLa/HYnCtx3+a3UVHsxmNzJuM7ETKZk0eXAEDUuVvuvwG+oBrTDlcUuaLaW1N9Dbx+Bd9/5YOo5xQugUwQROIxjWlnjLUB2A3gVQzF1/wAwHcAgHP+XKIzEyuOLFFyh2bx2B09Pnz3xUMGGbKDJzrxjRmXg3OellHhREh9aeovQUWFQ2J6hzs8vc33XY+vPPWWMP14zo8sYzO5sGRKlyWAvImPzHRIwjGhpDWmXWvzq+ZW6fHRGxfX6BKP4ZKPX7/hUix59m1dsaS8yIVLSj24eFRBXn/Um9lNTQZz4+IaYez5i8tnAEDUuWZznSLtsOideGGhC49sfxdtXV7Dc7rA40Tjb47oEsgpIm9sNsW05xXDimm/CsAaAHMArOCcn2KMPZGMznq8DEfuMDImvaLYDZVzPbTjArcDHX1DHYD/dckFBpctANx74xfStnJirHuOh/CQHU1qLTI9R9gLMTJ9znnoh1BMceT5FcVuVI0ZhTcevRmKyrHprY+i5gHEekYUB5m/kIRjbqO1+VKPU3+mpR6nLvm4oGYcHrjpcjz+1atQ5HLgP7/95zjvDaDbG8CTL3+AZ+6ZktcddlXl8AbEseWaDGZ42Ybv9wYUuB0MFcVuw/yBi4pdhuO1zrd3UNbRwQCFAwCPkubc1jBNP/edk936+3JbwzS8erhdl0AmCCLxmL75OOc9AP6GMTYVwAuMsZcBpFXjL6ako2wuIwYMyR/e3TykQBAZPqOtYPrD3x6NSj8dxLpn2+mZxKiHE55+IKDgSHuv7h7dfN/1QknJr28aKtP1i6aCm8hiJvp+iOyGJBxzH63Nd3sD+jPV/r7x8nLUTw+NrmshHpGKMh5X/toGLSzmzOcDwvbQ7w91kMPLNnz/sfZejL/Qg7//yyvxyPb3DDZ6dlUlXj3cLpR1XDu/Gs/tPY6/vmWifpxGv18xnftFtpwgkks8nfABALcC8AL4LwBgjM1MYp5MKS9yYdO9tXonMzLWUZYYGuuqDfsb66rhHjQiD8+aqL8QgNBIxIMvtGB+zXjD/381dZww/XQQ657t4nKKy6jXFxSm397r0ztUAPD060cN54vKdPnWgygpcArTS/T9ENlNp9dvqF9aGwwqKjbU1xjqCcWuZydam9/ZchJr54dsR9PuY2isq0bDzVfoce3LZl4RZUtW7DiEoJo5ssSpprPPjwe2HMDTrx/Vyw6ALvl4YZHTUJ7h+9fOr8bTrx/Fyc+8eocdGLLR37utCuPKPFg28wq9w67tX7kzFBLz1z8/iMe/epUh3UvLC6Ns+Nr51djZcpJsOUEkmXh8zNsBbAHQCGAzY+zHAGoBTLc6iTFWAOAtAO7B6+zgnD8xkszGkjv0+hVTGbG3VswEh3ilvchQDpVzoaRjOoh1z3YxlVr7+hThPUeGKbxzshvrXmnFLxqmgQn2A0PhNqL0En0/RHZDEo65j9bmn5xXDVVVsa1hGhSVo8DpgDcwFC5nFuIRCOavvKwWWtTW5cUPfjNktzWv07IXDurbVM6x9X9/CWc+H0C3N4Af/KYV75zsRqHLYWqjX1w+w1TWUXsen3sDWDW3ClddXAKPS9Y75ZoNZ4zBwYAn51WTLSeIJBPPG/BLANYC2AugBMBWADPiOM8H4FbOeS9jzAngvxhj/8k5328ng5FSVVYz012yQygj5nHJ+iTIeCQdR+KCjyVnqE3q1CQoreQWw9MMKCGpNKaoUBQVnX1D55QWyOjoM8pammnDi8po6Z9fBgcLdaAQVBAMKvjcp8AfVCBLDKvnXokZEyvhkBgUlWPP0XZ9loSVBJ82D0BVuWGp7ZGqC4jqhJXEJJEZkIRjfhFLZtApAwFl6PmbhXjkerhFeDkVuR3o96u6LS9yO3RZx8svKoTbKUNRVcgSgwrgu7ddhc4+P77/n0cAAI13XWuYnzRlfCnKi9349V/PQKHLgYGAgqCqorTQpb9PPE5xyOKFRS7MrqpEe48Pa3Ydxq6HZqDfr+JkVz9cDgku55AscDwSklb3TXabIOIjnjdiAKHQGA+AAgDHOecxhz54KKi5d/Bf5+DPlp/TaqU2kZyg5oaNlLHSDEppgSyUiwuXdNxQX4Mte48L5Q+Hk1+rFVNnV1XioVmTDPmJvJ5oldVwiUZRGlaylpFltPTPL8Pc68bpSh1a+i3Hz2H1riP6/iXPvm3Is3b87KpKYZlWFruH9QwTXSeIzIAkHPMLM1voliXc+7M/6rHsL793Spd+1EI8wmPac11CMLyctDKJlMH83twqbN13AmMuKMCSZ/cLY/9/eNe1KHBKuG/zH/Vtz9wzBYGgatimHbf4p0Pbnl1yPTYtrsUDzw89q7Xzq9H4myN4aNYktBw/h3994Eto6xowvIca66qx7pVWdPT6DM82Hilfkv4liOFhKvmoH8DYewB+jZCSTDmAjQACnPO6mIkz5gDQAuCLAH7COV9pdXykzFK8Eo7hMlVWX++fdnux+qX3DfJVp7v6cGvVGH0F0637Qh328OvFK0cYS87w024vFmzcp++3kukKXxwp/BztGE2i0SwNM1nLyDICIJTW+/kD03DTujfx2iM36R12szzPrqrEE7dfrY+gVha74XQ6LMvE6hkOp4yHm14EeSMflmpIwjGtpFzyMZZEYbhd0dRjHBJDocuB9h4fvH5Fl4FMsYRgSgkvp0hbC2CwU30DOOf6PjObr5WthpmsY+Rx48o8+NWDNyKgqDj9+QA6+/xo2n0M75zs1tsoY0z4HtLsrlm6ZnY4gdK/eWOzSfIxrxiW5KPGNznnWu09A+BOxtjieK7KOVcAXMcYKwXwImPsGs75+4acMdYAoAEAJkyYYDg/HgnHSLnA8NVAIwkoapR8FQBcdUkpFjbvx7aGaYYOuyh9K2LJGQYU1bDfLIYz/HqR52jHaC5QszSCimq5YqmGWUwx5xzbGqahwOlARbHbMu40JPN1NS4tL4q7TCJlOP1BRc+vlZt0OHUiHVjV61yHJBxzm3jqtlk71SQKHRLT929vacP2ljYAIdnAhc3GCMpskxC0E/YRXk7hZaLR1uWF08EM+0o9zigJx6bdx/Sy1TCLZY88rq3Li4GAAg6grmlf1D5F5QDE7Vezu2bpqqpqCI3UyiITpX/z2WYT2UNM9ZiwDnv4tuftXIRz3o3QQk1zBPuaOee1nPPaiooKwz5NKiwcUQy60yR+OxLnoNyhWXpaTGXk/nhjKs3yq0tSRlw/oKjC48PvxyzPyqCiglmej3X0YcbaN/HdFw/hyNkezFu/BzPWvol56/fgyNkefPfFQ5ix9k1IjAnP/6ijDwub9+Prm/bjsTmTMWV86bDKKNYz1CQjFzbv1/PXerYHqoliRLx1It1xsFb1OpfRwmAWNu/HzY27sbB5P4529umx6+GMdP4IkR7iqdtm7VSTKFRUbrk/fFu627IdtLCPcHtrx56JyuT05wPo7g9idlVl6Bqc47E5k7Fm12EsbN6PNbsO47E5kyExY1vSpBkj0xOVseyQTN81xzr6wE3yptldUbqzqypxrs8vLItY78p0kK82m8gukqa7zhirGBxhB2PMA+DLAI7YSUMkD7h+0VTsbDmp/99YVx33i7+y2I0mgYyclt7OlpNR++1IWMWSMyx0SVi/aKq+3y07hPKL4fdjlucdBz7R8xyeppbG06+HdObn14zX4xCB0GjGsjCZy3872BYlrRd+via79vCsifr1Io+3KiNRmTSFlblIMvKBLQfQ2ecfVnp2nxmRWMwkHAvdEkk45hFmtvDS8sLQ3299FGW3NiyaivEXeoZtfzMBTaJxOPbsc69f+D7gnGPZCy347qBEo6JyoTRmxeDaBtq5ZUVOPLXgWsO2H951rS4TqW1rGpyDJHrXaLKRT758OGpfY101mnYfi3q22v7v3RYKl44D5gAAGRpJREFUnRGVBUn/EsTwiBnTPuyEGasG8BwAB0IfB9s55//X6hxRHFlk/PWPfnsUs6pGG9yCz9wzJe4VSzX1Fi2GPVK9ZaRKJFau0VNd/fjRb4/q8ZsSY3hk27tYNvMKy/sJz7NDYvhVSxsmjRmFUo8TlSVubNh9TC+TyhI3/nb7e3jnZDcAsbs5cvujX56Ir9WMQ1DlcEgMD/38Hf18jbdWzAQAYZnZVQkIL2OFc9y0bnfUOXtW3mL6TJOoHpM38ZHJ4uPOPtzcuDtq++9WzMToIjfFrqeHlMe0A9bqMV5/EF39fhQXOMEAfSXlR2dPgiRJWasocqqrHzPWvhm1PR571u8P4m9+Ef0+ePyrV2Jh8378bsVMMMbAORe2sReX34j2Hh+uurgEskOCg4UWHAyqHIGgqkszyjKDPxBSJJMj1MaCQRVnegZwalDNR4ttB4A//N2tUDgQHFS2cTkZBvyqUBnIJTvgDyqWZZEg9Zi8sdkU055XjCimfVhwzg8BmDLSdMJj1Dt6fNj7Uace/wjYd6nJshQ1QbPCaTx/JJOerGLqXbID3V4/PjrXh1KPExcWuVBR4oqSqHTKUlQcoJbnjh4ftrW0GSaGdnuHRnGCKkdFydBohUhGbXZVJcaUevDGozdDUTl2HPgEjDHIEsAYQ0evz5DvcWVDspkATF29dsok/JlG5m9cmQeMMdMY98j07OaHSAwk4UhYYWYLQ/K7wD3/8oeoerJCkrJ60qmdFZ/DO62MMTglJpQs1my4onIcbe/BpMpi4TU0acYdy6ZDUTkCHJBU4KIiN1SVo73Xh4GgCic3lwWWZQlu2YGf/tdHmF8zHo9/9Up9QrAkSRgd+WzCpjFF2mGzFcq1sgivHyT/SBDxkVVv0FiSjplOmceJh2dNipJvBKDLFW6or4Giqrirab/hHs1kLU939UVJPoanefBEp0FST5NsvGeTUeLx1fc/xepdRzC7qhJN9TWGPIaXcaKlukTPtKm+Bqtfej8uCUeSDksPJOFIjIRst+VmxHtfIrv1zD1T8NSCa/XVS7XwlOf2HkdTfQ1kB8OaXYdRUeyOksbUjvvJPVPwcWc/Hv3lUBqbFtfCKTPct/ntuGSBSwtk4Tul1OKDW3Q/W+6/YdhlQTacIMQkLTxmOMTjksrmL3IzmavN912Pz/r8+ojGY3Ouwpf/6XeGY8xkLQFzycbT3V5cWORC42+O6DKXY0o9eoc9Mg9feeotAKGR+NV3XAPOeVQZJ1CqSydyxEnrsMeTfoLzkzeu1pFCEo5ZRVrCY2KRzbbcinjuy8xuNdZVYyCg4ouVxZAYIDGAg6HQJWHuj4eOnzK+FA/PmohLywuhqBxup4Rj7X1wOhge/9V/xyXzaCYLbCYzbCUjbHY/L31rBhQVwyqLOG143thsCo/JK1IfHpMsrMJPUsFIXjRmMlef9fkNcedPzrsG/7XyFiiDMeZ7j3aYSmGZSukpqi5j2dEzFD7Dufj48FX0QhKOXBiDmQyprvBneqqrP0qS0yr9TJQOyzVIwpFIBum25cki1n0Fgyp8QQU/vOtaQ9x4W5cXFSVurPjlIfzo7uvgcsr6++VUV7+hvb1zshtLnn1bn5u0rWGa/r+oXV5U4sZrj9ykr2q96a2PEFTEcoxmMsNBxXxNRTM77PUrMeebkQ0niPihN6sNRurGM4vxC5crXD33Spw5749yTZZ4HMI8/PZvbxamqUlCavJgmit1833XC48P97dYzROwE7M5HOymn+z85DtmYTCVxS7T2HWCIMSIVrheO78aP/hNaGXRk5958dicyTjVHVKE0d4vZnZOk1nU4t41GeHI40YVyFg0OIdgXFlIha3AKekj3OHvMk36MaptO8zF5kZih8mGE0T8JE3yMRexK+cViSyxKEmvDRFyhV+5eoxQMq/Hqwjz0Py7Y9HSaWGSkIwxgzzY068fjcrD+kVTMTBo/Icj4ZjIWFS76ZN0WHIxk3BUOUjCkSBs0t7ri5LgXbkzJKmrySuu2HEIyqAny0oi8akF16JsUL6xafcxNNZVC2WE1y+aiidfPmy45vKtB9HrU4TvMpH0oyYLacZI7DDZcIKIHxppt8H/b+/ug6SozzyAf59521dwEVjl7YImAremPBEkvJTGsBeiJeYu0ULP0wTuLkA8D71EEy8xlUuZVKXA5JIqKwqlJfFEDQG5F84QrfNI3V0WDhYJ6gLJeXlRQVhiCMu67O7MPPfH9AyzM90z0/PWv+75fqoo191h+unh10//tvvp51fpbbyhkQTW7zo6ZiW73YdP4Ks3XY4Hb+xCJBxyvjVpXTnPjSF7JcFEUjMtGS++9gP41OJLkMgph3nlzdNYv+sonv3MQowmkplbpXd3X4b//uJHipb8hEKC2ReNw467ltSkFtXt+9c6nkbnVAYzkkjisolt+MHqhaxdJyqRU36/dHIb7n3uYKa9YtS6qp0+v+TmuWgkhEhIMBpPYuuaRVBVNMdCGDyXwD3PHRxzjhHAtuQwV3pbkUgT5lw0DlvXLMq0RnbqNpNWSR5mDicqHc+wLpRzGy/3IUu7Fo83z5+BcCiVqFW1YNmBXQynh0ZSPXit9wiHQwVbKvafHUbf8TOZOKZPaMH9188pub601rWoQa11Nd3wcByn3jtfuz6plS0ciUpVyvNOTqUnkrWaaXbJZKrdbnhM7fmUC1ocJ7TJ5HBe20inksjcTrm57RjT56NoOFTy5LvcvG33d4P6oDJRJVge44Lb23i5S1qv2NiDdd2zMstRZ7c3TC/z3ByzXzlyUmvMNoZlXZ1Y1z0LKzb22C6bHfQVRN0uG072hofj+PmpQdy6aQ8+vGE3bt20Bz8/NYiJLTGWwRAVUWoesis9+d6fX4UtPb/EfR+bjWVdnWNWGn3qLxbgxJnhkvObXb5/34WttqtqN0XE9lxmQk41IQYiE/mu5aPX3Pz279TKKn0706694ZMrr8avTw1gadeUzGte7juOG/9oum3LRxGxbc/l1CKyyiuIeo4tH6uDLRwDzciWj0HiJg/F40mcGDiH4fj58sStvW9lzg3N0RCGRlK5WaH45Pd+6iq/2Z2jEglrVW3rGO5sb0I4HLI9l9Wira9bLmJomJzNlo8NJTgtH6ut2CTc7uelJi6nGvh4UhGWVPvFjpYYNt45L1N/OKk9hlWbj+Dvdx4Z8/c+evmUzNe5LRKL1dknk6klq+NJhVhtu9wkX5NvU7JdmHts4UhUmNuc5yYPhUKChCqWfusnea9XVVzY1pRZadQpvw+NJpBMatE8rKo4dXYYQ6MJRMMhTLugeUxtut15oNC+2LWIrAXmdXKrkl9q/PSLQkOfiYu1cKxVi8djp4dw26Y9WNbVibuXXoa7thwY04prWVdn3uJC5bY8tGsxVmg1PLefkdfYLswdpxaOk9rYwpEIKC/nlZqH0u/9e6tFY+7rozk52el93zh5FoPD8byY7GLfcMsVWL8r1VKylNzvtM1EUm1bRNbiPMC8TmSvoWvai7VwrEWLxw23XIF0SdLN82ZkJuzp979rywE8eGNX1Voe2rUYW/t0L06eHa7KZ+Q1tgtzx6mFY0jsWzimn6UgahTl5LxS81D6vVXV9tyQ+0uy3fumW0PaxWQX+/3bDmHtde8vOffbbXPjnfPw9Zy2kbU8DzCvE9lr6CvtxW7B1aLF4/pdR/HADXMAAB0tUdv3D4ekai0Py1ndLpvptynZLswdpzKYc/EkZk0a28JxUmsMTU0NnSKoAZWT80rNQ+n3Dongmz86kndueOT2uZnSmOz3Ta90enpoFA//+GimNWRuTE6xd7REM18Xy/12+5JMJl2tVF0p5nUiew19Ro5FwljW1Ymb583IJM7tvW9mbsFVeosuFgljwcwOXDqpDeGQ4MK2GBbM7Mi08zrtcIs0Fgm7qjkv1GqrnNXtcvfB9NuUbBFpb3Q0kffwWaEWjk1NEUzjJJ0aXCk5z6nm3altYTKZREJTK1Q/ufJqJFXzWjM65dVQSBCLhPH5H/6saB52ij27hWQpuT93X+xaB9f6PMC83pga5YHbcjV0ecyElijWdc/CQzv7cOumPXhoZx/Wdc/CBOuqRKW36DqaI1h+5XSs2rwPS7/1E6zavA/Lr5yO478bBABs730zrxVXtW8BlrO6XTbepvSn0dEEjpw8O6aF45GTZ9nCkaiIYjmv1HaE6dd9ecch/G//IFZs7ME163fjK//8GiIhwSO3z61aGWSh12W3kHST+8vZPhHVVkO3fCylrVQlnVOOnR6ybcf4g9ULAaBu7RfjcavdV4mr2+UyuXtMlQWmfRhbOFIWtnx0qVDOK7UdYfp1X1nehYd29uW9fuvqhYAIVLWkvFpqHs5+XXpl1XOjibJyfznbr7PA5OxieAW6dgzsHhPclo+VJBKn+r+h0QTe/t17rls85hpNJDG5vWlM3eJju99AIqn4g4nnCxdrfQuwnNXtcv8+b1Oaa2Qkjv7B85PwyW1s4UhmMnTil6dQziu15j39ukLPLoVCoaJ14bmfWaEVUYvFXgmeB4i85+szd6XtCAu101q1eV/Fba1aomF84frZuH/boTHtt5qj9asHN71lI1VmZCSOo/35LRynXtDEFo5klKDkIqdWvk7tGu2eXVrW1YlTgyNY84+9BT+LoHxmRFQdvi6PqXTltkI9bdNP51eyEtzJM+fwyUfzV7N7/rOL0Tm+2fX7lcOE1e18xHe3WguVwbz73mjeZH5OZzuidfylkYxgRHlMUHLRu4PDOPrOQN7FmNkXj0stjGRJn1/+4aWj+PTiS/DF7edf/8xffQi3P7635BIbv39mNeSrnM0SFzOxPKZOKm1HmNtWCgDufuaVzITd7fvlcmq3OFpiu8VqML1lI1WmUBnMnM72MS0cO9ubOGEnzwQlFzm18nVq1/iNT1yBZDKJrWsWZerX3ZbYFHsdETUGX0/aq9GOMLtOr39gGP05C09U0taqVu0S0w+WjiaSiNo8XJRdAykirlZYJXO5beEYjYYxbUKrhxETneeH9rGliEXCrto12l0RL7WFYvZnNndGB9Ze935MbItBJLVid7ESGb88Q0BEpfF1y8dqt6Ey/f2A1IT9yIkBrNjYgw9v2I0VG3tw5MQA4vHU1fvcdmQrNvZgXfcsLOvqrFoMVH9uWzhO5r8vGSYobQOrsR8TWqK2rXjT7YZzt7WsqxP3fWw2HtrZh1se68GKjT22bSazldqakoj8w9c17UD1rySY/n5ObSS3rlmEqR0tjjWQ2bdmebXFkbH1kYVq1ye3xfK6x8Rivr6JRtVlRE07EJwrv5XuR//AML6841Dewn7f+MQVtgs0vXPmnG3eL1Tb3iD18MbmbDusaTcTa9rrqNptqEx/P6c6+fTS1E41kKrKUgkfK1S7HotFMI2TdPKBoLQNrHQ/RuIJvNh3ckzZIgB89ab8WvVQKNXL3W1tO+vhiYLH1+UxjSgaDmVuqaZlL02droHM/bnf6kZprHTteja2cCTyJ7d5upy8znMBUfDw8pzPdLY34bE75mFtViu/7KWp0zWQuX19/VY3SmN1tjfh0Tvm5bVwLGdJciLylts8XU5e57mgNljiQl6q2aRdRGYAeArAxQCSADap6ndrtb1GEYmEMOeicdi6ZhHiiWTe0tS5bSz9XDdK50WjYbZwJAoIt3m6nLzOcwFR8NTySnscwOdV9YCIjAPQKyIvqWpfDbdZMT88KBWJhDC1o8Xx50GpGw2ycsYZWzgSmcvtMe02T5eT13kuIAqWmk3aVfU4gOPW1wMichjANADGTtq5ZDTVA8cZUbDwmCaieqhLTbuIzAQwF8DeemyvXL8dHMkkXSD1pP1nntoftBZZ5DGOM6Jg4TFN5F9ePKdQbpvJmnePEZF2ANsB3KuqZ2x+vlpE9ovI/v7+/lqHUxBbZFG1FBrXHGfkZyblbFPwmPY/jmvyg5pO2kUkitSEfYuqPm/3GlXdpKrzVXX+5MmTaxlOUWyRRdVSaFxznJGfmZSzTcFj2v84rskPajZpFxEB8ASAw6r67Vptp5qCssw2mY3jjChYeEwTUT3UsqZ9CYA7AbwqIget731JVV+o4TYrwhZZVA8cZ0TBwmOaiOpBVNXrGDJEpB/Ar72OwzIJwCmvgyjC9BhNjw8YG+MpVb2+2hsoMq798BlVG/e5vmoyrgEjcnYQxhL3oXzM2fXBfa4vx3Ft1KTdJCKyX1Xnex1HIabHaHp8gPcxer19L3CfqVqC8LlyH/ylkfY1jftsjpp3jyEiIiIiospw0k5EREREZDhO2p1t8jqAEpgeo+nxAd7H6PX2vcB9pmoJwufKffCXRtrXNO6zIVjTTkRERERkOF5pJyIiIiIyHCftNkTkVyLyqogcFJH9XseTS0Q6RGSbiBwRkcMissjrmLKJyGzrs0v/OSMi93odVzYR+VsReV1EXhORZ0Wkuc7bnyEi/2H9+70uIvfUc/teEJFmEfkfEfmZtc9f8zqmehCRsIi8IiI7vY4lCIJ07ARhbJh+PqqWII27UjFnm3dcsjzGhoj8CsB8VTWyL6mIfB/Af6rq4yISA9Cqqqe9jsuOiIQBvA3gQ6pqRA9+EZkG4L8AdKnqkIhsBfCCqm6uYwxTAExR1QMiMg5AL4A/VdW+esVQb9YqyW2qelZEokj9G9yjqns8Dq2mRORzAOYDGK+qy72Ox++CdOwEYWz46XxUiSCNu1IxZ5t3XPJKu8+IyHgA1wJ4AgBUdcTwBNkN4A1TJuxZIgBaRCQCoBXAsXpuXFWPq+oB6+sBAIcBTKtnDPWmKWet/41afwJ91UBEpgO4EcDjXscSFEE5doIwNnx4PipbUMadG8zZ5uGk3Z4CeFFEekVktdfB5LgUQD+AJ63bN4+LSJvXQRVwG4BnvQ4im6q+DeBhAL8BcBzA71X1Ra/iEZGZAOYC2OtVDPVi3XY8COAkgJdUNej7/B0AXwCQ9DqQIPL5sROEseG381FV+HzcucKcbRZO2u0tUdWrANwA4K9F5FqvA8oSAXAVgEdVdS6AQQAPeBuSPetW6ccB/NDrWLKJyAQAfwLgEgBTAbSJyB0exdIOYDuAe1X1jBcx1JOqJlT1SgDTASwQkQ96HVOtiMhyACdVtdfrWILIz8dOgMaGb85H1eLncVcO5myzcNJuQ1WPWf89CWAHgAXeRjTGWwDeyvptdxtSSdNENwA4oKonvA4kxx8D+KWq9qvqKIDnASyudxBWjeB2AFtU9fl6b99L1i303QCu9ziUWloC4OPWMzLPAVgqIk97G1IwBODYCcrY8NP5qGIBGHdlY842AyftOUSkzXrIBNZtvmUAXvM2qvNU9R0Ab4rIbOtb3QBMfRDmz2BYaYzlNwAWikir9aBNN1L1iXVjbfcJAIdV9dv13LZXRGSyiHRYX7cg9cvTEW+jqh1V/TtVna6qM5EqE3tZVT25oxMkQTh2gjI2fHY+qkgQxp1bzNnmHZcRrwMw0EUAdqSOT0QAPKOqu7wNKc/fANhilZ/8H4BVHseTR0RaAXwUwBqvY8mlqntFZBuAAwDiAF5B/Vc/WwLgTgCvWvWCAPAlVX2hznHU0xQA37c6CoUAbFVV41pqkfEa8dgxmfHnoyppxHHHnG0YtnwkIiIiIjIcy2OIiIiIiAzHSTsRERERkeE4aSciIiIiMhwn7UREREREhuOknYiIiIjIcJy0B4iI7BKR0yLClkwUCCJypYj0iMjrInJIRG71OiaiahCR94lIr4gctMb3Wq9jIqoWERkvIm+LyCNexxIkbPkYICLSDaAVwBpVXe51PESVEpFZAFRVfyEiUwH0AvhDa3U+It+y+pqLqg6LSDtSi/gtTq/ITeRnIvJdAJMBvKuqd3sdT1DwSrsPicjV1lXHZmsF19dF5IOq+u8ABryOj6gcduMaQExVfwEA1mTmJFInAiLfcBjbs1R12HpJE3g+Jp9xmouIyDykFqp80esYg4YrovqQqu4TkX8B8HUALQCeVtXXPA6LqCLFxrWILAAQA/CGRyESlcVpbIvIDAD/BuADAO7nVXbyE7txDaAPwMtIrR7b7WF4gcTyGJ+ybq3uA3AOqVuqCev71wG4j+Ux5EcFxvUUALsBfFpV93gXIVF5nMa29bOpAP4JwE2qesKjEIlcyx3XAD4LoFVV14vISgDzWR5TPbzS7l8XAmgHEAXQDGDQ23CIqiJvXIvIeKSuRj7ICTv5mGPOVtVjVsnMNQC2eRMeUVlyx/UiANeIyF3W92MiclZVH/AwxsDglXafsm5JPQfgEgBT0r/J8ko7+VnuuAbwOQA/AvCvqvodL2MjqoTN2P4mgN+q6pCITACwF8DNqvqqh2ESueI0F7F+thK80l5VvNLuQyLyKQBxVX1GRMIAfioiSwF8DcAcAO0i8haAv1TVH3sZK1Gp7MY1gNsAXAtgonUCAICVqnrQozCJXHMY25cD2CAiCkAAPMwJO/mJ01xEVV/2Orag4pV2IiIiIiLDscUUEREREZHhOGknIiIiIjIcJ+1ERERERIbjpJ2IiIiIyHCctBMRERERGY6TdiIiIiIiw3HSTkRERERkOE7aiYiIiIgM9//vLX1HGApcUAAAAABJRU5ErkJggg==\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "seaborn.pairplot(data_iris, vars=data_iris.columns, size=1.5, aspect=1.75)" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": { + "slideshow": { + "slide_type": "notes" + } + }, + "outputs": [], + "source": [ + "# Odległość euklidesowa\n", + "def euclidean_distance(x1, x2):\n", + " return np.linalg.norm(x1 - x2)" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": { + "slideshow": { + "slide_type": "notes" + } + }, + "outputs": [], + "source": [ + "# Algorytm k średnich\n", + "def k_means(X, k, distance=euclidean_distance):\n", + " history = []\n", + " Y = []\n", + " \n", + " # Wylosuj centroid dla każdej klasy\n", + " centroids = [[random.uniform(X.min(axis=0)[f], X.max(axis=0)[f])\n", + " for f in range(X.shape[1])]\n", + " for c in range(k)]\n", + " history.append((centroids, Y))\n", + "\n", + " # Powtarzaj, dopóki klasy się zmieniają\n", + " while True:\n", + " distances = [[distance(centroids[c], x) for c in range(k)] for x in X]\n", + " Y_new = [d.index(min(d)) for d in distances]\n", + " if Y_new == Y:\n", + " break\n", + " Y = Y_new\n", + " history.append((centroids, Y))\n", + " XY = np.asarray(np.concatenate((X, np.matrix(Y).T), axis=1))\n", + " Xc = [XY[XY[:, 2] == c][:, :-1] for c in range(k)]\n", + " centroids = [[Xc[c].mean(axis=0)[f] for f in range(X.shape[1])]\n", + " for c in range(k)]\n", + " history.append((centroids, Y))\n", + "\n", + " result = history[-1][1]\n", + " return result, history" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": { + "slideshow": { + "slide_type": "notes" + } + }, + "outputs": [], + "source": [ + "# Wykres danych - klastrowanie\n", + "def plot_clusters(X, Y, k, centroids=None):\n", + " color = ['r', 'g', 'b', 'c', 'm', 'y', 'k']\n", + " fig = plt.figure(figsize=(16*.7, 9*.7))\n", + " ax = fig.add_subplot(111)\n", + " fig.subplots_adjust(left=0.1, right=0.9, bottom=0.1, top=0.9)\n", + "\n", + " if not Y:\n", + " ax.scatter(X[:, 0], X[:, 1], c='gray', marker='o', s=25, label='Dane')\n", + "\n", + " X1 = [[x for x, y in zip(X[:, 0].tolist(), Y) if y == c] for c in range(k)]\n", + " X2 = [[x for x, y in zip(X[:, 1].tolist(), Y) if y == c] for c in range(k)]\n", + "\n", + " for c in range(k):\n", + " ax.scatter(X1[c], X2[c], c=color[c], marker='o', s=25, label='Dane')\n", + " if centroids:\n", + " ax.scatter([centroids[c][0]], [centroids[c][1]], c=color[c], marker='+', s=500, label='Centroid')\n", + " \n", + " ax.set_xlabel(r'$x_1$')\n", + " ax.set_ylabel(r'$x_2$')\n", + " ax.margins(.05, .05)\n", + " return fig" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAroAAAGbCAYAAAAr5TMXAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nO3df4wk533f+c9XM2yQqhZPm2gvMxguRQhr5w9LdrfQ3LJ3jg4h2Zm0TFD5I4AUYGNkEUBn30WQIQaG7RvIZ3uM5ICTYdgErCjWMXZWZ8EXOY6gsDMRQFNZzUBFzqpbpmQqwFwikxzPRGt7LbLLS7e395s/akaaXvbO9M5Wd1U//X4Bg55++pmqb3X1j8/WPvWUubsAAACA0Lyp6AIAAACAcSDoAgAAIEgEXQAAAASJoAsAAIAgEXQBAAAQJIIuAAAAgjSRoGtmc2bWNrPPD3nsUTP7tpl19n8+NomaAAAAELb5Ca3nI5JelHT/bR6/7O6P3ckC3/a2t/lDDz10t3UBAABgil25cuVP3f30sMfGHnTN7AFJPybplyV9NK/lPvTQQ9ra2sprcQAAAJhCZvbHt3tsEkMXflXST0u6eUSfHzKzr5pZy8y+bwI1AQAAIHBjDbpm9pikb7n7lSO6fUXS2939ByT9uqTfP2J5HzKzLTPbunr1as7VAgAAICTjPqK7LOlxM/umpM9Ieo+ZXTrcwd1fdffu/u9PS7rHzN42bGHu/kl3b7h74/TpoUMxAAAAAEljDrru/rPu/oC7PyTpg5KecfcLh/uY2YKZ2f7v5/Zr+rNx1gUAAIDwTWrWhQFm9hOS5O6fkPQPJP2kmd2QdF3SB93di6gLAAAA4bBpzZSNRsOZdQEAAGC2mdkVd28Me4wrowEAACBIBF0AAAAEiaALAACAIBF0AQAAECSCLgAAAIJE0AUAAECQCplHFwXp96VWS2q3pXpdajalubmiqwIAABgLgu6s6PellRUpSaQ0laJIimNpfZ2wCwAAgsTQhVnRamUht9uV3LPbJMnaAQAAAkTQnRXtdnYk97A0lTqdYuoBAAAYM4LurKjXs+EKh0WRVKsVUw8AAMCYEXRnRbOZjcmtViWz7DaOs3YAAIAAcTLarJiby048a7Wy4Qq1GrMuAACAoBF0Z8ncnPTYY9kPAABA4Bi6AAAAgCARdAEAABAkgi4AAACCRNAFAABAkAi6AAAACBJBFwAAAEEi6AIAACBIBF0AAAAEiaALAACAIBF0AQAAECSCLgAAAIJE0AUAAECQCLoAAAAIEkEXAAAAQSLoAgAAIEgEXQAAAASJoAsAAIAgEXQBAAAQJIIuAAAAgjRfdAHIQb8vtVpSuy3V61KzKc3NFV0VAABAoQi6067fl1ZWpCSR0lSKIimOpfV1wi4AAJhpDF2Ydq1WFnK7Xck9u02SrB0AAGCGEXSnXbudHck9LE2lTqeYegAAAEqCoDvt6vVsuMJhUSTVasXUAwAAUBIE3WnXbGZjcqtVySy7jeOsHQAAYIZxMtq0m5vLTjxrtbLhCrUasy4AAACIoBuGuTnpsceyHwAAAEhi6AIAAAACRdAFAABAkAi6AAAACBJBFwAAAEEi6AIAACBIBF0AAAAEienFZkm/n823225nV1Rjvl0AABAwgu6s6PellRUpSaQ0zS4THMfZxSYIuwAAIEAMXZgVrVYWcrtdyT27TZKsHQAAIEAE3VnRbmdHcg9L0+yywQAAAAEi6M6Kej0brnBYFEm1WjH1AAAAjBlBd1Y0m9mY3GpVMstu4zhrBwAACBAno82KubnsxLNWKxuuUKsx6wIAAAgaQXeWzM1Jjz2W/QAAAASOoQsAAAAIEkEXAAAAQSLoAgAAIEgEXQAAAASJoAsAAIAgTSTomtmcmbXN7PNDHjMz+zUz2zazPzSzd0+iJgAAAIRtUtOLfUTSi5LuH/JYU9L37P/Ekn5j/zZc/X42n227nV2xjPlsAQAAcjf2oGtmD0j6MUm/LOmjQ7q8X9Jvu7tL+rKZvdXMFt19d9y1FaLfl1ZWpCSR0jS7DG8cZxdzIOwCAADkZhJDF35V0k9Lunmbx5ckvXzo/iv7bWFqtbKQ2+1K7tltkmTtAAAAyM1Yg66ZPSbpW+5+5ahuQ9r8Nsv7kJltmdnW1atXc6lx4trt7EjuYWmaXZYXAAAAuRn3Ed1lSY+b2TclfUbSe8zs0i19XpF05tD9ByT9ybCFufsn3b3h7o3Tp0+Po97xq9ez4QqHRZFUqxVTDwAAQKDGGnTd/Wfd/QF3f0jSByU94+4Xbun2OUk/vj/7wg9K+naw43Ol7MSzOJaqVcksu43jrB0AAAC5mdSsCwPM7Cckyd0/IelpSe+TtC3pLyVdLKKmiZmby048a7Wy4Qq1GrMuAAAAjIFlkx1Mn0aj4VtbW0WXAQAAgAKZ2RV3bwx7jCujAQAAIEgEXQAAAASJoAsAAIAgEXQBAAAQJIIuAAAAglTI9GIYUb+fTUPWbmcXmijbNGRlrw8AAMw0gm5Z9fvSyoqUJNklgqMou7DE+no5wmTZ6wMAADOPoQtl1WplIbLbldyz2yTJ2sug7PUBAICZR9Atq3Y7O1J6WJpmV1Mrg7LXBwAAZh5Bt6zq9Ww4wGFRlF0yuAzKXh8AAJh5BN2yajazMa/VqmSW3cZx1l4GZa8PAADMPE5GK6u5uezErlYrGw5Qq5VrVoOy1wcAAGaeuXvRNZxIo9Hwra2tossAAABAgczsirs3hj3G0AUAAAAEiaALAACAIBF0AQAAECSCLgAAAIJE0AUAAECQCLoAAAAIEvPozpJ+P5v3tt3Ormx2u3lv8+6Xd30AAASif7Ov1nZL7d226ot1Nc82Nfem8X/3FbXeSSPozop+X1pZkZJEStPscr1xnF304XCYzLtf3vUBABCI/s2+Vi6tKNlJlPZSRZVI8VKs9QvrYw2dRa23CAxdmBWtVhYiu13JPbtNkqx9nP3yrg8AgEC0tltKdhJ1e125XN1eV8lOotb2eL/7ilpvEQi6s6Ldzo6UHpam2eV7x9kv7/oAAAhEe7ettDf43Zf2UnX2xvvdV9R6i0DQnRX1ejYc4LAokmq18fbLuz4AAAJRX6wrqgx+90WVSLWF8X73FbXeIhB0Z0WzmY15rVYls+w2jrP2cfbLuz4AAALRPNtUvBSrWqnKZKpWqoqXYjXPjve7r6j1FsHcvegaTqTRaPjW1lbRZUyXg1kNOp3sSOlxsynk1S/v+gAACMTB7AedvY5qC7WJz7ow6fWOg5ldcffG0McIugAAAJhWRwVdhi4AAAAgSARdAAAABImgCwAAgCARdAEAABAkgi4AAACCRNAFAABAkAi6s+T6demDH5Te8Y7s9vr1oisCAAAYm/miC8CEXL8u3X+/dONGdv+//Tfps5+VXn1Vuu++YmsDAAAYA47ozoqLF78bcg/cuJG1AwAABIigOyuee254+/PPT7YOAACACSHozopz54a3P/zwZOsAAACYEILurHjqKWn+liHZ8/NZOwAAQIAIurPivvuyE88+8IFs1oUPfIAT0QAAQNCYdWGW3Hef9JnPFF0FAADARHBEFwAAAEEi6AIAACBIBF0AAAAEiaALAACAIBF0AQAAECSCLgAAAILE9GKj6PelVktqt6V6XWo2pbm5oqv6rrLXBwBAyfVv9tXabqm921Z9sa7m2abm3sR36bQj6B6n35dWVqQkkdJUiiIpjqX19XKEybLXBwBAyfVv9rVyaUXJTqK0lyqqRIqXYq1fWCfsTjmGLhyn1cpCZLcruWe3SZK1l0HZ6wMAoORa2y0lO4m6va5crm6vq2QnUWub79JpR9A9TrudHSk9LE2lTqeYem5V9voAACi59m5baW/wuzTtpers8V067Qi6x6nXs+EAh0WRVKsVU8+tyl4fAAAlV1+sK6oMfpdGlUi1Bb5Lpx1B9zjNZjbmtVqVzLLbOM7ay6Ds9QEAUHLNs03FS7GqlapMpmqlqngpVvMs36XTzty96BpOpNFo+NbW1mRWdjCrQaeTHSkt26wGZa8PAICSO5h1obPXUW2hxqwLU8TMrrh7Y+hjBF0AAABMq6OCLkMXAAAAECSCLgAAAIJE0AUAAECQCLoAAAAIEkEXAAAAQRp70DWze83sOTP7qpl93cx+YUifR83s22bW2f/52Ljrmgq9nvSxj0nvfW922+vdXb9+X/r856Vf+qXstt+/u34AAAAlNvbpxczMJEXu3jWzeyR9SdJH3P3Lh/o8Kumfuftjoy43+OnFej1pYUG6du27badOSXt7UqVy5/36fWllRUqS7BLBUZRdWGJ9fXDO3VH7AQAAlECh04t5prt/9579n+mcvHeS1tYGw6uU3V9bO1m/VisLr92u5J7dJknWfpJ+AAAAJTeRMbpmNmdmHUnfkvQFd0+GdPuh/eENLTP7vtss50NmtmVmW1evXh1rzYXb2Bjevrl5sn7tdnaE9rA0za6mdpJ+AAAAJTeRoOvufXevSXpA0jkze+ctXb4i6e3u/gOSfl3S799mOZ9094a7N06fPj3eoou2vDy8/fz5k/Wr17NhCIdFUXbJ4JP0AwAAKLmJXwLYzH5eUuru//cRfb4pqeHuf3q7PozRvcN+jNEFAAABOmqM7vwEVn5a0l+7+1+Y2X2SfkTS/3VLnwVJ/93d3czOKTvS/Gfjrq3UKpUsrK6tZcMQzp+XVlcHw+ud9Jubk/76r6WHHpI+8IHsCG2z+cbwOjeXhdpWKxuucLt+AAAAJTeJWRe+X9JvSZpTFmB/191/0cx+QpLc/RNm9k8l/aSkG5KuS/qou2/ebpnSDBzRHYdHH81un322yCoAAAByU+gRXXf/Q0n1Ie2fOPT7k5KeHHctAAAAmB1cGQ0AAABBIugCAAAgSARdAAAABImgCwAAgCARdAEAABCksc+6gAno9bJ5dDc2siulDZtHV5Ju3pS+8Q3pHe+Qzp2TnnpKuu++ky+v38/m2223syuq3e18u3kvD8DU6d/sq7XdUnu3rfpiXc2zTc29ic+BvOX9PLPfUFYTvzJaXphHd9+oV0a7fl1685sH/3Z+Xnr11cGwm/eV1kbFFdmAmde/2dfKpRUlO4nSXqqoEileirV+YZ3QlKO8n2f2G4p21Dy6DF2Ydmtrg6FUyu5/7/dmF4g4+Hn729/4tzduZO2H+33v9w5f3traYFurlYXSbldyz26TJGs/ibyXB2DqtLZbSnYSdXtduVzdXlfJTqLWNp8Decr7eWa/ocwIutNuY2N4+7e/PXj/tdeG97u1/da/O7B5y4Xq2u3syOthaZpdNvgk8l4egKnT3m0r7Q1+DqS9VJ09PgfylPfzzH5DmRF0p93y8vD2D384u9Tvwc/73z+83/vfP9jvwx8e3u/8+cH79Xo2vOCwKJJqtVErH+/yAEyd+mJdUWXwcyCqRKot8DmQp7yfZ/YbyowxutOOMboAAsFYz8lgjC5Cc9QYXYJuCA5mSdjczI683m6WhB/+4WzWhbe8RXr44eNnXThueQezJHQ62ZHXvGZdyGt5AKbOwdn7nb2Oags1zt4fk7yfZ/YbikTQRebRR7PbZ58tsgoAAIDcMOsCAAAAZg5BFwAAAEEi6AIAACBIBF0AAAAEiaALAACAIBF0AQAAEKT5ogtADg7mn223syuM3W7+2bynFRt1vQBQkIP5Xdu7bdUX68zvWrDejZ7WLq9p46UNLT+4rNVHVlWZHzJPe454Dcw2gu60K+qKYlzJDEDJccWucund6Gnh4wu69np25c1nvvmMnnzuSe09sTe2sMtrAAxdmHatVhY2u13JPbtNkqw9xPUCwIha2y0lO4m6va5crm6vq2QnUWubz6kirF1e+07IPXDt9Wtau7w2tnXyGgBBd9q129kR1cPSNLuMbojrBYARtXfbSnuDn1NpL1Vnj8+pImy8tDG0ffPlzbGtk9cACLrTrl7Phg0cFkVSrRbmegFgRPXFuqLK4OdUVIlUW+BzqgjLDy4PbT9/5vzY1slrAATdaddsZmNjq1XJLLuN46w9xPUCwIiaZ5uKl2JVK1WZTNVKVfFSrOZZPqeKsPrIqk7de2qg7dS9p7T6yOrY1slrAObuRddwIo1Gw7e2toouoxwOZj/odLIjqpOa/aCo9QLAiA7OuO/sdVRbqHHGfcEOZl3YfHlT58+cn+isC7wGwmVmV9y9MfQxgi4AAACm1VFBl6ELAAAACBJBFwAAAEEi6AIAACBIBF0AAAAEiaALAACAII0cdM3sR83sX5lZbf/+h8ZXFgAAAHB35u+g7/8m6aKkVTP7G5K4rMhJHcw/225nVxi73fyzvZ60tiZtbEjLy9LqqlQZMt/gqMvLuz4AyNnBnKft3bbqi/W7nvN01OXlvd686ytqeXnLs76y71uUw50E3avu/heS/pmZ/QtJD4+pprD1+9LKipQkUppml82NY2l9fTBM9nrSwoJ07Vp2/5lnpCeflPb2BsPuqMvLuz4AyFn/Zl8rl1aU7CRKe6miSqR4Kdb6hfUTBZNRl5f3evOur6jl5S3P+sq+b1EedzJG9z8c/OLuPyPpt/MvZwa0WlmI7HYl9+w2SbL2w9bWvhtyD1y7lrWfZHl51wcAOWttt5TsJOr2unK5ur2ukp1Ere2Tff6Mury815t3fUUtL2951lf2fYvyODbomtmvmpm5+78/3O7uvz6+sgLWbmdHSg9L0+wyuodtbAz/+83Nky0v7/oAIGft3bbS3uDnT9pL1dk72efPqMvLe71511fU8vKWZ31l37coj1GO6HYlfc7M3ixJZvZ3zew2KQzHqtez4QCHRZFUu2XI8/Ly8L8/f/5ky8u7PgDIWX2xrqgy+PkTVSLVFk72+TPq8vJeb971FbW8vOVZX9n3Lcrj2KDr7quSfkfSF83sS5KekPQz4y4sWM1mNua1WpXMsts4ztoPW12VTp0abDt1Kms/yfLyrg8ActY821S8FKtaqcpkqlaqipdiNc+e7PNn1OXlvd686ytqeXnLs76y71uUh7n70R3M3itpVZJJWpT0uLv/lwnUdqRGo+FbW1tFl3EyB7MadDrZkdLjZl3Y3MyO5B4368Jxy8u7PgDI2cEZ8p29jmoLtdxmIThueXmvN+/6ilpe3vKsr+z7FpNjZlfcvTH0sRGC7jOSPubuXzKzd0n6N5I+6u7P5F/q6KY66AIAACAXRwXdY6cXc/f3HPr9BTNrSvqspPO3/ysAAACgWHd8CWB335X03jHUAgAAAOTmjoOuJLn79bwLAQAAAPJ0oqALAAAAlB1BFwAAAEE69mQ0BKTbld73PumFF6R3vUt6+ulsntxbHUwv1m5nF5BgejEAd+lgiqf2blv1xfrEp+/Ka71lX17e6827HzBpBN1Z0e1Kb3nLd+9fvpzdf+21wbDb70srK1KSZJf+jaLsghHr64RdACfSv9nXyqUVJTuJ0l6qqBIpXoq1fmF9rGEo7/WWfXl5rzfvfkARGLowK973vtHaW60s5Ha7knt2myRZOwCcQGu7pWQnUbfXlcvV7XWV7CRqbY/3cyXv9ZZ9eXmvN+9+QBEIurPihReGt3/ta4P32+3sSO5haZpdJQ0ATqC921baG/xcSXupOnvj/VzJe71lX17e6827H1AEgu6seNe7hre/852D9+v1bLjCYVGUXQoYAE6gvlhXVBn8XIkqkWoL4/1cyXu9ZV9e3uvNux9QBILurHj66dHam81sTG61Kpllt3GctQPACTTPNhUvxapWqjKZqpWq4qVYzbPj/VzJe71lX17e6827H1AEc/eiaziRRqPhW1tbRZcxXQ5mXfja17IjucfNutDpZEdymXUBwF06OCu/s9dRbaE28dkF8lpv2ZeX93rz7geMg5ldcffG0McIugAAAJhWRwVdhi4AAAAgSARdAAAABImgCwAAgCARdAEAABAkgi4AAACCNPaga2b3mtlzZvZVM/u6mf3CkD5mZr9mZttm9odm9u5x1wUAAICwzU9gHX8l6T3u3jWzeyR9ycxa7v7lQ32akr5n/yeW9Bv7t9PlYP7Zdju7wtjdzj876vKuX5cuXpSee046d0566inpvvvKsx0ASuNgvtP2blv1xfpt5zvt3ehp7fKaNl7a0PKDy1p9ZFWV+Upp1jvq8vKur6h+ee+PURWx3rK/BsoulO3Iy0Tn0TWzN0v6kqSfdPfkUPu/lPSsu//O/v3/IulRd9+93bJKN49uvy+trEhJIqVpdtncOJbW108WEkdd3vXr0v33SzdufLdtfl569dWThd28twNAafRv9rVyaUXJTqK0lyqqRIqXYq1fWB/4Iuzd6Gnh4wu69vq177SduveU9p7YO1HIyXu9oy4v7/qK6pf3/hhVEest+2ug7ELZjjtV+Dy6ZjZnZh1J35L0hcMhd9+SpJcP3X9lv216tFpZOOx2JffsNkmy9nEu7+LFwZArZfcvXizHdgAojdZ2S8lOom6vK5er2+sq2UnU2h58f69dXhsIGpJ07fVrWru8Vor1jrq8vOsrql/e+2NURay37K+BsgtlO/I0kaDr7n13r0l6QNI5M3vnLV1s2J/d2mBmHzKzLTPbunr16jhKPbl2OzsCeliaZpfRHefynntu+N8///x41wtg6rR320p7g+/vtJeqszf4/t54aWPo32++vFmK9Y66vLzrK6pf3vtjVEWst+yvgbILZTvyNNFZF9z9LyQ9K+nv3fLQK5LOHLr/gKQ/GfL3n3T3hrs3Tp8+PbY6T6Rez/6b/7Aokmq18S7v3Lnhf//ww+NdL4CpU1+sK6oMvr+jSqTawuD7e/nB5aF/f/7M+VKsd9Tl5V1fUf3y3h+jKmK9ZX8NlF0o25GnScy6cNrM3rr/+32SfkTSN27p9jlJP74/+8IPSvr2UeNzS6nZzMayVquSWXYbx1n7OJf31FPZmNzD5uez9jJsB4DSaJ5tKl6KVa1UZTJVK1XFS7GaZwff36uPrOrUvacG2k7de0qrj6yWYr2jLi/v+orql/f+GFUR6y37a6DsQtmOPI39ZDQz+35JvyVpTlmw/l13/0Uz+wlJcvdPmJlJelLZkd6/lHTR3Y8806x0J6NJ352toNPJjoDmNevCccs7mHXh+eezI7l5zbqQ13YAKI2DM7I7ex3VFmrHnuW/+fKmzp85n9usC3mtd9Tl5V1fUf3y3h+jKmK9ZX8NlF0o23EnjjoZbaKzLuSplEEXAAAAE1X4rAsAAADApBF0AQA4oUf/9aN69F8/WnQZAG6DoAsAAIAgEXQBAAAQJIIuAAAAgkTQBQAAQJDmj++C0juY97bdzq5sxry3wFgczE/Z3m2rvlgPen7KUbf1YM7TjZc2tPzgcm7z7R633rz74e7wPL8Rz0k5EHSnXb8vraxISSKlaXa53jiW1tcJu0CO+jf7Wrm0omQnUdpLFVUixUux1i+sB/flNeq29m70tPDxBV17/Zok6ZlvPqMnn3tSe0/snSjsjrrevPvh7vA8vxHPSXkwdGHatVpZyO12JffsNkmydgC5aW23lOwk6va6crm6va6SnUSt7fDea6Nu69rlte+E3APXXr+mtctrY11v3v1wd3ie34jnpDwIutOu3c6O5B6WptnlewHkpr3bVtobfK+lvVSdvfDea6Nu68ZLG0P/fvPlzbGuN+9+uDs8z2/Ec1IeBN1pV69nwxUOiyKpViumHiBQ9cW6osrgey2qRKothPdeG3Vblx9cHvr358+cH+t68+6Hu8Pz/EY8J+Vh7l50DSfSaDR8a2ur6DKKxxhdYCJmaczdScfoStKpe08FMUZ31KudffGPvyhJ+jtv/zsj9X/2Hz87Ur9pMkvvjVHxnEyWmV1x98bQxwi6ATiYdaHTyY7kMusCMBYHZ1F39jqqLdSCPot61G09mHVh8+VNnT9zPrdZF45bb979bkXQvTOz9N4YFc/J5BB0AQAYg4NAHGqABabBUUGXMboAAAAIEkEXAAAAQSLoAgAAIEgEXQAAAASJoAsAAIAgEXQBAAAQpPmiCwAA5ONg3s72blv1xfrQeTtH6VOkUevLu9/BfMAbL21o+cHl284HfOvyXC6TnXh7R11v2YWwHWV/b+RtVraXeXQBIACjXImp7FdrKurKaKNe4W3Y8ubfNK/v/1vfry/+4y/e8fbmfWW5ooSwHWV/b+QttO1lHl0ACFxru6VkJ1G315XL1e11lewkam237qhPkUatL+9+a5fXBkKaJF17/ZrWLq8du7xX/+pV/fn1Pz/R9o663rILYTvK/t7I2yxtL0EXAALQ3m0r7aUDbWkvVWevc0d9ijRqfXn323hpY2g9my9vHrs8d9cHvu8Dt9mio4263rILYTvK/t7I2yxtL0EXAAJQX6wrqkQDbVElUm2hdkd9ijRqfXn3W35weWg958+cP9HyRjXqessuhO0o+3sjb7O0vQRdAAhA82xT8VKsaqUqk6laqSpeitU827yjPkUatb68+60+sqpT954aaDt17ymtPrJ6ouWNatT1ll0I21H290beZml7ORkNAAJxcBZ1Z6+j2kLtyFkXjupTpFHry7vfwawBmy9v6vyZ88fOupDX8zfqessuhO0o+3sjbyFt71EnoxF0AQAAMLWYdQEAAAAzh6ALAACAIBF0AQAAECSCLgAAAIJE0AUAAECQ5osuAABwtIOpmzZe2tDyg8t3NXXTwZRC7d226ov1Y6flOq7frMn7ebneu66Ln7uo53ae07mlc3rq8ad0X+W+0tQHTDumFwOAEuvd6Gnh4wu69vq177SduveU9p7Yu+Ow27/Z18qlFSU7idJeqqgSKV6KtX5hfSAMjdpv1uT9vFzvXdf9/+J+3fAb32mbt3m9+jOvnijsst8wq5heDACm1NrltYGQK0nXXr+mtctrd7ys1nZLyU6ibq8rl6vb6yrZSdTabp2o36zJ+3m5+LmLAyFXkm74DV383MVS1AeEgKALACW28dLG0PbNlzfveFnt3bbSXjrQlvZSdfY6J+o3a/J+Xp7beW5o+/M7z59oeew34I0IugBQYssPLg9tP3/m/B0vq75YV1SJBtqiSqTaQu1E/WZN3s/LuaVzQ9sfXnr4RMtjvwFvRNAFgBJbfWRVp+49NdB26qhtwqgAABAESURBVN5TWn1k9Y6X1TzbVLwUq1qpymSqVqqKl2I1zzZP1G/W5P28PPX4U5q3wXPC521eTz3+VCnqA0LAyWgAUHIHsy5svryp82fO5zLrQmevo9pC7dhZF47rN2vyfl4OZl14fud5Pbz0cG6zLrDfMEuOOhmNoAsAAICpxawLAAAAmDkEXQAAAASJoAsAAIAgEXQBAAAQJIIuAAAAgkTQBQAAQJDmj+8CAGE7mHu0vdtWfbE+tXOPlnk7ylwb7h77F2V9DRB0Acy0/s2+Vi6tKNlJlPZSRZVI8VKs9QvrpfiQHlWZt6PMteHusX9R5tcAQxcAzLTWdkvJTqJuryuXq9vrKtlJ1NpuFV3aHSnzdpS5Ntw99i/K/Bog6AKYae3dttJeOtCW9lJ19joFVXQyZd6OMteGu8f+RZlfAwRdADOtvlhXVIkG2qJKpNpCraCKTqbM21Hm2nD32L8o82uAoAtgpjXPNhUvxapWqjKZqpWq4qVYzbPNoku7I2XejjLXhrvH/kWZXwPm7kXXcCKNRsO3traKLgNAAA7OFu7sdVRbqJXmbOE7VebtKHNtuHvsXxT5GjCzK+7eGPoYQRcAAADT6qigy9AFAAAABImgCwAAgCARdAEAABAkgi4AAACCRNAFAABAkMYedM3sjJn9gZm9aGZfN7OPDOnzqJl928w6+z8fG3ddAAAACNv8BNZxQ9IT7v4VM3uLpCtm9gV3/6Nb+l1298cmUA+AvPT7UqsltdtSvS41m9Icc2fm7WB+yvZuW/XF+m3npxy1X5mVfRtGra93o6e1y2vaeGlDyw8ua/WRVVXmKwVUPH3K/hrAdBl70HX3XUm7+7+/ZmYvSlqSdGvQBTBN+n1pZUVKEilNpSiS4lhaXyfs5qh/s6+VSytKdhKlvVRRJVK8FGv9wvrAl/+o/cqs7Nswan29Gz0tfHxB116/Jkl65pvP6MnnntTeE3uE3WOU/TWA6TPRMbpm9pCkuqRkyMM/ZGZfNbOWmX3fJOsCcAKtVhZyu13JPbtNkqwduWltt5TsJOr2unK5ur2ukp1Ere3WifqVWdm3YdT61i6vfSfkHrj2+jWtXV6bZLlTqeyvAUyfiQVdM6tK+qykn3L3V295+CuS3u7uPyDp1yX9/m2W8SEz2zKzratXr463YABHa7ezI7mHpanU6RRTT6Dau22lvcHnOe2l6ux1TtSvzMq+DaPWt/HSxtC/33x5c2y1haLsrwFMn4kEXTO7R1nI/bS7/96tj7v7q+7e3f/9aUn3mNnbhvT7pLs33L1x+vTpsdcN4Aj1ejZc4bAokmq1YuoJVH2xrqgy+DxHlUi1hdqJ+pVZ2bdh1PqWH1we+vfnz5wfW22hKPtrANNnErMumKRPSXrR3X/lNn0W9vvJzM7t1/Vn464NwF1oNrMxudWqZJbdxnHWjtw0zzYVL8WqVqoymaqVquKlWM2zzRP1K7Oyb8Oo9a0+sqpT954aaDt17ymtPrI6yXKnUtlfA5g+5u7jXYHZ/yLpsqQXJN3cb/45SQ9Kkrt/wsz+qaSfVDZDw3VJH3X3I/+Pp9Fo+NbW1tjqBjCCg1kXOp3sSC6zLozFwVnonb2Oagu1Y2ddOK5fmZV9G0at72DWhc2XN3X+zHlmXbgDZX8NoHzM7Iq7N4Y+Nu6gOy4EXQAAABwVdLkyGgAAAIJE0AUAAECQCLoAAAAIEkEXAAAAQSLoAgAAIEgEXQAAAARpvugCAOBOHcyz2d5tq75YL908m6PWV/btAIBpR9AFMFX6N/taubSiZCdR2ksVVSLFS7HWL6yXIiSOWl/ZtwMAQsDQBQBTpbXdUrKTqNvryuXq9rpKdhK1tltFlyZp9PrKvh0AEAKCLoCp0t5tK+2lA21pL1Vnr1NQRYNGra/s2wEAISDoApgq9cW6oko00BZVItUWagVVNGjU+sq+HQAQAoIugKnSPNtUvBSrWqnKZKpWqoqXYjXPNosuTdLo9ZV9OwAgBObuRddwIo1Gw7e2toouA0ABDmYr6Ox1VFuolW62glHrK/t2AMA0MLMr7t4Y+hhBFwAAANPqqKDL0AUAAAAEiaALAACAIBF0AQAAECSCLgAAAIJE0AUAAECQ5osuAEfo96VWS2q3pXpdajalOaYeAg6m5WrvtlVfrDMt174yPy9lrg1AuAi6ZdXvSysrUpJIaSpFkRTH0vo6YRczrX+zr5VLK0p2EqW9VFElUrwUa/3C+kwHpzI/L2WuDUDYGLpQVq1WFnK7Xck9u02SrB2YYa3tlpKdRN1eVy5Xt9dVspOotT3b740yPy9lrg1A2Ai6ZdVuZ0dyD0tTqdMpph6gJNq7baW9wfdG2kvV2Zvt90aZn5cy1wYgbATdsqrXs+EKh0WRVKsVUw9QEvXFuqLK4HsjqkSqLcz2e6PMz0uZawMQNoJuWTWb2ZjcalUyy27jOGsHZljzbFPxUqxqpSqTqVqpKl6K1Tw72++NMj8vZa4NQNjM3Yuu4UQajYZvbW0VXcZ4Hcy60OlkR3KZdQGQ9N0z+Dt7HdUWapzBv6/Mz0uZawMw3czsirs3hj5G0AUAAMC0OiroMnQBAAAAQSLoAgAAIEgEXQAAAASJoAsAAIAgEXQBAAAQJIIuAAAAgjRfdAEAgHwczFXb3m2rvlifyrlqQ9gGKZztAKYdQRcAAtC/2dfKpRUlO4nSXqqoEileirV+YX1qAlYI2yCFsx1ACBi6AAABaG23lOwk6va6crm6va6SnUSt7VbRpY0shG2QwtkOIAQEXQAIQHu3rbSXDrSlvVSdvU5BFd25ELZBCmc7gBAQdAEgAPXFuqJKNNAWVSLVFmoFVXTnQtgGKZztAEJA0AWAADTPNhUvxapWqjKZqpWq4qVYzbPNoksbWQjbIIWzHUAIzN2LruFEGo2Gb21tFV0GAJTGwZn+nb2Oagu1qTzTP4RtkMLZDmAamNkVd28MfYygCwAAgGl1VNBl6AIAAACCRNAFAABAkAi6AAAACBJBFwAAAEEi6AIAACBIBF0AAAAEiaALAACAIBF0AQAAECSCLgAAAIJE0AUAAECQCLoAAAAIEkEXAAAAQSLoAgAAIEgEXQAAAASJoAsAAIAgEXQBAAAQJIIuAAAAgkTQBQAAQJAIugAAAAjS2IOumZ0xsz8wsxfN7Otm9pEhfczMfs3Mts3sD83s3eOuCwAAAGGbn8A6bkh6wt2/YmZvkXTFzL7g7n90qE9T0vfs/8SSfmP/FgDGrn+zr9Z2S+3dtuqLdTXPNjX3prmiywIA3KWxB11335W0u//7a2b2oqQlSYeD7vsl/ba7u6Qvm9lbzWxx/28BYGz6N/taubSiZCdR2ksVVSLFS7HWL6wTdgFgyk10jK6ZPSSpLim55aElSS8fuv/KfhsAjFVru6VkJ1G315XL1e11lewkam23ii4NAHCXJhZ0zawq6bOSfsrdX7314SF/4kOW8SEz2zKzratXr46jTAAzpr3bVtpLB9rSXqrOXqegigAAeZlI0DWze5SF3E+7++8N6fKKpDOH7j8g6U9u7eTun3T3hrs3Tp8+PZ5iAcyU+mJdUSUaaIsqkWoLtYIqAgDkZRKzLpikT0l60d1/5TbdPifpx/dnX/hBSd9mfC6ASWiebSpeilWtVGUyVStVxUuxmmebRZcGALhLk5h1YVnSP5L0gpkd/F/gz0l6UJLc/ROSnpb0Pknbkv5S0sUJ1AUAmnvTnNYvrKu13VJnr6PaQo1ZFwAgEJZNdDB9Go2Gb21tFV0GAAAACmRmV9y9MewxrowGAACAIBF0AQAAECSCLgAAAIJE0AUAAECQCLoAAAAIEkEXAAAAQSLoAgAAIEgEXQAAAASJoAsAAIAgEXQBAAAQJIIuAAAAgmTuXnQNJ2JmVyX98YRX+zZJfzrhdeL22B/lwb4oF/ZHebAvyoN9US557o+3u/vpYQ9MbdAtgpltuXuj6DqQYX+UB/uiXNgf5cG+KA/2RblMan8wdAEAAABBIugCAAAgSATdO/PJogvAAPZHebAvyoX9UR7si/JgX5TLRPYHY3QBAAAQJI7oAgAAIEgE3RGY2f9jZt8ys68VXcusM7MzZvYHZvaimX3dzD5SdE2zzMzuNbPnzOyr+/vjF4quadaZ2ZyZtc3s80XXMuvM7Jtm9oKZdcxsq+h6ZpmZvdXM/q2ZfWP/++OHiq5pFpnZ395/Pxz8vGpmPzXWdTJ04Xhm9sOSupJ+293fWXQ9s8zMFiUtuvtXzOwtkq5I+vvu/kcFlzaTzMwkRe7eNbN7JH1J0kfc/csFlzazzOyjkhqS7nf3x4quZ5aZ2TclNdyduVsLZma/Jemyu/+mmVUkvdnd/6LoumaZmc1J2pEUu/vYrovAEd0RuPt/lvTnRdcByd133f0r+7+/JulFSUvFVjW7PNPdv3vP/g//ei6ImT0g6cck/WbRtQBlYWb3S/phSZ+SJHfvEXJL4b2S/v9xhlyJoIspZmYPSapLSoqtZLbt/1d5R9K3JH3B3dkfxflVST8t6WbRhUBS9o++/2RmV8zsQ0UXM8PeIemqpKf2h/X8pplFRRcFfVDS74x7JQRdTCUzq0r6rKSfcvdXi65nlrl7391rkh6QdM7MGN5TADN7TNK33P1K0bXgO5bd/d2SmpL+9/1hcJi8eUnvlvQb7l6XlEr6mWJLmm37w0cel/T/jXtdBF1Mnf2xoJ+V9Gl3/72i60Fm/78Cn5X09wouZVYtS3p8f1zoZyS9x8wuFVvSbHP3P9m//ZakfyfpXLEVzaxXJL1y6H+b/q2y4IviNCV9xd3/+7hXRNDFVNk/+elTkl50918pup5ZZ2anzeyt+7/fJ+lHJH2j2Kpmk7v/rLs/4O4PKfsvwWfc/ULBZc0sM4v2T5jV/n+T/11JzNxTAHffk/Symf3t/ab3SuIE5mL9Q01g2IKUHc7HMczsdyQ9KultZvaKpJ93908VW9XMWpb0jyS9sD8uVJJ+zt2fLrCmWbYo6bf2z559k6TfdXemtQKkvyXp32X/Nte8pP/X3f9jsSXNtA9L+vT+f5n/V0kXC65nZpnZmyX9qKT/dSLrY3oxAAAAhIihCwAAAAgSQRcAAABBIugCAAAgSARdAAAABImgCwAAgCARdAEAABAkgi4AAACCRNAFgCliZn9gZj+6//uamf1a0TUBQFlxZTQAmC4/L+kXzex/llSX9HjB9QBAaXFlNACYMmb2RUlVSY+6+2tm9g5J/4ek/8nd/0Gx1QFAeTB0AQCmiJm9S9KipL9y99ckyd3/q7v/k2IrA4DyIegCwJQws0VJn5b0fkmpma0UXBIAlBpBFwCmgJm9WdLvSXrC3V+U9EuS/s9CiwKAkmOMLgBMOTP7m5J+WdKPSvpNd//nBZcEAKVA0AUAAECQGLoAAACAIBF0AQAAECSCLgAAAIJE0AUAAECQCLoAAAAIEkEXAAAAQSLoAgAAIEgEXQAAAASJoAsAAIAg/Q97HcoohY8tZgAAAABJRU5ErkJggg==\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "Ys, history = k_means(Xs, 2)\n", + "fig = plot_clusters(Xs, Ys, 2, centroids=history[-1][0])," + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": { + "slideshow": { + "slide_type": "notes" + } + }, + "outputs": [], + "source": [ + "# Przygotowanie interaktywnego wykresu\n", + "\n", + "MAXSTEPS = 15\n", + "\n", + "slider_k = widgets.IntSlider(min=1, max=7, step=1, value=2, description=r'$k$', width=300)\n", + "\n", + "def interactive_kmeans_k(steps, history, k):\n", + " if steps >= len(history) or steps == MAXSTEPS:\n", + " steps = len(history) - 1\n", + " fig = plot_clusters(Xs, history[steps][1], k, centroids=history[steps][0])\n", + " \n", + "def interactive_kmeans(k):\n", + " slider_steps = widgets.IntSlider(min=0, max=MAXSTEPS, step=1, value=0, description=r'steps', width=300)\n", + " _, history = k_means(Xs, k)\n", + " widgets.interact(interactive_kmeans_k, steps=slider_steps,\n", + " history=widgets.fixed(history), k=widgets.fixed(k))" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "d60eb5f7bce84fabaa43033382b1c9b8", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "interactive(children=(IntSlider(value=2, description='$k$', max=7, min=1), Button(description='Run Interact', …" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 25, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "widgets.interact_manual(interactive_kmeans, k=slider_k) " + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "### Algorytm $k$ średnich – dane wejściowe\n", + "\n", + "* $k$ – liczba klastrów\n", + "* zbiór uczący $X = \\{ x^{(1)}, x^{(2)}, \\ldots, x^{(m)} \\}$, $x^{(i)} \\in \\mathbb{R}^n$" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "source": [ + "Na wejściu nie ma zbioru $Y$, ponieważ jest to uczenie nienadzorowane!" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "### Algorytm $k$ średnich – pseudokod\n", + "\n", + "1. Zainicjalizuj losowo $k$ centroidów (środków ciężkości klastrów): $\\mu_1, \\ldots, \\mu_k$.\n", + "1. Powtarzaj dopóki przyporządkowania klastrów się zmieniają:\n", + " 1. Dla $i = 1$ do $m$:\n", + " za $y^{(i)}$ przyjmij klasę najbliższego centroidu.\n", + " 1. Dla $c = 1$ do $k$:\n", + " za $\\mu_c$ przyjmij średnią wszystkich punktów $x^{(i)}$ takich, że $y^{(i)} = c$." + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [], + "source": [ + "# Algorytm k średnich\n", + "def kmeans(X, k, distance=euclidean_distance):\n", + " Y = []\n", + " centroids = [[random.uniform(X.min(axis=0)[f],X.max(axis=0)[f])\n", + " for f in range(X.shape[1])]\n", + " for c in range(k)] # Wylosuj centroidy\n", + " while True:\n", + " distances = [[distance(centroids[c], x) for c in range(k)]\n", + " for x in X] # Oblicz odległości\n", + " Y_new = [d.index(min(d)) for d in distances]\n", + " if Y_new == Y:\n", + " break # Jeśli nic się nie zmienia, przerwij\n", + " Y = Y_new\n", + " XY = np.asarray(np.concatenate((X,np.matrix(Y).T),axis=1))\n", + " Xc = [XY[XY[:, 2] == c][:, :-1] for c in range(k)]\n", + " centroids = [[Xc[c].mean(axis=0)[f]\n", + " for f in range(X.shape[1])]\n", + " for c in range(k)] # Przesuń centroidy\n", + " return Y" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "* Liczba klastrów jest określona z góry i wynosi $k$." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "source": [ + "* Jeżeli w którymś kroku algorytmu jedna z klas nie zostanie przyporządkowana żadnemu z przykładów, pomija się ją – w ten sposób wynikiem działania algorytmu może być mniej niż $k$ klastrów." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "### Funkcja kosztu dla problemu klastrowania\n", + "\n", + "$$ J \\left( y^{(i)}, \\ldots, y^{(m)}, \\mu_{1}, \\ldots, \\mu_{k} \\right) = \\frac{1}{m} \\sum_{i=1}^{m} || x^{(i)} - \\mu_{y^{(i)}} || ^2 $$" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "source": [ + "* Zauważmy, że z każdym krokiem algorytmu $k$ średnich koszt się zmniejsza (lub ewentualnie pozostaje taki sam)." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "### Wielokrotna inicjalizacja\n", + "\n", + "* Algorytm $k$ średnich zawsze znajdzie lokalne minimum funkcji kosztu $J$, ale nie zawsze będzie to globalne minimum." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "source": [ + "* Aby temu zaradzić, można uruchomić algorytm $k$ średnich wiele razy, za każdym razem z innym losowym położeniem centroidów (tzw. **wielokrotna losowa inicjalizacja** – *multiple random initialization*). Za każdym razem obliczamy koszt $J$. Wybieramy ten wynik, który ma najniższy koszt." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "### Wybór liczby klastrów $k$\n", + "\n", + "Ile powinna wynosić liczba grup $k$?\n", + "* Najlepiej wybrać $k$ ręcznie w zależności od kształtu danych i celu, który chcemy osiągnąć." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "## 7.2. Analiza głównych składowych" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "notes" + } + }, + "source": [ + "Analiza głównych składowych to inny przykład zagadnienia z dziedziny uczenia nienadzorowanego.\n", + "\n", + "Polega na próbie zredukowania liczby wymiarów dla danych wielowymiarowych, czyli zmniejszenia liczby cech, gdy rozpatrujemy przykłady o dużej liczbie cech." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "### Redukcja liczby wymiarów\n", + "\n", + "Z jakich powodów chcemy redukować liczbę wymiarów?" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "source": [ + "* Chcemy pozbyć się nadmiarowych cech, np. „długość w cm” / „długość w calach”, „długość” i „szerokość” / „powierzchnia”." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "source": [ + "* Chcemy znaleźć bardziej optymalną kombinację cech." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "source": [ + "* Chcemy przyspieszyć działanie algorytmów." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "source": [ + "* Chcemy zwizualizować dane." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "### Błąd rzutowania\n", + "\n", + "**Błąd rzutowania** – błąd średniokwadratowy pomiędzy danymi oryginalnymi a danymi zrzutowanymi." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "### Sformułowanie problemu\n", + "\n", + "**Analiza głównych składowych** (*Principal Component Analysis*, PCA):\n", + "\n", + "Zredukować liczbę wymiarów z $n$ do $k$, czyli znaleźć $k$ wektorów $u^{(1)}, u^{(2)}, \\ldots, u^{(k)}$ takich, że rzutowanie danych na podprzeztrzeń rozpiętą na tych wektorach minimalizuje błąd rzutowania." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "* **Uwaga:** analiza głównych składowych to (mimo pozornych podobieństw) zupełnie inne zagadnienie niż regresja liniowa!" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "### Algorytm PCA\n", + "\n", + "1. Dany jest zbiór składający się z $x^{(1)}, x^{(2)}, \\ldots, x^{(m)} \\in \\mathbb{R}^n$.\n", + "1. Chcemy zredukować liczbę wymiarów z $n$ do $k$ ($k < n$).\n", + "1. W ramach wstępnego przetwarzania dokonujemy skalowania i normalizacji średniej.\n", + "1. Znajdujemy macierz kowariancji:\n", + " $$ \\Sigma = \\frac{1}{m} \\sum_{i=1}^{n} \\left( x^{(i)} \\right) \\left( x^{(i)} \\right)^T $$\n", + "1. Znajdujemy wektory własne macierzy $\\Sigma$ (rozkład SVD):\n", + " $$ (U, S, V) := \\mathop{\\rm SVD}(\\Sigma) $$\n", + "1. Pierwszych $k$ kolumn macierzy $U$ to szukane wektory." + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [], + "source": [ + "from sklearn.preprocessing import StandardScaler\n", + "\n", + "# Algorytm PCA - implementacja\n", + "def pca(X, k):\n", + " X_std = StandardScaler().fit_transform(X) # normalizacja\n", + " mean_vec = np.mean(X_std, axis=0)\n", + " cov_mat = np.cov(X_std.T) # macierz kowariancji\n", + " n = cov_mat.shape[0]\n", + " eig_vals, eig_vecs = np.linalg.eig(cov_mat) # wektory własne\n", + " eig_pairs = [(np.abs(eig_vals[i]), eig_vecs[:, i])\n", + " for i in range(len(eig_vals))]\n", + " eig_pairs.sort()\n", + " eig_pairs.reverse()\n", + " matrix_w = np.hstack([eig_pairs[i][1].reshape(n, 1)\n", + " for i in range(k)]) # wybór\n", + " return X_std.dot(matrix_w) # transformacja" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [ + { + "data": { + "image/png": "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pY4acGloaEinT797rfPZs2d5LwEp5Lq7wn+w1u631u6y1v731tqPuYynVyStljUturm4SEsdNeDa8ePHtW3btsBjvJeAdKFcoUclqZY1LbrZoch1HTW1wIjLj370I33hC1/QmTNndO211+qxxx7T+973vtB+fzvvJV7vQDqQ5PawpNSypslWLy5c1lFTC4y4jI+P66GHHlr//s0339Tg4KDuu+8+ff3rXw/lMVq9l6y1yufzvN6BFDBJbER/8OBBe/IkOwCjd1SrVeXz+ct2a6rL5XKR7dbk6nHRe370ox9pcHCw4fGFhQX97M/+bNeP0+w1XX8tB9Xl7tq1S2fOnNHVV1/ddQwAwmOMeclaezDoWGI2gwB6mas6amqBEZcvfOELTY//8i//ciiP0+y9NDo62nAHwnPnzum9730vG7cACUK5AtCluOr3XNRRu64FRu84c+ZM0+OvvPKKlpaWQnm9N3ovPfjggw1f79KlLgyFQoEZDCAhSHIThgURfom7XjXuOuq09VRG5+I651x77bV68803Gx43xrS1YUq7gt5LzV7vde1u3ALAPWpyPbb5w+XAgQO66667AlfmsyAifr1Qr9oLfyMaC7qIi+qc06omV5ImJyc1NTUV6uNu1Oz1HmccANrXrCaXkVxPbf5w2bNnj5aXly+7T320gekzN5rVq66srKRitKebtmdIto0bkNRFec553/vep0OHDumFF14IPB7HzEH99X7o0CGdO3fOWRwAwsHCMw8F7W61OcHdiAVAbjSrV11eXtaLL74Yc0TRqNcvTk9Pa3JyUtPT06pUKswepJyLRYff/va3G+4KGNdujENDQzpz5ox2797tNA4A3WMk10PNPlyCsADIjYGBgcAR9rqnn35ajzzySCpGO+mp3HtcLDrM5XL6oz/6I+czB1dffbWef/5553EA6A5JroeafbgEYfrMjWKxqHvuuafh8W3btqWiZAG9ydWiQ192Y/QlDgBbR5LroXZW+G7E9JkbuVxOd955p5544onA44ywI8mKxaLGx8cDj20+54TdgaHdmYOoOz/4EgeALbLWJu7rpptusmn29ttv21wuZyUFfmUymfX/5nI5e+LECdch96xvfOMb6/8/gv4/lUol1yECW3bixAmby+WannPauY+r2OLgSxxAr5J00jbIF2kh5qlGrXueeuopvf7660yfeYIW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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "# X - dane ze zbioru \"iris\" z poprzedniego przykładu\n", + "\n", + "X_pca = pca(X, 2)\n", + "fig = plot_unlabeled_data(X_pca)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "notes" + } + }, + "source": [ + "Analiza głównych składowych umożliwiła stworzenie powyższego wykresu, który wizualizuje 4-wymiarowe dane ze zbioru *iris* na 2-wymiarowej płaszczyźnie.\n", + "\n", + "Współrzędne $x_1$ i $x_2$, stanowiące osi wykresu, zostały uzyskane w wyniku działania algorytmu PCA (nie są to żadne z oryginalnych cech ze zbioru *iris* – długość płatka, szerokość płatka itp.)." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "Tutaj można zobaczyć, jak algorytmy redukcji wymiarów (w tym PCA) działają w praktyce:\n", + " * https://projector.tensorflow.org\n", + " * https://biit.cs.ut.ee/clustvis\n", + " * https://labriata.github.io/jsinscience/pca/index.html" + ] + } + ], + "metadata": { + "celltoolbar": "Slideshow", + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.3" + }, + "livereveal": { + "start_slideshow_at": "selected", + "theme": "white" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/wyk/3b_Przegląd_metod_uczenia_nadzorowanego.ipynb b/wyk/3b_Przegląd_metod_uczenia_nadzorowanego.ipynb new file mode 100644 index 0000000..a7e0e76 --- /dev/null +++ b/wyk/3b_Przegląd_metod_uczenia_nadzorowanego.ipynb @@ -0,0 +1,2914 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "### AITech — Uczenie maszynowe\n", + "# 8. Przegląd metod uczenia nadzorowanego" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "## 8.1. Naiwny klasyfikator bayesowski" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "* Naiwny klasyfikator bayesowski jest algorytmem dla problemu klasyfikacji wieloklasowej.\n", + "* Naszym celem jest znalezienie funkcji uczącej $f \\colon x \\mapsto y$, gdzie $y$ oznacza jedną ze zdefiniowanych wcześniej klas.\n", + "* Klasyfikacja probabilistyczna polega na wskazaniu klasy o najwyższym prawdopodobieństwie:\n", + "$$ \\hat{y} = \\mathop{\\arg \\max}_y P( y \\,|\\, x ) $$\n", + "* Naiwny klasyfikator bayesowski należy do rodziny klasyfikatorów probabilistycznych" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "\n", + "\n", + "**Thomas Bayes** (wymowa: /beɪz/) (1702–1761) – angielski matematyk i duchowny" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "### Twierdzenie Bayesa – wzór ogólny\n", + "\n", + "$$ P( Y \\,|\\, X ) = \\frac{ P( X \\,|\\, Y ) \\cdot P( Y ) }{ P ( X ) } $$" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "notes" + } + }, + "source": [ + "Twierdzenie Bayesa opisuje związek między prawdopodobieństwami warunkowymi dwóch zdarzeń warunkujących się nawzajem." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "### Twierdzenie Bayesa\n", + "(po zastosowaniu wzoru na prawdopodobieństwo całkowite)\n", + "\n", + "$$ \\underbrace{P( y_k \\,|\\, x )}_\\textrm{ prawd. a posteriori } = \\frac{ \\overbrace{ P( x \\,|\\, y_k )}^\\textrm{ model klasy } \\cdot \\overbrace{P( y_k )}^\\textrm{ prawd. a priori } }{ \\underbrace{\\sum_{i} P( x \\,|\\, y_i ) \\, P( y_i )}_\\textrm{wyrażenie normalizacyjne} } $$" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "notes" + } + }, + "source": [ + " * W tym przypadku „zdarzenie $x$” oznacza, że cechy wejściowe danej obserwacji przyjmują wartości opisane wektorem $x$.\n", + " * „Zdarzenie $y_k$” oznacza, że dana obserwacja należy do klasy $y_k$.\n", + " * **Model klasy** $y_k$ opisuje rozkład prawdopodobieństwa cech obserwacji należących do tej klasy.\n", + " * **Prawdopodobieństwo *a priori*** to prawdopodobienstwo, że losowa obserwacja należy do klasy $y_k$.\n", + " * **Prawdopodobieństwo *a posteriori*** to prawdopodobieństwo, którego szukamy: że obserwacja opisana wektorem cech $x$ należy do klasy $y_k$." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "### Rola wyrażenia normalizacyjnego w twierdzeniu Bayesa\n", + "\n", + " * Wartość wyrażenia normalizacyjnego nie wpływa na wynik klasyfikacji.\n", + "\n", + "**Przykład**: obserwacja nietypowa ma małe prawdopodobieństwo względem dowolnej klasy, wyrażenie normalizacyjne sprawia, że to prawdopodobieństwo staje się porównywalne z prawdopodobieństwami typowych obserwacji, ale nie wpływa na klasyfikację!" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "### Klasyfikatory dyskryminatywne a generatywne\n", + "\n", + "* Klasyfikatory generatywne tworzą model rozkładu prawdopodobieństwa dla każdej z klas.\n", + "* Klasyfikatory dyskryminatywne wyznaczają granicę klas (*decision boundary*) bezpośrednio.\n", + "* Naiwny klasyfikator bayesowski jest klasyfikatorem generatywnym (ponieważ wyznacza $P( x \\,|\\, y )$).\n", + "* Wszystkie klasyfikatory generatywne są probabilistyczne, ale nie na odwrót.\n", + "* Regresja logistyczna jest przykładem klasyfikatora dyskryminatywnego." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "### Założenie niezależności dla naiwnego klasyfikatora bayesowskiego\n", + "\n", + "* Naiwny klasyfikator bayesowski jest *naiwny*, ponieważ zakłada, że poszczególne cechy są niezależne od siebie:\n", + "$$ P( x_1, \\ldots, x_n \\,|\\, y ) \\,=\\, \\prod_{i=1}^n P( x_i \\,|\\, x_1, \\ldots, x_{i-1}, y ) \\,=\\, \\prod_{i=1}^n P( x_i \\,|\\, y ) $$\n", + "* To założenie jest bardzo przydatne ze względów obliczeniowych, ponieważ bardzo często mamy do czynienia z ogromną liczbą cech (bitmapy, słowniki itp.)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "### Naiwny klasyfikator bayesowski – przykład" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "slideshow": { + "slide_type": "notes" + } + }, + "outputs": [], + "source": [ + "# Przydtne importy\n", + "\n", + "import ipywidgets as widgets\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "import pandas\n", + "\n", + "%matplotlib inline" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [], + "source": [ + "# Wczytanie danych (gatunki kosaćców)\n", + "\n", + "data_iris = pandas.read_csv('iris.csv')\n", + "data_iris_setosa = pandas.DataFrame()\n", + "data_iris_setosa['dł. płatka'] = data_iris['pl'] # \"pl\" oznacza \"petal length\"\n", + "data_iris_setosa['szer. płatka'] = data_iris['pw'] # \"pw\" oznacza \"petal width\"\n", + "data_iris_setosa['Iris setosa?'] = data_iris['Gatunek'].apply(lambda x: 1 if x=='Iris-setosa' else 0)\n", + "\n", + "m, n_plus_1 = data_iris_setosa.values.shape\n", + "n = n_plus_1 - 1\n", + "Xn = data_iris_setosa.values[:, 0:n].reshape(m, n)\n", + "\n", + "X = np.matrix(np.concatenate((np.ones((m, 1)), Xn), axis=1)).reshape(m, n_plus_1)\n", + "Y = np.matrix(data_iris_setosa.values[:, 2]).reshape(m, 1)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "liczba przykładów: {0: 100, 1: 50}\n", + "prior probability: {0: 0.6666666666666666, 1: 0.3333333333333333}\n" + ] + } + ], + "source": [ + "classes = [0, 1]\n", + "count = [sum(1 if y == c else 0 for y in Y.T.tolist()[0]) for c in classes]\n", + "prior_prob = [float(count[c]) / float(Y.shape[0]) for c in classes]\n", + "\n", + "print('liczba przykładów: ', {c: count[c] for c in classes})\n", + "print('prior probability:', {c: prior_prob[c] for c in classes})" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "slideshow": { + "slide_type": "notes" + } + }, + "outputs": [], + "source": [ + "# Wykres danych (wersja macierzowa)\n", + "def plot_data_for_classification(X, Y, xlabel, ylabel): \n", + " fig = plt.figure(figsize=(16*.6, 9*.6))\n", + " ax = fig.add_subplot(111)\n", + " fig.subplots_adjust(left=0.1, right=0.9, bottom=0.1, top=0.9)\n", + " X = X.tolist()\n", + " Y = Y.tolist()\n", + " X1n = [x[1] for x, y in zip(X, Y) if y[0] == 0]\n", + " X1p = [x[1] for x, y in zip(X, Y) if y[0] == 1]\n", + " X2n = [x[2] for x, y in zip(X, Y) if y[0] == 0]\n", + " X2p = [x[2] for x, y in zip(X, Y) if y[0] == 1]\n", + " ax.scatter(X1n, X2n, c='r', marker='x', s=50, label='Dane')\n", + " ax.scatter(X1p, X2p, c='g', marker='o', s=50, label='Dane')\n", + " \n", + " ax.set_xlabel(xlabel)\n", + " ax.set_ylabel(ylabel)\n", + " ax.margins(.05, .05)\n", + " return fig" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "fig = plot_data_for_classification(X, Y, xlabel=u'dł. płatka', ylabel=u'szer. płatka')" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "średnia: [matrix([[1. , 4.906, 1.676]]), matrix([[1. , 1.464, 0.244]])]\n", + "odchylenie standardowe: [matrix([[0. , 0.8214402 , 0.42263933]]), matrix([[0. , 0.17176728, 0.10613199]])]\n", + "(1, 3)\n" + ] + } + ], + "source": [ + "XY = np.column_stack((X, Y))\n", + "XY_split = [XY[np.where(XY[:,3] == c)[0]] for c in classes]\n", + "X_split = [XY_split[c][:,0:3] for c in classes]\n", + "Y_split = [XY_split[c][:,3] for c in classes]\n", + "\n", + "X_mean = [np.mean(X_split[c], axis=0) for c in classes]\n", + "X_std = [np.std(X_split[c], axis=0) for c in classes]\n", + "print('średnia: ', X_mean) \n", + "print('odchylenie standardowe: ', X_std)\n", + "\n", + "print(X_std[0].shape)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "slideshow": { + "slide_type": "notes" + } + }, + "outputs": [], + "source": [ + "# Rysowanie średnich\n", + "def draw_means(fig, means, xmin=0.0, xmax=7.0, ymin=0.0, ymax=7.0):\n", + " class_color = {0: 'r', 1: 'g'}\n", + " classes = range(len(means))\n", + " ax = fig.axes[0]\n", + " mean_x1 = [means[c].item(0, 1) for c in classes]\n", + " mean_x2 = [means[c].item(0, 2) for c in classes]\n", + " for c in classes:\n", + " ax.plot([mean_x1[c], mean_x1[c]], [xmin, xmax],\n", + " color=class_color.get(c, 'c'), linestyle='dashed')\n", + " ax.plot([ymin, ymax], [mean_x2[c], mean_x2[c]],\n", + " color=class_color.get(c, 'c'), linestyle='dashed') " + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [], + "source": [ + "from scipy.stats import norm\n", + "\n", + "# Prawdopodobieństwo klasy dla pojedynczej cechy\n", + "# Uwaga: jeżeli odchylenie standardowe dla danej cechy jest równe 0, \n", + "# to nie można określić prawdopodbieństwa klasy!\n", + "def prob(x, c, feature, mean, std):\n", + " sd = std[c].item(0, feature)\n", + " if sd == 0:\n", + " print('Nie można określić prawdopodobieństwa klasy dla cechy {}.!'.format(feature))\n", + " return norm(mean[c].item(0, feature), sd).pdf(x)\n", + "\n", + "# Prawdopodobieństwo klasy\n", + "# Uwaga: tu bierzemy iloczyn dwóch cech (1. i 2.), w ogólności może być ich więcej\n", + "def class_prob(x, c, mean, std, features=[1, 2]):\n", + " result = 1\n", + " for feature in features:\n", + " result *= prob(x[feature], c, feature, mean, std)\n", + " return result" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(1, 3)\n", + "[matrix([[0. , 0.8214402 , 0.42263933]]), matrix([[0. , 0.17176728, 0.10613199]])]\n", + "[matrix([[1. , 4.906, 1.676]]), matrix([[1. , 1.464, 0.244]])]\n", + "[[1.57003335e-06 1.61965173e-23 3.09005273e-08]]\n" + ] + } + ], + "source": [ + "print(X_std[0].shape)\n", + "print(X_std)\n", + "print(X_mean)\n", + "\n", + "X_prob_0=class_prob(X, 0, X_mean, X_std)\n", + "print(X_prob_0)" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "slideshow": { + "slide_type": "notes" + } + }, + "outputs": [], + "source": [ + "# Wykres prawdopodobieństw klas\n", + "def plot_prob(fig, X_mean, X_std, classes, xmin=0.0, xmax=7.0, ymin=0.0, ymax=7.0):\n", + " class_color = {0: 'r', 1: 'g'}\n", + " ax = fig.axes[0]\n", + " x1, x2 = np.meshgrid(np.arange(xmin, xmax, 0.02),\n", + " np.arange(xmin, xmax, 0.02))\n", + " for c in classes:\n", + " fun1 = lambda x: prob(x, c, 1, X_mean, X_std)\n", + " fun2 = lambda x: prob(x, c, 2, X_mean, X_std)\n", + " p = fun1(x1) * fun2(x2)\n", + " plt.contour(x1, x2, p, levels=np.arange(0.0, 1.0, 0.1),\n", + " colors=class_color.get(c, 'c'), lw=3)" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + ":11: UserWarning: The following kwargs were not used by contour: 'lw'\n", + " plt.contour(x1, x2, p, levels=np.arange(0.0, 1.0, 0.1),\n" + ] + }, + { + "data": { + "image/png": "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R4BNmxzbkpKA9ev19w4dgI0b826bNAmYPl3P437e9HTggQeA7GzX9+Pee3X9vHnAv/4FVK8OHDmS/+s3DKByZSAzU49n7tOiBXD55UC5ckBMDPD118CPPwI33wy0bw9ERADbtul71awZYLMBOTm6ZGUB584BZ87ocTMygFOngJMngRMngKNHgWPH9LnuypfX965hQ6BRI6BJE+Cii4DERP29bNn8X09hefr75+YCI0cCH3yg5/7rL31u06bA8OHA9dcDbdoEtx0F2bEDePZZYMECfc9vv10/V7VqhbcdpYxhGOtFJDnPegZSRFQsiegXuMlu1y++s2eBV1/VL5oDB4BWrYBx44AbbtBAID92uwYtU6fmPfakScDTTwMffwwMHOj6JZ6TAyxfDgwerO2KjHRse+014NNPga++0kCiTBn9cjadOgWsXOl5X5tN22GzAcOGAR99lPe8w4cDCxfq8zy9HyLA0qXAoEGux87IAN54A3jvPQ1Cjx4FDh92BDZff63By99/63EyMzUYOns2//fQk6gofe/LlQMqVADi4nSpUgWoWhWoVk2Dtpo1daldG6hbF6hUyfcgOBhENFhOTAS+/x745hvg22+B48e1HR076t9+0CCgdevwt+377zVYXrpU39Obb9bPZUJC+NpRinkLpCwfznNeOLRX/Gw4uEE2HNxgdTOotPEljyUrS2TBAseQWZUqOlSU3yymgkoUmPWc3HOTzMf55RuZ9ZzMwo/uS//+Ig0aeN7XbJe3m/wuWpT/+1HQrVoKU4bAbtfE/tOntWxAWpoOqX31lU65T0vTGYcnT+owU7BLVATb8eOapP3EEyJXXeU6hNiggd6X7p139HVZ4ehRrW/VsqVcyIGbPFmHGCmswBwpCgXmSFHYFbbWj92ueTcjRjjKCHTqpLO43HNaCjp2drYjaIqJ0bwn58dt2rgGQPnlOR096sipKlPGteJ3tWqO2V8NGmjyupk87unY7jc/dm6zzeb9Nd17r6MsQqB1k6yctecLu11nNX7yieYSDR/umOFmLi1bakX2+fNFdu2yrq3Z2drOESMcdcI6dhR5/XUt/0GWYCBFIcFAisKuMDeHdZeWpkUZzYCnTBnthViwQHsm3I/l3rtjzp7z1iPlHOiIeJ615+mWKubviYka4N12m6PwqLfzAHrbloJ6oMxeNG/bC+rN8lVRCaQy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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "fig = plot_data_for_classification(X, Y, xlabel=u'dł. płatka', ylabel=u'szer. płatka')\n", + "draw_means(fig, X_mean)\n", + "plot_prob(fig, X_mean, X_std, classes)" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "slideshow": { + "slide_type": "notes" + } + }, + "outputs": [], + "source": [ + "# Prawdopodobieństwo a posteriori\n", + "def posterior_prob(x, c):\n", + " normalizer = sum(class_prob(x, c, X_mean, X_std)\n", + " * prior_prob[c]\n", + " for c in classes)\n", + " return (class_prob(x, c, X_mean, X_std) \n", + " * prior_prob[c]\n", + " / normalizer)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "notes" + } + }, + "source": [ + "Aby teraz przewidzieć klasę $y$ dla dowolnego zestawu cech $x$, wystarczy sprawdzić, dla której klasy prawdopodobieństwo *a posteriori* jest większe:" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "slideshow": { + "slide_type": "skip" + } + }, + "outputs": [], + "source": [ + "# Funkcja klasyfikująca (funkcja predykcji)\n", + "def predict_class(x):\n", + " p = [posterior_prob(x, c) for c in classes]\n", + " if p[1] > p[0]:\n", + " return 1\n", + " else:\n", + " return 0" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "slideshow": { + "slide_type": "skip" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1\n", + "0\n" + ] + } + ], + "source": [ + "x = [1, 2.0, 0.5] # długość płatka: 2.0, szerokość płatka: 0.5\n", + "y = predict_class(x)\n", + "print(y) # 1 – To prawdopodobnie jest Iris setosa\n", + "\n", + "x = [1, 2.5, 1.0] # długość płatka: 2.5, szerokość płatka: 1.0\n", + "y = predict_class(x)\n", + "print(y) # 0 – To prawdopodobnie nie jest Iris setosa" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "notes" + } + }, + "source": [ + "Zobaczmy, jak to wygląda na wykresie. Narysujemy w tym celu granicę między klasą 1 a 0:" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "slideshow": { + "slide_type": "skip" + } + }, + "outputs": [], + "source": [ + "# Wykres granicy klas dla naiwnego Bayesa\n", + "def plot_decision_boundary_bayes(fig, X_mean, X_std, xmin=0.0, xmax=7.0, ymin=0.0, ymax=7.0):\n", + " ax = fig.axes[0]\n", + " x1, x2 = np.meshgrid(np.arange(xmin, xmax, 0.02),\n", + " np.arange(ymin, ymax, 0.02))\n", + " p = [posterior_prob([1, x1, x2], c) for c in classes]\n", + " p_diff = p[1] - p[0]\n", + " plt.contour(x1, x2, p_diff, levels=[0.0], colors='c', lw=3);" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + ":8: UserWarning: The following kwargs were not used by contour: 'lw'\n", + " plt.contour(x1, x2, p_diff, levels=[0.0], colors='c', lw=3);\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "fig = plot_data_for_classification(X, Y, xlabel=u'dł. płatka', ylabel=u'szer. płatka')\n", + "plot_decision_boundary_bayes(fig, X_mean, X_std)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "### Dla porównania: regresja logistyczna na tych samych danych" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": { + "slideshow": { + "slide_type": "notes" + } + }, + "outputs": [], + "source": [ + "def powerme(x1,x2,n):\n", + " X = []\n", + " for m in range(n+1):\n", + " for i in range(m+1):\n", + " X.append(np.multiply(np.power(x1,i),np.power(x2,(m-i))))\n", + " return np.hstack(X)\n", + "\n", + "# Funkcja logistyczna\n", + "def safeSigmoid(x, eps=0):\n", + " y = 1.0/(1.0 + np.exp(-x))\n", + " if eps > 0:\n", + " y[y < eps] = eps\n", + " y[y > 1 - eps] = 1 - eps\n", + " return y\n", + "\n", + "# Funkcja hipotezy dla regresji logistycznej\n", + "def h(theta, X, eps=0.0):\n", + " return safeSigmoid(X*theta, eps)\n", + "\n", + "# Funkcja kosztu dla regresji logistycznej\n", + "def J(h,theta,X,y, lamb=0):\n", + " m = len(y)\n", + " f = h(theta, X, eps=10**-7)\n", + " j = -np.sum(np.multiply(y, np.log(f)) + \n", + " np.multiply(1 - y, np.log(1 - f)), axis=0)/m\n", + " if lamb > 0:\n", + " j += lamb/(2*m) * np.sum(np.power(theta[1:],2))\n", + " return j\n", + "\n", + "# Gradient funkcji kosztu\n", + "def dJ(h,theta,X,y,lamb=0):\n", + " g = 1.0/y.shape[0]*(X.T*(h(theta,X)-y))\n", + " if lamb > 0:\n", + " g[1:] += lamb/float(y.shape[0]) * theta[1:] \n", + " return g\n", + "\n", + "# Funkcja klasyfikująca\n", + "def classifyBi(theta, X):\n", + " prob = h(theta, X)\n", + " return prob" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [], + "source": [ + "# Przygotowanie danych dla wielomianowej regresji logistycznej\n", + "\n", + "data = np.matrix(data_iris_setosa)\n", + "\n", + "Xpl = powerme(data[:, 1], data[:, 0], n)\n", + "Ypl = np.matrix(data[:, 2]).reshape(m, 1)" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "slideshow": { + "slide_type": "notes" + } + }, + "outputs": [], + "source": [ + "# Metoda gradientu prostego dla regresji logistycznej\n", + "def GD(h, fJ, fdJ, theta, X, y, alpha=0.01, eps=10**-3, maxSteps=10000):\n", + " errorCurr = fJ(h, theta, X, y)\n", + " errors = [[errorCurr, theta]]\n", + " while True:\n", + " # oblicz nowe theta\n", + " theta = theta - alpha * fdJ(h, theta, X, y)\n", + " # raportuj poziom błędu\n", + " errorCurr, errorPrev = fJ(h, theta, X, y), errorCurr\n", + " # kryteria stopu\n", + " if abs(errorPrev - errorCurr) <= eps:\n", + " break\n", + " if len(errors) > maxSteps:\n", + " break\n", + " errors.append([errorCurr, theta]) \n", + " return theta, errors" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "theta = [[ 4.01960795]\n", + " [ 3.89499137]\n", + " [ 0.18747599]\n", + " [-1.3524039 ]\n", + " [-2.00123783]\n", + " [-0.87625505]]\n" + ] + } + ], + "source": [ + "# Uruchomienie metody gradientu prostego dla regresji logistycznej\n", + "theta_start = np.matrix(np.zeros(Xpl.shape[1])).reshape(Xpl.shape[1], 1)\n", + "theta, errors = GD(h, J, dJ, theta_start, Xpl, Ypl, \n", + " alpha=0.1, eps=10**-7, maxSteps=100000)\n", + "print(r'theta = {}'.format(theta))" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": { + "slideshow": { + "slide_type": "notes" + } + }, + "outputs": [], + "source": [ + "# Wykres granicy klas\n", + "def plot_decision_boundary(fig, theta, Xpl, xmin=0.0, xmax=7.0):\n", + " ax = fig.axes[0]\n", + " xx, yy = np.meshgrid(np.arange(xmin, xmax, 0.02),\n", + " np.arange(xmin, xmax, 0.02))\n", + " l = len(xx.ravel())\n", + " C = powerme(yy.reshape(l, 1), xx.reshape(l, 1), n)\n", + " z = classifyBi(theta, C).reshape(int(np.sqrt(l)), int(np.sqrt(l)))\n", + "\n", + " plt.contour(xx, yy, z, levels=[0.5], colors='m', lw=3);" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + ":10: UserWarning: The following kwargs were not used by contour: 'lw'\n", + " plt.contour(xx, yy, z, levels=[0.5], colors='m', lw=3);\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "fig = plot_data_for_classification(Xpl, Ypl, xlabel=u'dł. płatka', ylabel=u'szer. płatka')\n", + "plot_decision_boundary(fig, theta, Xpl)" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + ":10: UserWarning: The following kwargs were not used by contour: 'lw'\n", + " plt.contour(xx, yy, z, levels=[0.5], colors='m', lw=3);\n", + ":8: UserWarning: The following kwargs were not used by contour: 'lw'\n", + " plt.contour(x1, x2, p_diff, levels=[0.0], colors='c', lw=3);\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAlIAAAFkCAYAAADrFNVeAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nO3deXxU5fU/8M/JRnZICBAIq2wuVBAoIlpbtVWLfgFpXVrbr7Za2v6sotS1td9utrZqodjaxdLFtrZq2bRqa2kbEIUgBJBFIKyBJIRsZF8mM/f8/pgZsjAbd+bmzkw+79drXmHunfvcM1c0x+c591xRVRARERHRuUuwOwAiIiKiWMVEioiIiMgkJlJEREREJjGRIiIiIjKJiRQRERGRSUykiIiIiExKsjuA7vLy8nTs2LF2h0FERETUQ3FxcY2qDum9PaoSqbFjx2Lbtm12h0FERETUg4iU+trOpT0iIiIik5hIEREREZnERIqIiIjIJCZSRERERCYxkSIiIiIyiYkUERERkUlMpIiIiIhMYiJFREREZBITKSIiIiKTmEgRERERmcREioiIiMgkJlJEREREJjGRIiIiIjKJiRQRERGRSUykiIiIiExiIkVERERkEhMpIiIiIpOYSBERERGZxESKiIiIyCQmUkREREQmMZEiIiIiMomJFBEREZFJTKSIiIiITGIiRURERGQSEykiIiIik5hIEREREZnERIqIiIjIJCZSRERERCYxkSIiIiIyiYkUERERkUlMpIiIiIhMYiJFREREZBITKSIiIiKTmEgRERERmcREioiIiMgkJlJEREREJjGRIiIiIjKJiRQRERGRSZYmUiIySERWish+EdknIpdZeT4iIiKivpRk8fjLAfxTVT8tIikA0i0+HxEREVGfsSyREpFsAFcCuBMAVNUBwGHV+YiIiIj6mpVLe+cBqAbwexHZISIrRCSj94dEZJGIbBORbdXV1RaGQ0RERBRZViZSSQCmA/ilql4CoAXAo70/pKrPq+pMVZ05ZMgQC8MhIiIiiiwrE6kyAGWqusXzfiXciRURERFRXLAskVLVSgAnRGSyZ9M1AD6w6nxEREREfc3qu/buBfCi5469IwC+YPH5iIiIiPqMpYmUqu4EMNPKcxARERHZhZ3NiYiIiExiIkVERERkEhMpIiIiIpOYSBERERGZxESKiIiIyCQmUkREREQmMZEiIiIiMomJFBEREZFJTKSIiIiITGIiRURERGQSEykiIiIik5hIEREREZnERIqIiIjIJCZSRERERCYxkSIiIiIyiYkUERERkUlMpIiIiIhMYiJFREREZBITKSIiIiKTmEgRERERmcREioiIiMgkJlJEREREJjGRIiIiIjKJiRQRERGRSUykiIiIiExiIkVERERkEhMpIiIiIpOYSBERERGZxESKiIiIyCQmUkREREQmMZEiIiIiMomJFBEREZFJTKSIiIiITGIiRURERGQSEykiIiIik5KsHFxEjgFoAuAC4FTVmVaej4iIiKgvWZpIeVylqjV9cB4iIiKiPsWlPSIiIiKTrE6kFMC/RKRYRBZZfC4iIiKiPmX10t7lqlohIkMBrBOR/ar6dvcPeBKsRQAwevRoi8MhIiIiihxLZ6RUtcLzswrAGgCzfHzmeVWdqaozhwwZYmU4RERERBFlWSIlIhkikuX9M4BrAeyx6nxEREREfc3Kpb1hANaIiPc8f1HVf1p4PiIiIqI+ZVkipapHAEy1anwiIiIiu7H9AREREZFJTKSIiIiITGIiRURERGQSEykiIiIik5hIEREREZnERIqIiIjIJCZSRERERCYxkSIiIiIyiYkUERERkUlMpIiIiIhMYiJFREREZBITKSIiIiKTmEgRERERmcREioiIiMgkJlJEREREJjGRIiIiIjKJiRQRERGRSUykiIiIiExiIkVERERkEhMpIiIiIpOYSBERERGZxESKiIiIyCQmUkREREQmMZEiIiIiMomJFBEREZFJTKSIiIiITGIiRURERGQSEykiIiIik5hIEREREZnERIqIiIjIJCZSRERERCYxkSIiIiIyiYkUERERkUlMpIiIiIhMYiJFREREZFJSqB8UkaEAUr3vVfW4JRERERERxYigM1IiMk9EDgI4CmADgGMA/hHqCUQkUUR2iMjrpqMkIiIiikKhLO19H8BsACWqOg7ANQDePYdzLAawz0RsRERERFEtlESqU1VrASSISIKqFgKYFsrgIjISwA0AVoQRIxEREVFUCqVGql5EMgG8DeBFEakC4Axx/J8CeBhAlsn4iIiIiKJWKDNS8wG0AXgAwD8BHAZwY7CDRORGAFWqWhzkc4tEZJuIbKuurg4hHCIiIqLoEEoidZuqulTV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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "fig = plot_data_for_classification(Xpl, Ypl, xlabel=u'dł. płatka', ylabel=u'szer. płatka')\n", + "plot_decision_boundary(fig, theta, Xpl)\n", + "plot_decision_boundary_bayes(fig, X_mean, X_std)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "### Inny przykład" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [], + "source": [ + "# Wczytanie danych (gatunki kosaćców)\n", + "\n", + "data_iris = pandas.read_csv('iris.csv')\n", + "data_iris_versicolor = pandas.DataFrame()\n", + "data_iris_versicolor['dł. płatka'] = data_iris['pl'] # \"pl\" oznacza \"petal length\"\n", + "data_iris_versicolor['szer. płatka'] = data_iris['pw'] # \"pw\" oznacza \"petal width\"\n", + "data_iris_versicolor['Iris versicolor?'] = data_iris['Gatunek'].apply(lambda x: 1 if x=='Iris-versicolor' else 0)\n", + "\n", + "m, n_plus_1 = data_iris_versicolor.values.shape\n", + "n = n_plus_1 - 1\n", + "Xn = data_iris_versicolor.values[:, 0:n].reshape(m, n)\n", + "\n", + "X = np.matrix(np.concatenate((np.ones((m, 1)), Xn), axis=1)).reshape(m, n_plus_1)\n", + "Y = np.matrix(data_iris_setosa.values[:, 2]).reshape(m, 1)" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": { + "slideshow": { + "slide_type": "notes" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "liczba przykładów: {0: 100, 1: 50}\n", + "prior probability: {0: 0.6666666666666666, 1: 0.3333333333333333}\n" + ] + } + ], + "source": [ + "classes = [0, 1]\n", + "count = [sum(1 if y == c else 0 for y in Y.T.tolist()[0]) for c in classes]\n", + "prior_prob = [float(count[c]) / float(Y.shape[0]) for c in classes]\n", + "\n", + "print('liczba przykładów: ', {c: count[c] for c in classes})\n", + "print('prior probability:', {c: prior_prob[c] for c in classes})" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "fig = plot_data_for_classification(X, Y, xlabel=u'dł. płatka', ylabel=u'szer. płatka')" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "średnia: [matrix([[1. , 4.906, 1.676]]), matrix([[1. , 1.464, 0.244]])]\n", + "odchylenie standardowe: [matrix([[0. , 0.8214402 , 0.42263933]]), matrix([[0. , 0.17176728, 0.10613199]])]\n" + ] + } + ], + "source": [ + "XY = np.column_stack((X, Y))\n", + "XY_split = [XY[np.where(XY[:,3] == c)[0]] for c in classes]\n", + "X_split = [XY_split[c][:,0:3] for c in classes]\n", + "Y_split = [XY_split[c][:,3] for c in classes]\n", + "\n", + "X_mean = [np.mean(X_split[c], axis=0) for c in classes]\n", + "X_std = [np.std(X_split[c], axis=0) for c in classes]\n", + "print('średnia: ', X_mean) \n", + "print('odchylenie standardowe: ', X_std)" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + ":11: UserWarning: The following kwargs were not used by contour: 'lw'\n", + " plt.contour(x1, x2, p, levels=np.arange(0.0, 1.0, 0.1),\n" + ] + }, + { + "data": { + "image/png": "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R4BNmxzbkpKA9ev19w4dgI0b826bNAmYPl3P437e9HTggQeA7GzX9+Pee3X9vHnAv/4FVK8OHDmS/+s3DKByZSAzU49n7tOiBXD55UC5ckBMDPD118CPPwI33wy0bw9ERADbtul71awZYLMBOTm6ZGUB584BZ87ocTMygFOngJMngRMngKNHgWPH9LnuypfX965hQ6BRI6BJE+Cii4DERP29bNn8X09hefr75+YCI0cCH3yg5/7rL31u06bA8OHA9dcDbdoEtx0F2bEDePZZYMECfc9vv10/V7VqhbcdpYxhGOtFJDnPegZSRFQsiegXuMlu1y++s2eBV1/VL5oDB4BWrYBx44AbbtBAID92uwYtU6fmPfakScDTTwMffwwMHOj6JZ6TAyxfDgwerO2KjHRse+014NNPga++0kCiTBn9cjadOgWsXOl5X5tN22GzAcOGAR99lPe8w4cDCxfq8zy9HyLA0qXAoEGux87IAN54A3jvPQ1Cjx4FDh92BDZff63By99/63EyMzUYOns2//fQk6gofe/LlQMqVADi4nSpUgWoWhWoVk2Dtpo1daldG6hbF6hUyfcgOBhENFhOTAS+/x745hvg22+B48e1HR076t9+0CCgdevwt+377zVYXrpU39Obb9bPZUJC+NpRinkLpCwfznNeOLRX/Gw4uEE2HNxgdTOotPEljyUrS2TBAseQWZUqOlSU3yymgkoUmPWc3HOTzMf55RuZ9ZzMwo/uS//+Ig0aeN7XbJe3m/wuWpT/+1HQrVoKU4bAbtfE/tOntWxAWpoOqX31lU65T0vTGYcnT+owU7BLVATb8eOapP3EEyJXXeU6hNiggd6X7p139HVZ4ehRrW/VsqVcyIGbPFmHGCmswBwpCgXmSFHYFbbWj92ueTcjRjjKCHTqpLO43HNaCjp2drYjaIqJ0bwn58dt2rgGQPnlOR096sipKlPGteJ3tWqO2V8NGmjyupk87unY7jc/dm6zzeb9Nd17r6MsQqB1k6yctecLu11nNX7yieYSDR/umOFmLi1bakX2+fNFdu2yrq3Z2drOESMcdcI6dhR5/XUt/0GWYCBFIcFAisKuMDeHdZeWpkUZzYCnTBnthViwQHsm3I/l3rtjzp7z1iPlHOiIeJ615+mWKubviYka4N12m6PwqLfzAHrbloJ6oMxeNG/bC+rN8lVRCaQy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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "fig = plot_data_for_classification(X, Y, xlabel=u'dł. płatka', ylabel=u'szer. płatka')\n", + "draw_means(fig, X_mean)\n", + "plot_prob(fig, X_mean, X_std, classes)" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + ":8: UserWarning: The following kwargs were not used by contour: 'lw'\n", + " plt.contour(x1, x2, p_diff, levels=[0.0], colors='c', lw=3);\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "fig = plot_data_for_classification(X, Y, xlabel=u'dł. płatka', ylabel=u'szer. płatka')\n", + "plot_decision_boundary_bayes(fig, X_mean, X_std)" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [], + "source": [ + "# Przygotowanie danych dla wielomianowej regresji logistycznej\n", + "\n", + "data = np.matrix(data_iris_versicolor)\n", + "\n", + "Xpl = powerme(data[:, 1], data[:, 0], n)\n", + "Ypl = np.matrix(data[:, 2]).reshape(m, 1)" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "theta = [[-10.68923095]\n", + " [ 5.52649967]\n", + " [ 5.83316957]\n", + " [ -0.60707243]\n", + " [ -0.46353729]\n", + " [ -2.82974456]]\n" + ] + } + ], + "source": [ + "# Uruchomienie metody gradientu prostego dla regresji logistycznej\n", + "theta_start = np.matrix(np.zeros(Xpl.shape[1])).reshape(Xpl.shape[1], 1)\n", + "theta, errors = GD(h, J, dJ, theta_start, Xpl, Ypl, \n", + " alpha=0.05, eps=10**-7, maxSteps=100000)\n", + "print(r'theta = {}'.format(theta))" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + ":10: UserWarning: The following kwargs were not used by contour: 'lw'\n", + " plt.contour(xx, yy, z, levels=[0.5], colors='m', lw=3);\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAlIAAAFkCAYAAADrFNVeAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nO3de3wU9bk/8M+zu7lfSEJCAgREQEBQRBOvYK3VqkUFRFusvfrT2lNtRbAK6PH0Yisc2wOlp7TnWGqt1lOpXG2lVmtB1CLIXbnfBRMgF0Lu2ezu8/tjdskm2Ruzmexu8nm/XvPazMzOzHe3Nvkw88wzoqogIiIionNni/UAiIiIiBIVgxQRERGRSQxSRERERCYxSBERERGZxCBFREREZBKDFBEREZFJjlgPwF9+fr4OGTIk1sMgIiIiamfz5s2VqlrQcXlcBakhQ4Zg06ZNsR4GERERUTsicjTQcl7aIyIiIjKJQYqIiIjIJAYpIiIiIpMYpIiIiIhMYpAiIiIiMolBioiIiMgkBikiIiIikxikiIiIiExikCIiIiIyiUGKiIiIyCQGKSIiIiKTGKSIiIiITGKQIiIiIjKJQYqIiIjIJAYpIiIiIpMYpIiIiIhMYpAiIiIiMolBioiIiMgkBikiIiIikxikiIiIiExikCIiIiIyiUGKiIiIyCQGKSIiIiKTGKSIiIiITGKQIiIiIjKJQYqIiIjIJAYpIiIiIpMYpIiIiIhMYpAiIiIiMolBioiIiMgkBikiIiIikxikiIiIiExikCIiIiIyiUGKiIiIyCQGKSIiIiKTGKSIiIiITGKQIiIiIjKJQYqIiIjIJEuDlIjkiMhSEdkjIrtF5Gorj0dERETUnRwW738hgDdU9S4RSQaQbvHxiIiIiLqNZUFKRLIBfAbANwFAVZ0AnFYdj4iIiKi7WXlpbyiACgC/F5GtIrJYRDI6vklEHhCRTSKyqaKiwsLhEBEREXUtK4OUA8BlAH6jqpcCaAAwu+ObVPU5VS1V1dKCggILh0NERETUtawMUscBHFfVDd75pTCCFREREVGPYFmQUtUTAI6JyEjvohsA7LLqeERERETdzeq79r4H4GXvHXuHANxr8fGIiIiIuo2lQUpVtwEotfIYRERERLHCzuZEREREJjFIEREREZnEIEVERERkEoMUERERkUkMUkREREQmMUgRERERmcQgRURERGQSgxQRERGRSQxSRERERCYxSBERERGZxCBFREREZBKDFBEREZFJDFJEREREJjFIEREREZnEIEVERERkEoMUERERkUkMUkREREQmMUgRERERmcQgRURERGQSgxQRERGRSQxSRERERCYxSBERERGZxCBFREREZBKDFBEREZFJDFJEREREJjFIEREREZnEIEVERERkEoMUERERkUkMUkREREQmMUgRERERmcQgRURERGQSgxQRERGRSQxSRERERCYxSBERERGZxCBFREREZJLDyp2LyBEAdQDcAFyqWmrl8YiIiIi6k6VByut6Va3shuMQERERdSte2iMiIiIyyeogpQDeFJHNIvKAxcciIiIi6lZWX9obr6plItIPwFsiskdV1/m/wRuwHgCAwYMHWzwcIiIioq5j6RkpVS3zvp4CsALAFQHe85yqlqpqaUFBgZXDISIiIupSlgUpEckQkSzfzwBuAvCxVccjIiIi6m5WXtorBLBCRHzH+T9VfcPC4xERERF1K8uClKoeAnCJVfsnIiIiijW2PyAiIiIyiUGKiIiIyCQGKSIiIiKTGKSIiIiITGKQIiIiIjKJQYqIiIjIJAYpIiIiIpMYpIiIiIhMYpAiIiIiMolBioiIiMgkBikiIiIikxikiIiIiExikCIiIiIyiUGKiIiIyCQGKSIiIiKTGKSIiIiITGKQIiIiIjKJQYqIiIjIJAYpIiIiIpMYpIiIiIhMYpAiIiIiMolBioiIiMgkBikiIiIikxikiIiIiExikCIiIiIyiUGKiIiIyCQGKSIiIiKTGKSIiIiITGKQIiIiIjKJQYqIiIjIJAYpIiIiIpMYpIiIiIhMYpAiIiIiMolBioiIiMgkBikiIiIikxyRvlFE+gFI9c2r6ieWjIiIiIgoQYQ9IyUik0RkP4DDAN4BcATA3yI9gIjYRWSriPzV9CiJiIiI4lAkl/aeBnAVgH2qej6AGwC8fw7HmA5gt4mxEREREcW1SIJUq6pWAbCJiE1V1wAYF8nORaQYwK0AFkcxRiIiIqK4FEmNVI2IZAJYB+BlETkFwBXh/n8B4HEAWSbHR0RERBS3IjkjNRlAE4AZAN4AcBDAbeE2EpHbAJxS1c1h3veAiGwSkU0VFRURDIeIiIgoPkQSpO5WVbequlT1D6r6SxhnmcIZ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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "fig = plot_data_for_classification(Xpl, Ypl, xlabel=u'dł. płatka', ylabel=u'szer. płatka')\n", + "plot_decision_boundary(fig, theta, Xpl)" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + ":10: UserWarning: The following kwargs were not used by contour: 'lw'\n", + " plt.contour(xx, yy, z, levels=[0.5], colors='m', lw=3);\n", + ":8: UserWarning: The following kwargs were not used by contour: 'lw'\n", + " plt.contour(x1, x2, p_diff, levels=[0.0], colors='c', lw=3);\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAlIAAAFkCAYAAADrFNVeAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nOzdeZwU9Zk/8M+3u+fsuZlhZpjhEBAQFNBBRPGI0VVDjOAVzLFJXF2zq4koRhETf7lWcU0iIbuaXYMaNW7UcGkiGk0yiAeIDKccww0DczD3PdNHPb8/qpvpOfqwumu6e+bzfr3q1VNVXVVPlzj9zLeeekqJCIiIiIjo87NEOwAiIiKieMVEioiIiMggJlJEREREBjGRIiIiIjKIiRQRERGRQUykiIiIiAyyRTsAX7m5uTJu3Lhoh0FERETUS1lZWZ2I5PVdHlOJ1Lhx47B169Zoh0FERETUi1Lq+EDLeWmPiIiIyCAmUkREREQGMZEiIiIiMoiJFBEREZFBTKSIiIiIDGIiRURERGQQEykiIiIig5hIERERERnERIqIiIjIICZSRERERAYxkSIiIiIyiIkUERERkUFMpIiIiIgMYiJFREREZBATKSIiIiKDmEgRERERGcREioiIiMggJlJEREREBjGRIiIiIjKIiRQRERGRQUykiIiIiAxiIkVERERkEBMpIiIiIoOYSBEREREZxESKiIiIyCAmUkREREQGMZEiIiIiMoiJFBEREZFBTKSIiIiIDGIiRURERGQQEykiIiIig5hIERERERnERIqIiIjIICZSRERERAYxkSIiIiIyiIkUERERkUFMpIiIiIgMYiJFREREZJCpiZRSKksptUoptV8ptU8pdbGZxyMiIiIaTDaT978CwDsicotSKhFAqsnHIyIiIho0piVSSqkMAJcD+A4AiIgDgMOs4xERERENNjMv7Y0HUAvgBaXUdqXUSqWUve+blFJ3KaW2KqW21tbWmhgOERERUWSZmUjZAFwA4Lcicj6AdgAP932TiDwrIrNEZFZeXp6J4RARERFFlpmJ1EkAJ0XkE8/8KuiJFREREdGQYFoiJSLVACqUUpM9i64CsNes4xERERENNrPv2vs+gFc8d+wdAXC7yccjIiIiGjSmJlIisgPALDOPQURERBQt7GxOREREZBATKSIiIiKDmEgRERERGcREioiIiMggJlJEREREBjGRIiIiIjKIiRQRERGRQUykiIiIiAxiIkVERERkEBMpIiIiIoOYSBEREREZxESKiIiIyCAmUkREREQGMZEiIiIiMoiJFBEREZFBTKSIiIiIDGIiRURERGQQEykiIiIig5hIERERERnERIqIiIjIICZSRERERAYxkSIiIiIyiIkUERERkUFMpIiIiIgMYiJFREREZBATKSIiIiKDmEgRERERGcREioiIiMggJlJEREREBjGRIiIiIjKIiRQRERGRQUykiIiIiAxiIkVERERkEBMpIiIiIoOYSBEREREZZDNz50qpYwBaAbgBuERklpnHIyIiIhpMpiZSHleKSN0gHIeIiIhoUPHSHhEREZFBZidSAuBdpVSZUuouk49FRERENKjMvrQ3V0QqlVIjAbynlNovIht93+BJsO4CgDFjxpgcDhEREVHkmDoiJSKVntfTANYCmD3Ae54VkVkiMisvL8/McIiIiIgiyrRESillV0qle38GcA2Az8w6HhEREdFgM/PSXj6AtUop73H+T0TeMfF4RERERIPKtERKRI4AmGHW/omIiIiije0PiIiIiAxiIkVERERkEBMpIiIiIoOYSBEREREZxESKiIiIyCAmUkREREQGMZEiIiIiMoiJFBEREZFBTKSIiIiIDGIiRURERGQQEykiIiIig5hIERERERnERIqIiIjIICZSRERERAYxkSIiIiIyiIkUERERkUFMpIiIiIgMYiJFREREZBATKSIiIiKDmEgRERERGcREioiIiMggJlJEREREBjGRIiIiIjKIiRQRERGRQUykiIiIiAxiIkVERERkEBMpIiIiIoOYSBEREREZxESKiIiIyCAmUkREREQGMZEiIiIiMoiJFBEREZFBTKSIiIiIDGIiRURERGQQEykiIiIig2yhvlEpNRJAsndeRE6YEhERERFRnAg6IqWUukEpdRDAUQDvAzgG4O1QD6CUsiqltiul/mI4SiIiIqIYFMqlvZ8DmAPggIicBeAqAB99jmMsArDPQGxEREREMS2URMopIvUALEopi4iUApgZys6VUsUAvgxgZRgxEhEREcWkUGqkmpRSaQA2AnhFKXUagCvE/f8awEMA0g3GR0RERBSzQhmRmg+gE8D9AN4BcBjA9cE2UkpdD+C0iJQFed9dSqmtSqmttbW1IYRDREREFBtCSaRuExG3iLhE5EUR+Q30UaZg5gK4QSl1DMCrAL6olPpD3zeJyLMiMktEZuXl5X2u4ImIiIiiKZRE6hal1De8M0qppwEEzXhEZKmIFIvIOAC3AfiHiHzTcKREREREMSaUGqmbALyplNIAfAlAg4jcY25YRERERLHPbyKllMrxmb0TwDrobQ9+ppTKEZGGUA8iIhsAbDAYIxEREVFMCjQiVQZAACif1y97JgEw3vToiIiIiGKY30TK03wTSqlkEenyXaeUSh54KyIiIqLhI5Ri849DXEZEREQ0rASqkSoAUAQgRSl1PvRLewCQASB1EGIjIiIiimmBaqSuBfAdAMUAnvJZ3grgERNjIiIiIooLgWqkXgTwolLqZhFZPYgxEREREcWFoH2kRGS1UurLAKYBSPZZ/jMzAyMiIiKKdUGLzZVS/wNgIYDvQ6+TuhXAWJPjIiIiIop5ody1d4mIfAtAo4j8FMDFAEabGxYRERFR7Aslker0vHYopUYBcAI4y7yQiIiIiOJDKM/a+4tSKgvALwBsg97VfKWpURERERHFgVASqScApHmKzv8CIFlEmk2Oi4iIiCjmBWrIeZPnx2IANymlfuOzDiKyxuzgiIiIiGJZoBGpr/j8XA3gNwDe88wLACZSRERENKwFash5u++8UuoWEVllfkhERERE8SGUPlIjPJf1fqiUKlNKrVBKjRiE2IiIiIhiWijtD14FUAvgJgC3eH5+zcygiIiIiOJBKHft5YjIz33m/0MptcCsgIiIiIjiRSgjUqVKqduUUhbP9FUAb5kdGBEREVGsCyWR+i6A/wPQ7ZleBbBYKdWqlGoxMzgiIiKiWBb00p6IpA9GIERERETxJpQRKSIiIiIaABMpIiIiIoOYSBEREREZxESKiIiIyCBDiZRS6i+RDoSIiIgo3gRMpJRSVqXULwZY9a8mxUNEREQUNwImUiLiBlCilFJ9lleZGhURERFRHAjlETHbAbyhlPoTgHbvQhFZY1pURERERHEgpGftAagH8EWfZQKAiRQRERENa6F0Nr99MAIhIiIiijdB79pTSk1SSv1dKfWZZ366UupH5odGREREFNtCaX/wOwBLATgBQER2AbjNzKCIiIiI4kEoiVSqiGzps8xlRjBERERE8SSURKpOKTUBeoE5lFK3AGD7AyIiIhr2Qrlr7x4AzwKYopQ6BeAogG+aGhURERFRHAjlrr0jAK5WStkBWESkNZQdK6WSAWwEkOQ5zioR+XE4wRIRERHFklDu2nMrpZ4A0OFNopRS20LYdzeAL4rIDAAzAVynlJoTVrREREREMSSUGqk9nve9q5TK8SxTAd4PABBdm2c2wTOJoSiJiIiIYlAoiZRLRB6C3gbhA6VUCUJMiDwPPd4B4DSA90TkkwHec5dSaqtSamttbe3niZ2IiIgoqkJJpBQAiMjrAL4K4AUA40PZuYi4RWQmgGIAs5VS5w7wnmdFZJaIzMrLyws9ciIiIqIoCyWRutP7g4jsAXApgHs/z0FEpAnABgDXfZ7tiIiIiGJZKInUeKVUOgB4Hg3zewCfBdtIKZWnlMry/JwC4GoA+42HSkRERBRbQkmkHhWRVqXUpQCuBfAigN+GsF0hgFKl1C4An0KvkfqL8VCJiIiIYksoDTndntcvA/itiLyhlPpJsI08z+Q7P4zYiIiIiGJaKCNSp5RS/wu90Hy9UiopxO2IiIiIhrRQEqKvAvgrgOs8ReM5AB40NSoiIiKiOBDKI2I6AKzxma8CH1pMRERExEt0REREREYxkSIiIiIyiIkUERERkUFMpIiIiIgMYiJFREREZBATKSIiIiKDmEgRERERGcREioiIiMggJlJEREREBjGRIiIiiiYRYO1a/TWU5ZHev6aZe/whjokUERFRNK1bB9x0E3D//T1Ji4g+f9NN+noz9790qbnHH+KCPmuPiIiITLRgAbBoEbBihT6/fLmexKxYoS9fsMDc/S9bBnR3m3f8IU5JDA3ZzZo1S7Zu3RrtMIiIiAaXdwTIm8wAehKzfDmglPn7N/v4Q4BSqkxEZvVbzkSKiIgoBogAFp+KG02LbBITbP9mHz/O+UukWCNFRETxz+yC7XBoGrBkif7qb7l3RMiXb81SuILt3+zjD2FMpIiIKP6ZXbAdjqVLgSefBEpKepIpTdPnn3xSX+9bk6RpPTVNkUhmfC/bDbR/TTP3+EOdiMTMVFJSIkRERJ+bpoksWiQC6K8DzUeL2y0yc6Yey8yZ/edXreofp2/8a9aEd/w1awLv/6GHzD3+EAFgqwyQu7BGioiIhoZYLpj2jkDt2NGzbOZMoKxMj23dOv3uuL41SwMt/7z87ce7fP584I03zDv+EMEaKSIiGrq8X/pPPdV7+VNP6csDNZ1cs0afzGxYabHoSZOvsrLexd1GBasPA4Abb+yfDCk18PLhJBK1dQMNU0Vr4qU9IiIyxHv5ynvJzDt554NdvjL70pfv5Tzf2Nzu4Jfegu0/2tvHs8/x2eHn0l7UkyffiYkUEREZEqwOyeXyX0N177365K++yu0Or/4qnNhC2X+49WGxXF9mts/x2ZlIERHR0BVsRGrNmv4jUL5floHWiQRfH4h3RMubRIn0TqYeeii8/YcbXyS2j2chfnZ/iRSLzYmIKP6JT+G01dqz3O3uXUgtAZpOBloXynp/NE1vcbBsWf/tfZcb3X+48UVq+3gWwmdnsTkREQ1dSunJ0uLFvZcvXtw7ifLXdDLQOiC8hpVKAXPmDFzs7V0eLLZgBdHhxBfu54umUM5NKPsI79xF/5Ked+KlPSIiMiRYrUugOieza6SCFTSvXh14/6tXh7f9UK6RCrdQnjVSREREEn7TSTPv2gv2ZR1uohRs+6F81164SSDv2iMiIhL9y89bUD7Qcm+bgYHWr16tT0a2HWi5v/gCFboH23+42weLLdzPF03hFMp/js/uL5FijRQREcU/f80lvcstFv/rb7pJn4w2rJQgdTqaFrhZaN/t/H2+5ct7L4tUx/Zg5y6aBefBzq1IeOcmAp+diRQREVEgwR6IvHRpaOtLSnrvt6QktO29yZa/guhYfmBzuEL5bIHOzWAYaJgqWhMv7RERUcwJp5B90SK94WY4DTmD7T/cYvhYFu65j+BnB2ukiIiIDAqnYWe4zUJDKYgeyg01wz03EeIvkWJDTiIiolCIGGvYKRJes1Dv9t73+R7Pd3mw+OJZuOcmAga9IadSarRSqlQptU8ptUcptcisYxERUZyTEAq2zVwfbFBBgtThBFofbrPQUAqig8UXTcH+24Z77qNtoGGqSEwACgFc4Pk5HcABAFMDbcNLe0REw1S4faDCXR/oElC4dTpm1zjFekPNcC6/hduDaxAu7ZmWSPU7EPAGgH8K9B4mUkREw1QsJyuxnOSFEl+0G2qGk+iF2xV+qBSbAxgH4ASAjEDvYyJFRDSMhVPQHYn1geIy2uwzEuuHQkNNs859sGalEeQvkTK92FwplQbgfQCPiciaAdbfBeAuABgzZkzJ8ePHTY2HiIhimBgs2L7hBuCRR4DHHwdstp71Lpe+fNkyfb8D7R8YtILlmOTvc0b68/v7bxsJZu7bY9CLzT0HTQCwGsArAyVRACAiz4rILBGZlZeXZ2Y4REQUyyRAUbG3MaO/ppa33AI8+SRQUNB7fUGBvnzpUv/7X7t26Da0DMVgNPQM9N82lvcd2vFNu5ynALwE4NehbsNLe0REw1SwOppgTS0dDpHcXH0+N1d/v++80+l///feq0+xWqxtNrOL1c3c/yAW2mOwa6QAXApAAOwCsMMzzQu0DRMpIqJhKtSCbn9NLb3rvcmTd/LOByvo9i1aNrHOJmaZWWdkZjE8G3L2xoacRETDlL96HO/y+fP1Wih/NVLe9Tfc0L9G6s03e9YHqgMChm5Dy1CISXVGwf7bhlODZea++4hKjRQREREA/Ut5yRK0djZj5baVWPLeEqzcthKtnc3AkiV6QrR5c/+6FhF9ORC8qaWmDVxD5U0IAjW1BIzX2Xg+25nC9b7L3e7wG1Kavb2EUWcUbP9A8IaiRoXSrNRsAw1TRWvipT0ioiHqoYfkgzGQ9B9axP6YXfATiP0xu6T/0CIfjIHI7Nk9l+rcbn0b3zqohx4KXAuzalXPJakZM/RtZ8zoWbZqlf/Ywq2z8b3sOFDsCxaEd/kp3MtXZvdiivU+VhGCaDfkDGViIkVENDS1dDRJ+g8tgp+g35T+Q4u0tjcGLib3Jkr+vqznz+9Jmu69V1/nLSAHRB580H9w4SYCfWPtO+9yRbdzudndwWO9s3qEMJEiIqKo+V3Z786MRPWd7I/ZZWXZyt4JiG8xudsdvDGjy6UnS77JkzepevDBnpGigUSioWWg2L37CqeY28ztI/H5B6kpZjT5S6RYbE5ERKYX7S55bwme/PhJv+sfnvswll29TK8r6ltM7lMA3drditf2vIaD9Qdx9oizsXDaQqQnpfeON1oF40FiDzu2aG8f7f1Hmb9ic9tAbyYiiieaQ4OrxQV3ixvuVjdcrS64W91wt3mmdje0dg3uDje0Ds9rpwatq8/UrUEcAs3h8+oUiEt6Xt09EzRANP0V/v4mVfqkLAqweF6tgLIpKKvSXxP0V0uCBSpRwZLo85qkYEm2wJJk0V+TLbCkWGBNscKSYoEl1QJrqhVWuxUWuwVWuxXWNH3emu75Od0KW7oNyhrgS83blHHRImD58p5u4vffD6xYAaxZ01OUbcDZI86GPcGOdmd7v3X2BDsm5kz0XyxeVgZYLPjwxIeY98o8aKKh3dkOe4Idi/+6GOu/sR6XjrnUf8G09/OYKUjsYccW7e2jvf8YxkSKiGKCiMDd4oazztl7qnfC2eCEq8EFV6MLzkYnXI0uuJpccDW74G52Q+vSgh/Aw5JiOTNZU6w9yYl3yuyTzCRYeiU7yupJhKyen32SJAB64gT0JFYaPHUU6Em+3D5JmW+S5hBoTj1507o1SLdA69TganLpiZ5v8tepT5+HJdUCW6YN1gwrbJk22DJssGV5pszzYLv4adhW/BW28l8i4b5/ge33/4WEV19Hwr89AOv8+Qjn63DhObdi8ZrvAgkDxNXRiYVTbtYTjx07gJkz9QTEO19SgtaPN2DeK/PQ6mg9s503KZv3yjxULj6FtCWP6kmfNxn0JoGAuV/o3iTKT+zYuhV44AHjsfkmtNHYPhiz9x/jeGmPiEzl7nLDUelAd2U3HFUOOCodcFT7TKcdcJ52wnHaAXH4+X1kAWzZNiTkJMCW7fPln2XTEwJvcpChv3pHYc6MzHheLckWPekZIkQEWpemj7h1ar1G31ytLn2+tWdyteqJp6ulJwl1NXuS0kZXwIRU2RRsOTYk5CboU14CEvMSkTAyAYkjfV7z9Vdbtg3K98tzyRJ8+OqTmPfPFmipKWdGlCwdnVj/soZLC2YDW7b0JCIWS68EZeXSa3Ff2od+R7RW5H8bd9z5jGkjagEtWaI/hsZP7FiwQB/xMxqb9xE20do+GLP3HyP8XdpjIkVEhmkuDY5TDnQd70LXiS50n+jWXyu60X1Sn1wNrn7bKZtCYkHPl25ivv5FnJDn+TIeof+cMCIBthH6yMlQSoBildatwVnvgKtoCpxIhwsZcD6/Cq4Glz4yWO+Es9ZntLBWXzbQZU2VoP83TixIRGKh/pq0ZyPk61dhs/MTHE06ilETR+HmS25E+k8fBx57DPjhD3seLnwmKA1YuhRLrhY8+fEv/Mb+8NwlWNZ6UXQePOyJ0V/sePxxvSmo0djCrV8zuf7N9P3HCCZSRGSIq8WFzkOd+nS4E11HutB5RH/tqugC3L3fbxthQ/LoZCSNTkJScRKSipKQWJSIpMIkJI7Sv1QTchKYGMUiEbTefw9e++C3OJgDnN0ALLzs35G+/Gm/X4TiFjjrnXDU6COLLSdbsGXXFrScakFeex6Ku4rhrnHDUeWAs87Zb3uVqJBU5Pm34vk3kzwmGUljel5tWTY8t/053PfOff5HpK5bgTsuuCN4MXo8GiaJSqxjIkVEfolb0HmkEx37O/SpvAOd5Z3oONAB5+neX34JIxOQMj4FyeOTkTzOM43Vp6TRSbCmWv0chWKaCD78wVcxL2kVtEQb2pULdrHB4nBhffctuPSXrwf9sh6oGNyiLGeKwTWHBke15zJvpUMftTzlmSq6z4xkirP395I13YqEMQnY6N6IkxknUZ1VjeqsalRmV6IquwrWDCsqH6jEjuodAY8ft4bJpbNYx0SKiCAi6DrWhfbd7Wj/zDPtaUdHeQeku+d3QcLIBKROTkXK2SlInZSKlIkpSJmYguQJybCl8R6Voah11f+haNs30JrUf116N1B5wStIu+Xr/rfvbkXRU0W9isHPbJ+YjsoHKpGWmBY0DtEEjtMOdFd0o+t4F7qP669dx7tQf7AeHUc6kNqd2nujbCB1Yire7n4bx7OOozKnEqdyTuFkzkk02ZuQnhT68WNSoGJu3+SKTMX2B0TDjObU0L6nHW3b2tC2vQ1tO/XJ3dJzLS5pbBLs0+zIuSYHqVNTkXpOKlInpyIhe4Bbq2hIe+2sdmh7kwDp7rdOS07Ca+M7cEeg7fe8Bk0GLlbXRMNrn72GOy4ItAedsigkFSQhqSAJGRdm9Fvf2t2KVR+vQvW+apzVehZK3CXQTmg4vOMwJldMxqW7L4VVekZF25LaUJlbidIPSnHenPOQOjkVqVP0PxLiZvRUKT1ZAvTkyXs3HJOomMBEimgIEE3QUd6Blk9a0PppK1q3tqJtZ9uZUSZrmhX26XbkfzMfadPTYJ9uh32aHbYM/gqIN2bVAB1sOIT2AZIoAGiXbhxqOBzw+AfrDw5YvwTobQoONRwKKY7Klkos/ftS7K/bjym5U7DsqmUYlTHqTD1Q+oIFuP3K24ErPRt4lj9/8yY8+fEvYHPZUNBUgKKGIhQ3FKO4vhhF9UUYXTYax9451lMYr4DksclInaL/AWGfZkfq1FTYp9phy4zB/y+8yZQ3iQKYRMWIGPzXQkTBuNpcaP2kFc0fNqP542a0fNICd7M+0mRNtyK9JB3F3y9GWkka0i9IR8rEFBZ3DwFBG1KG4ewRZ8MCCzT0H1WywIKJORMDHv/sEWcj2ZaMLldXv+2Tbcl6w80gnvn0Gdyz/p4z81sqt+ClXS/h6XlP4+6ThQHrhM5eei3sANqTXDiZexInc0/iE3wCALB3Aysm3I3vfP036DzoqQXcp9cCduzrQNOGpl6tH5KKk2A/194zTbfDPtUOS5Klb8iDZxg3vIx1TKSI4oCr2YWmD5rQtKEJze83o3V7q363nALs59oxcuFIZMzJQMZFGUidksqkaQhq7W4N3JAyzBqg0emjB0yiAECDhvzU/IDHL/vXsgGTKADocnXhy5O+HPD4lS2VvZIoX/esvwc3La5EwaJFvZs8+tQJLXz0p1j8n3kA+t8ZaElMwMJvPgFrkhVp09OQNr33eRK3p3Zwr6dmcE8H2j9rR2NpY0/toBVInZyqbz+zZ0rMTwz4uSJimDe8jHVMpIhikObQ0LKpBQ3vNqDxb41o3doKaPqt4hkXZWDMw2OQeWkmMi/OjM3LEBRxkapB8ueba78ZcP3X1n4N/m5O0kTDf3z4H0i2JqPLPcCIlDUZbx14K2B8S/++NODxH/77Uvx++Qv6zAB1QulKYf3tf8e8F66C5nCiPUkfibIkJmD97X9HWoDLn8qqkDIhBSkTUpD7ldyez+XS0HmwE+2729G2qw3tO9vR/HEzTr96+sx7EgsTkXa+PvKbVpKG9JJ0JBUn9W5GGq516/oXlvvWTF1xBe/aiyL+BiaKEV0VXWhY34D69fVo/HsjtHYNsAIZF2Vg7CNjkfXFLGTMyYA1JU4KZIcxM+qYzK5BaupqCrhdu6Md4ueBgu3OdpTXlQ+YRAFAl7vrTHz+zs3+uv0Bj19eVx60TujSsZehcmk9Xrs4A4dygIkNwMJN9QGTqEAsNgvs59hhP8eOkV8deWa5s9Gp37yxow1t29rQuq0VDe80wDuglzAyAemz0pF+YToyZmcgfVYaEj9ab7wP1IIFeosD3/d5z8UVV+jLKWqYSBFFiYigbUcb6tbVof7NerTtaAMAJI9LRsG3CpBzbQ6yrsxiQXicMauOKaSH/gYRqAYpKzkLdZ11fre1J9rhcrv8jjhNzp2M7VXb4dAc/dYnWhKD1lhNyZ2CLZVb/B5/cu7k4HVCIkhb8iju2O6zfsmjEb/0lZCdgOwvZCP7C9lnlrk73Gjb1Ya2sja0btVv+PBNrpLRiYxJf0DG3V9AxsWZSJthh2XJA6H1gVJq4PX+ltOgYh8pokEkImgta0Xt67WoXVWLrqNdgAIy52ZixA0jMOLLI5B6TmpkLwvQoIlULyUz9l3ZUomi5UV+16/76joseN3/yMabX30TN7x+g9/1H97+IS59wX+iuOOuHbjs95f5jb/srjJM+u9JfrevWlyJgkf/038vpaeeAhYvjqleS642F9rK2vS7aX/3AVoOJaAb+siWsrqR4d6DjJJkZD56IzLmZiIxdxDqrcgw9pEiiqKOgx2oebkGp/94Gp2HOqFsCtlXZ2PsD8dixFdGIHEkf4EOBWbWMaUnpWP9N9b77dwdLEELVoO0tnwtrhx3JUqPlfZbd+W4K1HTWRPwrrwH33sw4P7/ff2/Bzw3G49vxNPznh6w4PzpeU+j4G+bAxYCoyEAACAASURBVNcJJSXFXB2RLc2GrCuykHVFFvDg14H770fXilfQgqlocU9DS8HVOLlrBCoW7AEApJ6TiszLMpF5WSayrshC8ujkQY2XjGEiRWQSV5sLta/VouqFKrR81AIoIOvKLIx5eAxyb8xFQg6bXg41kapj8ufSMZei8oFKvPbZazjUcAgTcyZi4bkLQxrlCqUGadOdm7C5YjNuePUGNHY2IjslG2/e9ibmjJ6DJe8tCXhX3rHGYwH3f6zpWNBzs+zqZbjpnJvw8N8eRnldOSbnTsYTVz+BgrQCYJYErhOaPx+YMyd264g8sSSvWIFkbMRIbAQqn4a7S0PrVk8rkw/0QvaqZ6sAAMnjk5H1hSxkXZmF7CuzkVQ0QNt5ijomUkQR1ra7DZXPVKLmDzVwt7mRek4qxj8xHvnfzOcvwhhhVlPLUOqYDtQdwHfWfQdHm47irKyz8PsFv8ek3J5LWn4bUnq0dLVg4/GN2F+3H5WtlfjSxC/1SqT8bR9SDRKAaSOn4fGrHj9zbqaNnBbSZxuXPQ5V7VV+9z8uaxxauluC1ngVpBXg9wt+338HodQJxXIdkZ/6Luvy5ci6LAtZl2UBS/VWDG272860OqlbW4fq56sBACmTU5B9VTayr85G1pVZSMjiH2OxgDVSRBEgmqD+L/U4+euTaCptgiXZgryFeRj13VHImJPBmqcYEuzBuuEIVsf0rRnfwtOfPt1v3f1z7sdT1z7Vrxjc6+l5T+PuC+8Oa/2CyQsC1khVPVCFQw2H/J6bGfkzkP/LfHS6Ovttm2JLwc7v7sSkp/3XOB383kFc8OwFptSPxbwwnpUnmqBtZxuaSpvQ+PdGNL3fpN/RawHSL0xHzrU5yLkuBxmzM6Cs/D1jJj60mMgEmlNDzR9qcOI/T6CzvBNJY5JQdE8RCu8oRMII/rUYa8wsBvfyl6j975f/F19f6/+hvx/d/hHmvjDX7/rtd23H+c+eb3j9we8fxLnPnItud//HwCRZk3B00VFM/u/Jfs9N+ffKMfG/JqLD2dFvfWpCKmp+UIOXdr4UMNEzM4mNaWvXBuzKHvSuPR+aQ0PLJy1ofK8RDe82oPVTvcecLduG7GuyMWLeCOR8KQeJeay7jDQmUkQRpLk01LxYg2M/P4bu491Im5mG0Q+NRt6tebDYovgYCQpo5baVuO+d+/xeXlpx3Yqwmlp6tTna+tUxXfPSNdh0apPfbXJTcgO2HxifPR5HGo/4X581Hkea/K+/uPhi7KrZ5fez3zz1Zqzeu9r/+nNuxup9/td7z111W/XANU4eA52bITsS5eWvX1SofaQCcDY49aTqnQY0vNMAR7UDUHr/uRHXj8CIG0bAfq6do+IRwLv2iCJARFC3rg5HHj6CzgOdSL8wHZOenoSceTn8RRUHzC4G9xIRCASaaBAIRARHm44G3CZYQ8yatprA69sDrw9W7F1eVx54fX3g9d5zZ0+w49IxlyLfnn+mrspXWmJaRJLVuGJiH6iEnASMXDgSIxeO1C8Dbm9D/Vv1qP9zPY7+6CiO/ugoks9KRu6CXOTemIvMSzJ5CTDCmEgRhahtdxsO3XsITRuakHpOKs5ddy5G3DCCCVQciURTy2D8NZ0ckzkG1e3VfrcL1hAzPy0/4IhUvj0/4IjUuKxxaOxq9Nu+YHLuZHx2+jO/52byiMDrgzXcHNKX7mKEsiikl6QjvSQd4/7fOHRXdqP+L/WoW1eHU0+fwsnlJ5GQn4C8G/OQd0seMq/I5Ah6BPAMEgXh7nTj8MOHsfX8rWjb1Yaznzkbs3bNQu78XCZRcWbhtIWwqIF/7VmUBQvPXRjW/n0fLOxNONqd7Wh1tOJoY+ARqT/e/MeA61+a/1LA9S/f+HLA9c/MeyZg+4JHL3s04Ll54uonAq6fd/Y8v5993ivz0OZoCxgfRV7SqCSMumsUpq+fjrl1czH11anIuiwL1S9VY+fVO7GpaBMO3H0ATRubIFrslPnEGyZSRAG0bGnB1vO3ouI/K1Dw7QJcdOAiFP17Ef+Ki1PeppbpielnLjnZE+xIT0wPqallMIEacrrFDYufX7k2iw3Hm4/j6Xn97+gD9GLtffX7kGgduIA40ZqIfXX7Am6/tWorkq0DN3hMtibj/ePvBzw3hemFAde/dfCtoM1IKXps6TaMXDgS0/40DXNr52LaqmnIuiIL1b+vxo4rdmDzuM04vOQw2nYz4f28eGmPaAAigopfVuDoI0eRWJiI6e9NR87VOdEOiyIgnKaWwQSqwRrobjkvl+YK2pByyXtL4HD3f44dADjcjpC2D/ZQ4TsuuCPguQl07v5c/udBqT+j8FlTrci7OQ95N+fB1eZC/Zv1qHmlBiefOomKJyuQNjMN+d/OR/438nn3XwiYSBH14W53Y9+396FudR1yb87F5N9NRkI2Wxn4Mquh5WAJt+DZ3+cPVIOVZE2CQAZMhkJpSBlqfVe42wc7N/7WD0b9GUWeLc2G/K/nI//r+XDUOnD61dOoeakGh+8/jCMPHsGIG0ag8M5C5FyTwyJ1P9j+gMiH47QDu+btQtv2Nkx4cgKKFxezDqqPYdsLyCPQ55+RPwMFvyoYsNdSii0FVmVFm7P/pZNQeliF2wPL7B5ag9GjiwZP+552VD1fhZqXa+CsdSJpTBIK/7UQhXcWIqlgeD6hwV/7AxZ6EHl0V3Vj++Xb0bG3A+e+cS5GPzCaSVQfgYqph0NBcSifP9Afp6sXrjZcnxVufZfZ9WFm758Gl32aHRN/NREXn7wYU1+fitRJqTj26DFsHr0Ze27bg+aPmwP+Wx9OeGmPCHpTu51X70T3yW5M/+t0/blX1E+gYmpvQfFQ7hEU7PM//PeHA97ZVtFcEVZ9Vrj1XWbWhw3G/mnwWRItGHnrSIy8dSQ6DnSg8n8qUfV8FWpfq0X6rHQULy5G3i15sCQM33EZJlI07GlODXtu3oPOQ52Y/g6TqEAGq6FlsAf3mr29vxqoYJ8/WFPLQw2HBmzWGcqxvcKt7zK7IeawbLg5TKROSsXEpyZi3M/GoeblGpxccRL7vr4PR5YcQfHiYhTeWQhb2vBLK0z7xEqp5wFcD+C0iJxr1nGIwnX00aNo2tCEKS9PQfaV2dEOJ6YNRkFx3wfvbqncgpd2vXTmeW1mbx+oqWSwzx+sqaWIoOipIr8NK9nQkuKBLc2Gon8vwqjvjkL9+npU/KICh+8/jOM/P47i+4pRfG8xbJnDJ6EyrdhcKXU5gDYAL4WaSLHYnAZbyyct2HbxNhTeUYjJv5sc7XBintkFxZUtlShaXuR3fdUDVb2e2xbp7YN9vvLvlQd9sK+/9WkJaYDCgHVkoeybxdoUy5o3NePE4ydQ/5d62LJsKF5cjOJFxbBlDJ2EatCLzUVkI4AGs/ZPFC4RwcHvH0RiYSIm/GpCtMOJC2YXFC/9+9KA6x/+28Ombh+sBmr9wfWGm1bePftuv8W53voqNrSkeJV5cSbO+/N5KNlWgswrMnHs/x3DJxM+QcXyCmjdA/+7Hiqinioqpe4CcBcAjBkzJsrR0HDS8HYDWj9txeTnJg+pv5rMZmZB8f66/QHXl9eVm7p9KDVgRptW/vz9n4ddX0UU69LPT8d5685Dy6ctOPrDozi8+DBO/eYUxj8xHnlfzRuSd0JH/dtDRJ4F8CygX9qLcjg0jFT+thKJhYnI/+f8aIcSd8wqKJ6SOwVbKrf4XT85N/Dl13C3N7NpZbj1VWxoSfEk48IMzHh3Bhr+1oDDPziMvbftReZ/Z2Lif01E+sz4ad4biuF7vyINa64WFxr+2oD8b+QP69t2Y82yq5YFXP/E1U+Yur2ZDzUOtu8nrgr8UOBwH6hMFA05V+dgVtksTPrdJHSUd6CspAwHFx2Eq9UV7dAiht8gNCy1bGqBOAXZ1/IuvVgyKmNUwAfvBioUj8T2ZtaABdt3sIcCs9Cc4pWyKoy6cxRml8/GqO+Owqn/OoVPp36K+rfrox1aRJh5194fAXwBQC6AGgA/FpHnAm3Du/ZosFQsr8DhxYdxSe0lSMzlQzljTXVb9YAP3h2s7dscbaY1lQy2bzOPTRQLmjc1o/zOcnTs7UDhvxZiwlMT4qL/lL+79visPRqWjiw9gopfVuByx+VDsviRiCiWad0ajv74KCqerEDKxBRMfW0q0s+P7dopPmuPyIeIABYwiSIiigJLkgUTnpiAmaUz4e5wY9vF21C5sjLaYRnCRIqGpYScBIhD4GoZOgWPRETxJuuKLMzaMQtZl2fhwL8ewIHvHYDmiq++U7F/UZIipsvtRpPLhVa3G22eqd3tRoemocszdWsaHCJwicDtmbwXfxUAi1KwArAphUSLBUkWC5KUQorVilSLBalWK+wWC9JtNqRbrci02ZBqscTcyE/KpBQAQPvedmTOyYxyNEREw1dibiKmvz0dRx7WSy66jnZh2uvTYLVbox1aSJhIxTERQbPLhZPd3TjlcKCquxvVDseZqcbpRK3DgXqXC41OJ7qjVA9nUwo5NhtGJCQgNyEBIxMSUJCYeGYqTErCqMREFCclITchYVCSrow5GQCAptImJlJERFGmrAoTfjEBKRNTcODuA9h57U5MXz89Lpolx36Ew5xL03CsqwsHOztxuLMTR7q6zrwe6+pCm9vdb5t0qxX5iYnIT0jApNRUjEhIQI7NhiybDZk2GzKsVqRZrUj3jBalWCxIsVqR7BldSrBYkKAUrJ7RJ6UUFABNBBoAt2fEyiECh6ah0zOa1eEZ3Wp3u9HqdqPF5UKL241GlwsNTicaXC7UOhzY29GBfzQ1odHV/7JassWCsUlJOCslBeOTkzEhJQUTUlJwtuc1yRKZq9FJBUlIn52O06+dxpiHx8TciBkR0XA06rujYBthw76v7cOu63Zh+rvTY/6OvtiObhgRERzp6sKutjZ81t6OvR0d2NPejvKODjh8RpJSLRac5UkwvpiVhTHJyShOSkKRZ2SnIDERdmt8DId2axpqHA5Udnej0uHAye5unPAkiEe7urCpuRnNPomiFcCElBRMtdsxLTUV0+x2zEhLw6SUFNgMJFgF3ynAwbsPovmjZmRdmhXBT0ZEREaNvGUklEVhz617sOfmPTjvL+fFdONktj+IAhHBsa4ubGltxactLdjW1oZtra29koZxycmYlpqKqXY7pqSmYnJqKiYkJyM/MXHYjJ6ICBpdLhzq7MShzk7s6+jAXk+SebCjA96zlWKxYEZaGi5IS8Os9HRclJGBKampsAQ5T+52NzaP2wz7dDtm/G3GsDmvRETxoOq5KpTfWY5R94zCpP+eFO1w/LY/4IjUIHCLYEdbG95vasJHzc34uKUF1Q4HACBJKcxIS8NtI0figvR0zExLwzS7PW5GlcyklEJOQgJmJyRgdkZGr3Xdmob9HR3Y2daGHW1tKGttxUs1NXimUr99Nstmw5yMDMzNyMBlWVmYk5HR77Kg1W7F2EfH4tCiQ6hbU4e8m/MG7bMREVFghXcUon1fO07+6iQyL81E/m2x+VxUjkiZ5GBHB/7a0ID3GhuxsbkZTZ56oLOSk3FJRgYuyczEnIwMnGe3IyFCdT9xQwRYtw5YsADwHQXytzxEmggOdHRgc0sLNrW04KPmZuzp6ACgj1rNzczEF7OycF1ODmampUEpBc2pYdvsbeiu7MaFuy9E4kh2OSciihWaS8OOy3egY18HLtx7IZIKk6IWCzubm8ypadjY3Iw36urwVn09jnR1AQDGJyfji9nZ+EJWFq7MysKopOj9I4gZa9cCN90ELFoELF+uJ00iwP33AytWAGvWADfeGJFDNTqd2NjcjH80NqK0qQm729sBAAWJibg2Oxs35OZiblUi9s/egazLsnDe2+fBYhtmiS0RUQzrONCBT6d/irxb8jD1D1OjFgcTKRM4NA3vNTbitdOn8ef6ejS5XEixWHBVdja+lJODa3NyMCElJdphxh7fpMmbTPWdN6leqcbhwDsNDXi7vh7vNjai0fPf7PLWVJT8ug03TyvA+csns16KiCiGHHnkCE4sO4FZO2chbXp0nj3JRCpCRASbW1rwYnU1/lRbiwaXC1k2G+aPGIEFubm4JicHqaxvCs43mfIyOYnqy+UZRVxbV4e1tbU45XAgqQu4psWOu68aj3/KyYGVCRURUdQ5G53YPGYzcm/MxTkvnROVGJhIhanR6cSL1dV4tqoK+zo6kGqxYEFuLr42ciSuyclB4nCrc4oEEcD3vGnaoCVRfWki+KipGb99tRxvjepESyYwKjER/1JYiLsKCzE6OTkqcRERke7APQdQ/Xw1Lqm5JCqNOvnQYoP2tbfju+XlKNq0CfcfPowMqxUrJ09G9SWX4JWpU3F9bi6TKCO8I1K+7r9fXy6i11H1TfL9LY8Ai1K4LDsLr9w1GxvXjsRP/x9wdoUFjx0/jnGbN+OWzz7Dx83NET8uERGFZuRtI6F1aWh8rzHaofTCDMCPT1tasGD3bkz99FO8WF2Nb+TnY3tJCTaXlOCOwkKk29g5wrC+NVKapr+uWKEv9xajexMr321uukm/s88kyqow/flz8LXzi/CT27rw9gvZeKCgGP9oasLc7dsxd9s2vF1fj1gaySUiGg4y5mTAkmJB80ex9Ucts4E+drW14ZEjR/BWQwOybTb8eOxY3FNUhLxE3hYfMevW9S8sX75cX7diBXD55T2JFdC/GH3BAlPDUxaFib+eiOSzknH4gcO4dbsDD/5pBl61N+OXFRWYt3s3LkpPx2Pjx+Oq7GxTYyEiIp0lwYLUyano2N8R7VB6YY2UR43DgUeOHMEL1dXItNnw4OjR+H5REUeezBBKHykg6sXoANDwbgP2fm0vxCmY9L+TkL0wDy9VV+Nnx4+jorsb83Jy8KsJEzDFbh+0mIiIhqud1+6Eq8mFkk9KBv3YrJHyQxPBb0+dwuRPPsHLNTW4v7gYRy66CI+MHTu8k6hw6pTcbr0PVN8HKvtbPtCx160Dnnqq9/KnntKXB0v+I1hjlXNNDmZtnwX7eXbs+/o+HP52Ob6dmoeDF12EX4wfjw+bmzF961b86MgRdAX7XEREFL4Yu5l6WCdSx7u6cNXOnbj74EHMSk/H7gsvxK8mTkR2QkK0Q4u+deuM1yndcou+vqCgJ2lyu/X5deuAuXMD73vpUv21pM9fHCUlodVIhRP7AJLHJGPm+zMx9sdjUfPHGnw67VO0vtWAH4wZg4MXXYTbRo7EYydO4IKyMpS1tn6ufRMRUegcNQ4k5MbYd7SIxMxUUlIig2Vdba1kffCBpG/cKCsrK0XTtEE7dlzQNJFFi/R76BYtGnjeH5dLJDdXf29ubv95pzPwvl0ukZkz9fmZM0Xc7v7zZsUeRMvWFtly7hYpRal8dstn0lnRKSIib9fVSdFHH0nChg3y64oK/nsiIoowd5dbNiRtkEM/OBSV4wPYKgPkLlFPnnynwUikNE2Tnx49KigtlVlbt8qhjg7Tjxm3fBMQ7xRqIuKbPHknb1IVbN9r1vQkTb7rvfNr1pgbexDubrcc+49j8n7y+/K+/X05/sRxcXe5pd7hkBt27RKUlso39uyRrmAJHxERhazhbw1SilKpfaM2Ksf3l0gNq2Jztwi+W16O56qr8e38fPzPpElIZhfygWmafont8ccB31oxlwt4+GHg4EFg9WrA9/y53fplvT/9Cfjzn4GvfAXwvUzqdOrLvUXm4qchZ6BjP/IIsGxZ7+388bf/COk82olD9x1C/Zv1SB6fjPHLxiP3llwsq6jAj44exReysvDmuecO71o7IqII2fftfahbW4dLqi+BNXXwv7uHfbG5JoI79u/Hc9XVeHTsWLwwZQqTqECWLgWefFKva/JVUAD88pfAG28Er4FKT++9bXp6T42St2bJl7em6Y039GPP6vPvddYsffkbbwSPP9D+IyTlrBSc98Z5mP7udFhTrdi7cC+2X7wddx/KwMtTpuCDpibM270bHSxCJyIKS9eJLpz+42nkfys/KklUIMMmkVp65AherKnBT8eNw8/OOosPpQ3m8ceB3Fygrk5/dbl65nNyen72JlMFBT3v3bgRSE4Gurr0V6ez9/z11wduyHnDDcDMmcCOHfqr2917fv78wLF7kyh/+4/wKGzOP+Vg1o5ZmPz8ZDiqHNh59U6c+7VqrFTj8HFzMxbu3Qt3DI38EhHFmyOPHAEswJiHxkQ7lP4Gut4XrcmsGqk/1dQISkvl38rLWQQcKm+d0kB1ToDIn/7kvwZqwQJ9Pjm593rv/OzZ/WuWfGuaHnoovBopb+z+9h9KjZVBrk6XVPy6Qj4q+EhKUSpLfrBJUFoqPz5yxLRjEhENZbV/rpVSlMqRH0X39yiGa43UaYcDU7ZswdkpKfjg/PP5XLxQiaeX0w039K9TevNNvc5J0/qvs1p710r1rZG69daeGip/DTnnz9cv382f378G6403+m/nL/ZADT9NHpF0d7pR9WwVTvziBH7yLQf+fjXwduNZuHr+aFhs/DdIRBSKzmOdKJtVhqTiJJR8UgJLUvR+fw7bGqlHjx5Fm9uN30+ZMrSSKAmz6aSmAUuW6K8DLXc69aLuCy7ovf6CC4Cf/QxITQXy83uvy88HUlKA9nZg82bgvvt6r7/vPn15dzfw0EN64uXL5epZPgg1TmayplhRvKgYcw7PwW/OnojsVmBx1VFsnrAZFb+qgLPJGe0QiYhimrPBid1f3g1xCab9aVpUk6iABhqmitYU6Ut7Jzo7xbZhg3zvwIGI7jcmhHv5yvfymfc2fd9+Tfn5PZfUpk/X102f3vtSGyAyYoR+OW/EiP7rAJF77tHjuueenmUWi/5qtYo4HPqxHQ59vu+x771X3/7ee3uWrV5t7rkxwTMVJwWlpfK/39J7UL2f+r6U/1u5tO5qHfRYiIhinaPBIVsv3CobEjdIwz8aoh2OiPi/tBej6V1kvFhdDZcIFhcXRzuUyFuwoH8B9ed5sO+yZT0F3CUl+khUSUlPQfc3vtHz3vJyfX15ef/91Nfro1f19T3LfEexnnlGX//MMz3LXn655xJgSoq+PiVFn7dagd/8xtg58Qr33Jjg9sIC5NhsKF1iR8m2Eoz86khUvVCFrdO3Yvtl21H9h2q4O3l3HxFRd2U3dnxhB9p2tmHaqmnIvjLGHw4/UHYVrSnSI1JzyspkTllZRPcZU8JtOuk7AuVb0O1269MPfiCSlNR7fVKSyP33i1x//cAjUF/5it65/LXXRJTqvU4pfbmm9R6B8k7eESpN00edfEehvKNTq1eH9vlMbMhp1J3790vGxo3i9IwAOuoccvwXx2XzxM1SilL5IOsDKb+nXFrKWqIWIxFRNDVvaZaPij6SjWkbpf7d+miH0wuGW7G5WwT2jRvxvaIi/HLixIjsMyaJn6aTEmLBtab1L+j23Z/L1b9g3GrV93HddXqtlFdHB/DOO3p7g0svBUpLAbu9Z317O3DllcBHH+lF6k4nkJjYs97h6H0sf58t3HMTJS9VV+Pb+/dj34UXYorPeRFN0LShCVW/q0Lt2lpIt8A+w46CbxVg5NdHIqkgKWoxExENBhFB5f9U4tD9h5BYkIjz3jgPaTPSoh1WL8Ou2LzO6US3CMYlJ0c7FPN4L1n58l7KCuXBvd7Leb68l/kAPYkaqKnmqlX6PnyTKECfv+kmYOpUYMuW3kkUoM9v2aI37PRezvPlvcwX7LOFItztTeD9t1jR3d1rubIoZH8xG1P/OBWXVF2Cs58+G5ZECw4/cBibijZh57U7Uf1SNVwtroF2S0QU17qru/HZgs9w8O6DyPpCFkq2lsRcEhXQQMNU0ZoieWmvorNTL+49dSpi+4wpwR7M63aH92Dg7u6evk/JyfrlOu+8zdb7kllHR+/5urre8+3tveebmnou63kv5/nOd3eH99BhEx9aHI5NTU2C0lJ5q64upPe37WuTw48clk3jNkkpSmVD0gbZfeNuqXmtRlxtLpOjJSIyl+bWpPL5Svkg+wPZkLRBTjx1QjR37PZ6xHB7aHGbyyUoLZXHjh2L2D5jSih3pgWqEwp2115BQe8kSqR3MhXOFOyuPe+xjd51F4N37YmIvFlbKygtlU1NTZ9rO03TpOmjJjnw/QNnGn2+n/K+7L5pt1S/Ui3OJqdJERMRmaNla4uUzS2TUpTKtku3Sdu+tmiHFNSwS6RERMZ8/LHc+tlnEd1nzNC0nmQp0HJN653EeJe73Xoy5U2ivLzLu7v1DuTOPl/STqfI+eeLpKb2H4nq6NCXNzfryVDfkaj2dn15W5vIxIk9SZSXw6Ev7+4O7bOFe24G2c+PHhWUlkpj38/9OWguTRpKG6T8nnL5qFBPqjYkbJCd1+2UU/9zSrpOdUUwYiKiyOo42iF7/3mvlKJUPsz7UCqfq4zpUShf/hIpU4vNlVLXAVgBwApgpYg8Eej9ke5s/p19+/BGfT1qLrlkaDXjDJX43PbvtWgRsHx5+EXXwfbtra/q6upZn5wMtLb27oY+jFxUVgaXCMr6PozZINEELZtaULeuDrVra9F1WD/XaSVpyP1KLkZcPwJp56dBWfhcSSKKrq4TXTjxxAlUrayCsioULSrC2KVjYcuMn++DQS82V0pZATwN4EsApgL4mlJqqlnHG8jX8vPR5HLh9dOnB/OwscE30Yn0g3uD7dvp7Emi+j60OD29f0fzYWBbayu2tLbim327wYdBWRQy52Ziwi8m4KKDF+HCzy7EWcvOgiXRgmM/PYayWWXYVLQJ+2/fj9Ovn4azgd3UiWhwte9tx/479uOTCZ+gamUVCv6lABcduggTnpgQV0lUIKaNSCmlLgbwExG51jO/FABEZJm/bSI9IqWJYMbWrejWNHx24YXDa1Rq7Vr9DjrfUSLfBGjNGuDGG83Z98SJwKFDvUegfEeoZs8GPvkksp83xn1l92580NSEY3PmIMu3xYNJHKcd9hP6dgAAB1lJREFUaPhrA+rfqkfju41wNboAC5AxOwPZ12Qj+5+ykXFRBiwJw+j/CSIaFKIJGt9rxMnfnETD+gZYUiwovKMQox8cjeQx8Xsnvb8RKTMTqVsAXCcid3rm/xnARSLyPX/bmPHQ4rfr6/Gd/fvxtxkzcF5aHN1OGS4JsY+UGfv29pHy9ovycrn01gd9lw9xjU4nLt62DXcUFuLBMWMG/fiaS0Prp61oeLsBDe82oPXTVkADxjwyBuMfGz/o8RDR0Na8qRnbL9mOhPwEFN1dhFF3j0JibmLwDWNcNBKpWwFc2yeRmi0i3+/zvrsA3OWZPRfAZ6YENPTlAqiLdhBxiufOOJ4743juwsPzZxzPnTFjRSSv70IzhwVOAhjtM18MoLLvm0TkWQDPAoBSautA2R4Fx3NnHM+dcTx3xvHchYfnzzieu8gys0DiUwBnK6XOUkolArgNwJsmHo+IiIhoUJk2IiUiLqXU9wD8FXr7g+dFZI9ZxyMiIiIabKZW/IrIegDrP8cmz5oVyzDAc2ccz51xPHfG8dyFh+fPOJ67CDK1IScRERHRUMYmMkREREQGxUQipZS6TilVrpQ6pJR6ONrxxBOl1PNKqdNKKbaN+JyUUqOVUqVKqX1KqT1KqUXRjileKKWSlVJblFI7Pefup9GOKd4opaxKqe1Kqb9EO5Z4opQ6ppTarZTaoZSKbOPBIU4plaWUWqWU2u/5vXdxtGMaCqJ+ac/zKJkDAP4JesuETwF8TUT2RjWwOKGUuhxAG4CXROTcaMcTT5RShQAKRWSbUiodQBmABfy3F5xSSgGwi0ibUioBwIcAFonI5iiHFjeUUosBzAKQISLXRzueeKGUOgZgloiwD9LnpJR6EcAHIrLSczd9qog0RTuueBcLI1KzARwSkSMi4gDwKoD5UY4pbojIRgAN0Y4jHolIlYhs8/zcCmAfgKLoRhUfPA9Db/PMJngmFlyGSClVDODLAFZGOxYaHpRSGQAuB/AcAIiIg0lUZMRCIlUEoMJn/iT4ZUaDTCk1DsD5AIbXQwDD4Lk0tQPAaQDviQjPXeh+DeAhAFq0A4lDAuBdpVSZ58kYFJrxAGoBvOC5pLxSKWWPdlBDQSwkUgM98I1/2dKgUUqlAVgN4D4RaYl2PPFCRNwiMhP6UwtmK6V4aTkESqnrAZwWkbJoxxKn5orIBQC+BOAeT3kDBWcDcAGA34rI+QDaAbAmOQJiIZEK6VEyRGbw1PesBvCKiKyJdjzxyHN5YAOA66IcSryYC+AGT63PqwC+qJT6Q3RDih8iUul5PQ1gLfTyEAruJICTPiPHq6AnVhSmWEik+CgZigpPwfRzAPaJyFPRjieeKKXylFJZnp9TAFwNYH90o4oPIrJURIpFZBz033f/EJFvRjmsuKCUsntuDIHnstQ14IPuQyIi1QAqlFKTPYuuAsAbayLA1M7moeCjZMKjlPojgC8AyFVKnQTwYxF5LrpRxY25AP4ZwG5PrQ8APOLpyE+BFQJ40XPXrQXA6yLC2/jJbPkA1up/A8EG4P9E5J3ohhRXvg/gFc+gxREAt0c5niEh6u0PiIiIiOJVLFzaIyKi/9/e/YRYWcVhHP8+RKDhYFCraCEKueiPRgopuXBRiyRDKQJbJMQsAiEEF0EUk7poEQQircVWIRYJrooCZ5EliLUpCRdtkqI2WbnRfi3eQ0x3mhk7Bjfnfj9wufc95z3nnnf38Htf3iPplmSQkiRJ6mSQkiRJ6mSQkiRJ6mSQkiRJ6mSQkvS/kWQmyYH2+1iSZzrnWZNk0fcLtXP2zDnem+Roz/9JmlwGKUmTag2wZ6mTJGkxBilJY5Xk1SQXk3wMrB/pvre9PHChsTNJ3k3ySZJvk0yP9K9tlafZJOfbZ2vrfhPYluRCkv0j43Yk+SzJ3Ummk5xL8mWSk0nu+C+uW9LyYJCSNDZJHmHYJuVhYDeweU73ytY2tcQ0DwE7gC3A60nuaWPXAY8BPwKPt41unwOOtHGvALNVtbGq3p6zpl2t78mq+gl4v6o2V9UG4GvgxZu4ZEnLzNi3iJE00bYBH1TV7wBJTrXvZxlC0MtV9fMSc3xYVVeBq0k+BR4FpoFLVXU8yWrgaJKNwHXgvkXm2g5sAp6oql9a2wNJDgN3AqsYtrOSJMCKlKTxm7dPVVWdAD7qHH8deGnO8X7gB2ADQ0ha8FYhw/5jU/w9bB0D9lXVg8AbwIobXJekCWCQkjROZ4BdSVYmmQKe6pjj6SQrktzFsIH3uZH+1cDlqvqDYZPq21r7FebfNvyO4Xbi8ST3t7Yp4HKS24HnO9YnaRkzSEkam6o6D7wHXABOArP/dF6Sg0l2LjDNF8Bp4CxwqKq+H+l/B3ghyVmGStNvrf0r4Fp7iPyvh82r6iJDYDqRZB3wGvA5Q4Xsm39/lZKWs1TNq6pL0i0hyQzwa1W9Ne61SJpMVqQkSZI6WZGSJEnqZEVKkiSpk0FKkiSpk0FKkiSpk0FKkiSpk0FKkiSpk0FKkiSp05+Caai4goLvXAAAAABJRU5ErkJggg==\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "fig = plot_data_for_classification(Xpl, Ypl, xlabel=u'dł. płatka', ylabel=u'szer. płatka')\n", + "plot_decision_boundary(fig, theta, Xpl)\n", + "plot_decision_boundary_bayes(fig, X_mean, X_std)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "### Kiedy naiwny Bayes nie działa?" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [], + "source": [ + "# Wczytanie danych\n", + "import pandas\n", + "import numpy as np\n", + "\n", + "alldata = pandas.read_csv('bayes_nasty.tsv', sep='\\t')\n", + "data = np.matrix(alldata)\n", + "\n", + "m, n_plus_1 = data.shape\n", + "n = n_plus_1 - 1\n", + "Xn = data[:, 1:]\n", + "\n", + "Xbn = np.matrix(np.concatenate((np.ones((m, 1)), Xn), axis=1)).reshape(m, n_plus_1)\n", + "Xbnp = powerme(data[:, 1], data[:, 2], n)\n", + "Ybn = np.matrix(data[:, 0]).reshape(m, 1)" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "fig = plot_data_for_classification(Xbn, Ybn, xlabel=r'$x_1$', ylabel=r'$x_2$')" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "liczba przykładów: {0: 69, 1: 30}\n", + "prior probability: {0: 0.696969696969697, 1: 0.30303030303030304}\n" + ] + } + ], + "source": [ + "classes = [0, 1]\n", + "count = [sum(1 if y == c else 0 for y in Ybn.T.tolist()[0]) for c in classes]\n", + "prior_prob = [float(count[c]) / float(Ybn.shape[0]) for c in classes]\n", + "\n", + "print('liczba przykładów: ', {c: count[c] for c in classes})\n", + "print('prior probability:', {c: prior_prob[c] for c in classes})" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "średnia: [matrix([[1. , 0.03949835, 0.02825019]]), matrix([[1. , 0.09929617, 0.06206227]])]\n", + "odchylenie standardowe: [matrix([[0. , 0.52318432, 0.60106092]]), matrix([[0. , 0.61370281, 0.6081128 ]])]\n" + ] + } + ], + "source": [ + "XY = np.column_stack((Xbn, Ybn))\n", + "XY_split = [XY[np.where(XY[:,3] == c)[0]] for c in classes]\n", + "X_split = [XY_split[c][:,0:3] for c in classes]\n", + "Y_split = [XY_split[c][:,3] for c in classes]\n", + "\n", + "X_mean = [np.mean(X_split[c], axis=0) for c in classes]\n", + "X_std = [np.std(X_split[c], axis=0) for c in classes]\n", + "print('średnia: ', X_mean) \n", + "print('odchylenie standardowe: ', X_std)" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + ":11: UserWarning: The following kwargs were not used by contour: 'lw'\n", + " plt.contour(x1, x2, p, levels=np.arange(0.0, 1.0, 0.1),\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "fig = plot_data_for_classification(Xbn, Ybn, xlabel=r'$x_1$', ylabel=r'$x_2$')\n", + "draw_means(fig, X_mean, xmin=-1.0, xmax=1.0, ymin=-1.0, ymax=1.0)\n", + "plot_prob(fig, X_mean, X_std, classes, xmin=-1.0, xmax=1.0, ymin=-1.0, ymax=1.0)" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + ":8: UserWarning: The following kwargs were not used by contour: 'lw'\n", + " plt.contour(x1, x2, p_diff, levels=[0.0], colors='c', lw=3);\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "fig = plot_data_for_classification(Xbn, Ybn, xlabel=r'$x_1$', ylabel=r'$x_2$')\n", + "plot_decision_boundary_bayes(fig, X_mean, X_std, xmin=-4.0, xmax=4.0, ymin=-4.0, ymax=4.0)" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "theta = [[-0.31582268]\n", + " [ 0.43496774]\n", + " [-0.21840373]\n", + " [-7.88802319]\n", + " [22.73897346]\n", + " [-4.43682364]]\n" + ] + } + ], + "source": [ + "# Uruchomienie metody gradientu prostego dla regresji logistycznej\n", + "theta_start = np.matrix(np.zeros(Xbnp.shape[1])).reshape(Xbnp.shape[1], 1)\n", + "theta, errors = GD(h, J, dJ, theta_start, Xbnp, Ybn, \n", + " alpha=0.05, eps=10**-7, maxSteps=100000)\n", + "print(r'theta = {}'.format(theta))" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + ":10: UserWarning: The following kwargs were not used by contour: 'lw'\n", + " plt.contour(xx, yy, z, levels=[0.5], colors='m', lw=3);\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAlwAAAFmCAYAAAC4FUTmAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nOzde5xT5Z0/8M+TTDKX5ASYOxcRFeoFlMsMqC21tdqqsAqCLSrebf1t2xWE7qr9dbfb32613XYLYtu9WLrrBazUctOC9VbrtQIzFAS8gRRRYDLDMJCTTCbX5/fHyUkymSSTzCRzkszn/XrlJbmdPHMGZj4+z/d8HyGlBBERERHlj8noARARERGVOgYuIiIiojxj4CIiIiLKMwYuIiIiojxj4CIiIiLKMwYuIiIiojwrM3oAA1FbWysnTJhg9DCIiIpG0BWEd78XVZ+pglkxGz0copLV2tp6XEpZl/h4UQauCRMmoKWlxehhEBEVjb0L9uJU1ylc/M7FMJVzcYMoX4QQHyd7nP/qiIhKnP+4H53PdqLxtkaGLSKD8F8eEVGJ6/hdB2RQon5xvdFDIRq2GLiIiEqc83Enqs6tgn2q3eihEA1bDFxERCXMvccN159dGP310RBCGD0comGLgYuIqIQ5n3BClAk03NJg9FCIhjUGLiKiEiXDEu1PtWPUFaNgrbUaPRyiYY2Bi4ioRHW93AXfJz40LObsFpHRGLiIiErUsUeOwVJrQd2CPj0YiWiIMXAREZWgoCuI488eR/0N9ey9RVQA+K+QiKgEdazvgPRJ1N/A3ltEhYCBi4ioBB1bfQyVn6mE4yKH0UMhIjBwERGVnO4PuuF6y4XR32DvLaJCwcBFRFRinE86AQFenUhUQBi4iIhKiAxLONc6MfLSkSgfXW70cIgogoGLiKiEnHzlJHo+6sHoO0YbPRQiisPARURUQtoebUPZyDLULqw1eihEFIeBi4ioRIS6Qzi+6ThqF9bCXGE2ejhEFIeBi4ioRBzfeBwhdwgNN7FYnqjQMHAREZWIo48cReXESoy8ZKTRQyGiBAxcREQlwHvIi1OvnULjbY0QJvbeIio0DFxERCWg/TftAID6G7mVD1EhYuAiIipyUkq0PdqGEbNHoPKMSqOHQ0RJMHARERW5U6+fgvdDL0Z/g723iAoVAxcRUZFzrnXCVGVC3cI6o4dCRCkwcBERFbGwL4yOpztQO78WZht7bxEVKgYuIqIi1rGhA8GuIBpvazR6KESUBgMXEVERa/vfNlRMqMCoy0YZPRQiSoOBi4ioSPnafOh6uQv1i+vZe4uowDFwEREVqfYn24Ew0LCYW/kQFToGLiKiIiSlxLHVx+C4yAHbuTajh0NE/WDgIiIqQmqLiu73utF4B4vliYoBAxcRURFyrnVCWAXqvsreW0TFwPDAJYSoEEJsF0LsFkLsE0L8P6PHRERUyML+MNqfbEfN39TAMtJi9HCIKANlRg8AgA/Al6SUbiGEBcAbQojnpJRvGz0wIqJC1PlsJwIdAYz+OrfyISoWhgcuKaUE4I7ctURu0rgREREVtrYn2mAdbUX1V6qNHgoRZcjwJUUAEEKYhRC7ALQDeFFKuc3oMRERFaLAiQBOPHcC9dfXQ5jZe4uoWBRE4JJShqSU0wCMAzBLCDEl8TVCiLuEEC1CiJaOjo6hHyQRUQFwrnVC+iUabmHvLaJiUhCBSyelPAngTwCuTPLcI1LKZillc10dr8ohouGp7X/aYG+yQ5mmGD0UIsqC4YFLCFEnhBgZ+XMlgMsBvG/sqIiICo9nnwfuXW403sLeW0TFxvCieQCjATwmhDBDC4C/lVL+3uAxEREVHOcaJ2AG6hfVGz0UIsqS4YFLSvkOgOlGj4OIqJCFg2G0PdqGmqtqYG2wGj0cIsqS4UuKRETUv64XuuBv86PxTi4nEhUjBi4ioiLgXOtE2agy1MypMXooRDQADFxERAUu6Ari+MbjqF9UD5OVP7aJihH/5RIRFbj2p9oR9obReDuXE4mKFQMXEVGBa3usDVWTq6DMZO8tomLFwEVEVMC8f/XC9ZYLDYsbIAS38iEqVgxcREQFrO2xNkAADYu5lQ9RMWPgIiIqUDIs0fZoG0ZdPgoV4yuMHg4RDQIDFxFRgTr1+in4Pvah8TYWyxMVOwYuIqIC5VzjhMlmQu28WqOHQkSDxMBFRFSAQp4Q2te1o+66OphtZqOHQ0SDxMBFRFSAOjZ0IKSGMPqO0UYPhYhygIGLiKgAOdc4UTGhAiM+P8LooRBRDjBwEREVGN9RH7pe6kL94nr23iIqEQxcREQFpu3xNiAMNN7CqxOJSgUDFxFRAZFSwvmYEyNmj0DVZ6qMHg4R5QgDFxFRAXHvdKP7/W403MzO8kSlhIGLiKiAtD3eBmEVqPtqndFDIaIcYuAiIioQYV8YzjVO1M6rhWWUxejhEFEOMXARERWIzuc6ETwRROPtLJYnKjUMXEREBcK5xglLvQWjvjzK6KEQUY4xcBERFYBAZwCdz3ai/oZ6mMr4o5mo1PBfNRFRAXA+6YT0S4y+nVv5EJUiBi4iogLgfMIJ21Qb7FPtRg+FiPKAgYuIyGDdH3ZD3aGi4Sb23iIqVQxcREQGa3u0DTABDTcycBGVKgYuIiIDyZBE2+NtqL6yGuVjyo0eDhHlCQMXEZGBTr56Ev4jfm5UTVTiGLiIiAzkfMIJs2JGzdU1Rg+FiPKIgYuIyCBBdxDtT7ej7mt1MFeZjR4OEeWR4YFLCHGaEOIVIcR7Qoh9QoilRo+JiGgoHN9wHGFPGI23cTmRqNSVGT0AAEEA35FS7hRCKABahRAvSinfNXpgRET55FzjRMUZFRjxuRFGD4WI8szwGS4p5TEp5c7In1UA7wEYa+yoiIjyy3fEh66Xu9CwuAFCCKOHQ0R5ZnjgiieEmABgOoBtxo6EiCi/2p5oA8JAw63svUU0HBRM4BJC2AGsB3CPlNKV5Pm7hBAtQoiWjo6OoR8gEVGOSCnhfNwJx+ccqJpYZfRwiGgIFETgEkJYoIWttVLKDcleI6V8RErZLKVsrqurG9oBEhHlkHunG93vdaPxZhbLEw0XhgcuoRUv/BrAe1LKFUaPh4go39qeaIOwCtR9lf/zSDRcGB64AHwOwM0AviSE2BW5zTF6UERE+RD2h9G+th2182phqbYYPRwiGiKGt4WQUr4BgJfoENGwcOL5EwgcD6DhFhbLEw0nhTDDRUQ0bDjXOGGptaD6imqjh0JEQ4iBi4hoiAS6Aji++Tjqr6+HycIfv0TDCf/FExENkY6nOyB9kr23iIYhBi4ioiHifMKJqnOroDQpRg+FiIYYAxcR0RDw/tWLU2+cQsNN3MqHaDhi4CIiGgLOJ5wAgIbFXE4kGo4YuIiI8kxKCecTToy8dCQqTq8wejhEZAAGLiKiPHNtc8F7wIuGmzm7RTRcMXAREeWZ8wknTBUm1C3kVj5EwxUDFxFRHoV9YbQ/1Y7a+bUocxi+uQcRGYSBi4gojzqf60TwRJBb+RANcwxcRER55FzjhKXeglFfHmX0UIjIQAxcRER5EugKoPPZTm0rnzL+uCUazvgTgIgoTzp+2wHpl2i8pdHooRCRwVjBSUSUJ8412lY+9hl2o4dCRHkmpUTIE0r5PAMXEVEeeA9pW/mc8cAZ3MqHqAT52nxwt7rh2u6C620X1BYVIz4/IuXrGbiIiPKgfW07AKD+xnqDR0JEgxV0BaG2qtpthwrXWy74PvVpT5oA2/k21C2sw8hLRwKbkx+DgYuIKMeklGh7vA0jLhmBygmVRg+HiLIQDoTheccD1zZt1kptVeHZ6wHC2vPlp5fD8VkHHBc5oDQpsM+wo8weF6duTH5cBi4iohxTW1R4P/TitH84zeihEFEaMizhPeCFukPFqT+fgtqiwrPbg3CPlq4sdRbYZ9hRe20tRlw8AvYZdljrrAP6LAYuIqIcc651QlgFt/IhKjC+Iz5t1qolErB2qAi5tEJ3k80EpVnBmG+OgeNCB5QLFVScXpGzGkwGLiKiHAoHta18aubWwDLKYvRwiIatoCsI13ZXNGC53nbBf8SvPWkC7FPtaLixAfYmOxwzHaiaXJXXfnkMXEREOdT1UhcCzgAabuZWPkRDJewLw/2OG64/u6Du0AJW9wfdgNSerzizAiMvGanVXc1UYJ9qh7nKPKRjZOAiIsqh9rXtKBtZhpo5NUYPhagkyZBE94fd2tWCb7vg2u6C5x0PZEBLV9bRVijNCupvrNeWBmcqBTHbzMBFRJQjIU8IHRs70HBjA0zl3MiDaLCklPAdjtVdubZpM1ght1Z3ZVbMUGYqGLdsHJRmBY6LHKg4rcLgUSfHwEVElCPHNx9H2BNGw2IuJxINROBEQKu7iiwLqjtU+I9pdVfCImC7wIaGWxvgmOmAvckO27k2CHNxNBZm4CIiyhHnWifKTytP222aiDQhbwjuXW5t1mqbFrC8B7zakwKo/EwlRl02Co6LtWVB2/k2mCuGtu4qlxi4iIhywH/cj64XujDuO+MgTMXxf9xEQyUcDKP73e7osqDrbRc8+zxAZOvB8nHlUGYpaLy9UStsb1ZQ5iitiFJaXw0RkUE6ftsBGZRouIHLiTS8SSnRc7BHWxpsVaFu12avwl6tmah5hBmOCx2oubpGq7ua5UD5mHKDR51/DFxERDngXOtE1eQq2C6wGT0UoiHl7/BD3a7GtsLZoSJwPAAAEOUC9ml2jL5rNByztK1wKidVDstZYAYuIqJB8h7ywvWWC2c8eEbOulITFaKgGoT7L25t9mqbCtd2F3yH4zZxnmxDzdU1WjuGWQpsU2wwWXjFLlAAgUsI8T8A/gZAu5RyitHjISLKVvtT7QCA+uvrDR4JUe6E/VozUbVFjc5gdb8X10z0jAqt3upuBY6ZWt2V2Va8Re35ZnjgAvAogF8AeNzgcRDRcCQlsGkTMH8+ED87lerxJNp/0w7HxQ5UnlGZ58ES5YeUEt4PvbFlwRYV6k4V0qelK0utBcosBfVfq4cyU4HSrMBaP7BNnIcrwwOXlPI1IcQEo8dBRMPUpk3AggXA0qXAypVauJISWLYMWLUK2LABuPbalG/37PPA844HEx+eOISDJhoc31FfbFlwhwvuVjeCJ4MAIps4z1Aw9ttjo1vh5HIT5+HK8MBFRDRog5mlmj9fC1urVmn3V66Mha2lS7Xn03D+xgmYgPqvGbucqPpUrNu3Dvs792NSzSQsmrwISrli6JioMAS6AtFidtc2F9TtKvxtkWaiZVoz0bpFddqy4IVKUTUTLSZCSmn0GBCZ4fp9uhouIcRdAO4CgPHjxzd9/PHHQzM4IhqYHCzVZWzjxkHNUvV6rS7+WCnfJrFt0jZUnlGJqS9Ozc3XMgBvHH4Dc9bOQViG4Ql4YLPYYBImbF28FbPHzzZsXDT09GaieisG1zYXvPu90ecrJ1VqBe3NCpRZCuzT7UXdTLQQCSFapZTNfR4vlsAVr7m5Wba0tOR1TEQ0SIMNQdmIP67+eYn3+wt3UgKmuKupQiFg8+a0gdHVqmLnzJ04e/XZGH3n6Nx8LVlSfSrGrhgL1a/2eU6xKjj6naOwW+39HoOzY8VHhiQ873qi+wuqO1R49nggg5FNnMdYocxUYgGruTA2cS51qQIXlxSJKD8GuVSXFSG04wPa8fXPzCZsLVsWvatagXV3TMP+I3sw6c+XYdG/bIBS4egTGNvfPB/CIlC7oDZ3X0uC/sLQun3rEJbhpO/1h/x4bNdj+Pasb6c8frLZseXPL+fsWIGRUqLnUE+vZUF1p4pwt/a9LxtZBnuTHafde5oWsoZJM9FiYvgMlxDiNwC+CKAWgBPAP0spf53uPZzhIioSA1yqG9Tnxc9ShcOZh61IEHxj2ULM+d/LEPYH4CkHbD7AZLVg6+0vY/bK9dHXyZ+twNsTtsE+zY7znz0/918LMlsqvO/F+/CTt36S8hgWkwV/vPWPScNTLmbHKD/8Tj9cOyJXDEYK24OdWlG7KBdQZija1YKRcFU5qZJF7QWiYGe4pJQ3GD0GIsoTfeYpPnAlhq1c1XolzFIB0O73F+42bYqGKPXH/4I5K8dBFQEgMjngKQeAAOb89yU4+p+APRIYXX92wfepD2f86Iy81KupPhVz1s7pFYY8AQ8AYM7aOdEwNKlmEmwWW/S5RIFwoNfr46WbHQvLMNbtXYc7Z9yZ1bgpe0E1GO11pbZo4cr3caSZqNCaidbOr432urJdwGaixYjfMaLhSEqtxipxhjvV44P5nGQhKP74eluG+Mf19y1YoD2f6efoy5XhcGw5M/HzEs2fr9WTrVyJde/+NnUAAbBuMqIBrv237RDlArXiz7F6tSRfg3r9Aqz+9bdx34v3YfXO1VB9fWeTkskkDAHAosmLYBLpf5THv16n+lT87t3fpQxqnoAHB04cyGislLmwLwzXDheO/PII3rv1PWw/bzveGPEGdn9pNw7efxBqqwrHhQ6c9e9nYdpr0zDbNRsz98zEOavPwZj/MwZKk8KwVaQMn+EiIgPoIWfJEuALX4gVr+uhZf16bUZmMFcSpitkB2IzT4Ot9ZISuP/+vgXyK1YABw5oj8d/jYmEiD63v3N/6gBSDhyoBnDPPZArVqLjdx2oHnsUZTfdqJ2vJF/DGxtXYc53LQi3Pw7Pkezqo9KOJS4MKeUKti7eisseuwz+sL/f1wOxpUpfyJfy820WGyZWs7fYYMiQRPcH3Vrd1Xat7sq92w0ZiDQTbbBAaVZQv6geyoVat3ZLDYvaSxUDF9FwFB9yHn5YC15A7M+vvqr9OZsrCROXz/SluiVLgEsu0V4TX9iuh6DBFrxv2gT85CfA3LlayNKvhly+HNiyBbj3Xu2+lP0u96VbnrPJMkw8EQQefhiuo9XwH/kCHOZfY/U/XIb9yjZMunkyFuGbUCJfg2oF5nzXoi1PBrSNfJMtCaaSdiwJYWj2+Nn42RU/w3de+A78ob6hK/71yZYqkzEJExZNWZT2NRQjpUTPxz3RqwXVHdryYMgdAgCYFTOUZgXjlo2D0qxdOVh+WjnrroYRw4vmB4JF80Q5ICVwzz1asNLFB69si9sT20DojyWGt3T1TtkWvOvvS9cS4pJLgIULM2pP0W8Redti2B/+LxzAt/Ap5mHRvdfBMyKhoP2/VMw+DKyeAdyzMHVgWnXlqrT1UdkWtGf6+tU7V+OeP9yTcvas3FwOq9nKqxT74e/wR4OVa4fWliHQrgVrYRWwT7VDmRXZY3Cmgqqzq9hMdJgo2KJ5IjKIEMBDD/UOXPqfB3IlYbKlwddei4U3fWkwbgkvaqAF7/rx0s2Q6X/OYMlSX57rdWWgLIPJH8RW1xWwr/wl5MP/hXZ8HtsntqC9SgW037Gx2avFwNGfAfurMaj6qKRjibtKMXF2LNPXp1uqBIBpjdPw0i0v8erEOEF3EO5WtxastmkzVz2HerQnBVB1bhWqr6qGY5YDjgsdsJ1vg8nKOivqjYGLaLhKFnJ0A2nbMNClwUxrvTL57FRXQ2YxrtnjZ+Pod45i3d51OHDiACZWn4VFj++EfdV/AivMUHE2/GjEm2c/mnQoYWsZ1v35PzHpqadg870cucqxt0zro/qOZSIWTVmUMgxl8vpJNZNQVVaF7mB30mPsdu7ud1ylLOwLw/2OOzZ7td2F7ve6gchiUMUZFVBmKhjzrTFwzHLAPsOOMoW/Sql/XFIkGm70KxH1pb74ZUTdkiXa7NdA6kuyXRrMRUf6TPp9DXTJUn+tWdv+5CC+jkOmGzD/7+dDrUpeB3X/5+7H/539XYz9ca1Ww5XAyB5Xqk9F3U/rUhbMZ7LcWSpkSKL7/e7okqC6I1LU7o8UtddZon2u9J5X1jqrwaOmQsclRSLSbNqk1TQBwN13a/99+GFg2jRg167YfX3WKJvQNZClwfnztav84umffcklyQvek31muhkyfRzZjCv++NdcE717HLPRM+5jhEeEo8uJ8fTZK6XCga23v4w5j1+BsNnU75LgUFHKFSw8byGe3PNk0udLtR1EfKd2febKvdPdu6i9ScG4e8ZpAatZQfl4FrVT7jBwEQ038+drM1gPPwwcPKhdyaeHLf2Kwtde67+dgk4vgp83T7syUA8+K1ZoQaW/pUEhtFviLBcQG0e6Wa64xqXR98YvIcZ/PdkuWephbssWYO5cdP9sHbrP2YGzjzwMk98PJHlb/NV9s0//PI7e157xkuBQuXTCpdj8/uaMroAsVr42n9ZMdEesoWjgeKSovVzAPs2OxtsaozNXVWdXQZgYriiPpJRFd2tqapJENAjhsJRLl+pzR9pt6VLtcf35DRti99PZsEF7/9y5sf8Gg7Hj64/fe2/q48WPRx9H4v10X0uyseqPr1+f/OvTj79hQ/9fW+S9h//9sHwFr0jv7ffL18dDKv9SKW0P2CR+AGl7wCaVBxX5+sev93/ODObqcUnlQUXiB+hzUx5UpOpTjR5iVvxdftn5Yqc89KNDcs+CPfKtcW/JV/CKdjO9Irefv12+d8d78tP/+FSe2nFKhnwho4dMJQxAi0ySXVjDRTQc6XVc+tIioNUpAdlvRRO/pNfUBLS2xmbMli4FfvYzbfZry5b0M1X52ndxMNvuJLzmL1/8C4JdQczc1Qxs2gT3nMuxbt9v+8xe9bfhdCHIZJ/GQhTqDsH9F3dsn8EdKrwfeqPPV5xVobVimKXNXNmn2VFm52IODZ1UNVwMXETD0YYNvcMW0Lt4PlWn+XThJTEsTZumha/4Zcb+wtNgCtvzLHAygDdr38T4e8fjzAfPTPm6YggyeiB8t+NddHZ3oqayBpPrJxfEcme8sD8Mz15Pr15Xnn0eQCu7gnWsNbq/oDJTgdKswFLNTu1kLBbNE5FGSu0KRd2cOcDEibGrFJcs0V6zcGHvqxXTXTmYrC3Drl3RK/v6NENNNqs0mF5cQ+DkH08CIaD6quqUr8l0w2kjpQuERo6t1zY4kXDl3u2G9GmTAmXVZVBmKqi9pjYasMrHJOm5QVSgGLiIhptNm2LtIA4cALZu7f28XmQO9L5aMd3+hul6egG9rxRMFthy0Ysrz068cAJmxQzHRY6Ur8lkw2kj2y0USiCUUqLnYE9sWbBFhbs1dsWgyWaC0qRg7N+NjXZqrzijglcMUlFj4CIabubP1wLP/Pla0NFnoQDgd7+LdYfXlxj7axaaGJZWrNBqufQWE4C2hRDQt+u8rr8rDTO5WjLPul7qwsgvjoTJkrqDeKYbThvFiEAopYTviC+6t6B+C54IAohdMdhwa0N0ebDqHG6DQ6WHgYtouNG31tE3eI533XXaf+OXAOMboiabaYoPSytWaMfctatvXy9AC3HJjhEfAvXn9ND1hS/0DWhDrOeTHvR81INP5n+CNS+uSVkIn82G05nKZQH+UARCv9MPtVXtFbD8bZENtc2AbYoNtdfWRgvbbVNsaUMsUalg4CIajpLNSsXPdK1Yof03k5qq+LCUGL7im6wCWnhK1Ysr2QxWqseH2PbN2wEAP/T+EO+89Q5sFhuWP7+8TyH8osmLsPz55UmPEd+fK166QJWs3irZ52Yq14EwcCLQa9ZKbVHh+yTSwV4AVedUYdRXRkVrruxT7TBXmtMflKhEMXARDUfJZqXiXXMNcNZZsSXAdDVV8aEoPnwBsVow3auvaq8toloc1adi41MbcUXZFdhbsxdA6rqnbDecTheopjZMzXm91UACoS54Kgh1Z9zMVauKnoM90ecrzqrAiM+N0MJVs8I9BokS8F8D0XCkB6NU3eG3bNFeF78EmElNVfxyZaoi+IFsGWSgdfvW4cwjZ+JA4wGEzb3rn5LVPWW64XR/BewPXvZgzuutMg2EQVcQ7r+4taXByMyVd3+s11X56eVQmhWMuWsM7E12KE0KLKPYjoEoHQYuouFID0YbN/YtVn/2Wa3I/eGHey8BZlNTlasi+ME0Lc2R/Z378VnnZ/Haea/1eS5V3ZPdau83DPVXwL7lwy3p663e3gJMvyPr85IYCCeVT8JV/qsQXB/Eu63vauHqQy8QadFYflo5lCYFjbc2auGqWYG1lhs4E2WLgYtoOEtVrP7QQ8AXv9g3WGVaU5WrIvhNm/rusZiuH9ggpKqlOtt6NkZ4R+DT6k/7vGcw+w72V8AuIFLXW4lyTFy9EfhwWVbnJX7m6uLWizGldQq8H3rxgfwAgNZIVGlW0LC4AUqTAqVJgbWB4YooFxi4iIazfBWrZ3LcTGav5s/XwlZ87Vi6fmADlK6W6upRV2Mf9qFT6ezzvv7qntLpr4B97mfm4o1P3kj6XpPFikWX3AGsWgUVfqy7eTr2P/3fmPR6KxYt/SaU+fO1gvadajRguXe6ey8LjiuHfYYdDTc2aDVX0+0of3srMP/iolnuJSomDFxEZIxMZ6/ilyLT9QMboP5qqfZ/aT8AQFTFZpxy0Z29vwL2W6fdiqmNU1PXW532Obxh7sAc639i1KO1GNM5EcdH3IKOF0/DxeNfBeIm5MrHxy0L9rwD5Ye3wLrw1rzPGhJRDAMXERkj09mrZNsG5bDovr9aquc/eR7jMR6rv7IaL01+KW0hfDYyKWDvU4A/YiLmVcxD6K0Q3mt9H9ufvRiPHr0B1Z7YdkOfVH+C18e+juu/eT1qZtZAmaHAUhNX0C7HA+qteZ81JKLeGLiIyBiJhfSpZq/yvMdif7VUH1R8gPGm8Qi9H8KdN+e2C3u6KxoDJwPw7PHAvduN2e/MxrR3psHzjgd7vVprClkmMaLGgW2TtmH/6P3Y37gfHzV+BG+5FzZRjjFXjsadM77e90MzPe9ElFNCSmn0GLLW3NwsW1pajB4GUWkx6opAKQFTXKfxcLhv2ErWXiJHAWH1ztW45w/3pKylWnXlKjR9pwneg17M+mAWzBW5bdwZ6g6h+4NuePZ54Nkbue3xwHfYF31NWXUZ7FPtsE+1wzbVBvtUOx74jyb827j9KY97f921+NG3NqT+4HTnnYgGTAjRKqVsTnycM1xEpBnCKwKj+pu9GoI9FjNpBhr4pwB2X7Ybe+fvxTn/ew7KR5dn9RkyLOH71AfvAS+8+73o/rAb3e9rt56/9kRbMAiLQBHwZZIAACAASURBVNU5VRgxewRs59tgP18LWOVjy3tv3LxxIybu3A9bo4CnrO//NNtCZky8aE6aAeV31pCI+uIMFxFphmA2KevPA4Zk1i3ZVYp6LZW+hc7R1Uex/9vajNKoy7TtasrHl6NsRBlEmYD0S4Q8IQS7gvB3+OE/5ofvUx98h33oOdwD6Y/9rDVVmFD5mUpUnVsF27k2VE2ugu08GyonVWa2r6CUUNf/BmP3/22vYn+dYlVSd6JPd97nzgWeeab3zNcQ9jwjKgWpZrgYuIgoJv6XsS5ftT0bN+Z+Ri3bZdG4x90BT1wt1VlYdLAK9oU3QPW7o/25zus+DzP/OBPuF93o/qAbSF5rD2ERsI62onxMOcrHl6NiQgUqz6rUbpMqUT6uHMKUw6CoqvCUAzYfYFKU9HstpjrvV1+t7TAwd67W/JZXLxINSKrABSll0d2ampokEeVYOCzlhg1ShkJSar9qtVsopD0eDufn8xKPm+rxTI61fr025qVLtcfCYe2xJUu0xzds6P2+DRt6v14/1tKlUgLy9ScekMqDirQ9YJP4AaTtAZtUHlTk6x+/LkM9Ien92CvVd1Tp+otLuve5pfeQVwZOBmQ41+cqlVBIqldfIVdPh7z/MsjV0yHVpd9M/z1LdX5DISnnzu19PiLnodf5IaK0ALTIJNnF8PCkjQ1XAvgAwAEA9/f3egYuojzQw8e0ab0Dl34/MawYLT446GNfskTKu+/W/nz33bGglSo0JAsVkfuupd+UyoOKxA/Q56Y8qEjVpxrzdcePXQ9I06ZpgUn/WgbyPUsMp/ptyRLtcQYuooykClwZFAtEp8i+LIT4lRBiWuT+XTmaejMD+CWAqwCcB+AGIcR5uTg2EWVh3jxg2jRg1y7tv6FQ7/vz5g3teKTUlr+kTP64vjS2bJk2tqVLtf0fX39de93Pf67dB3pvwh1PL8LX+4GZTNHapnU3T+9382hDbdqkLQFOmKB9j5Yv1zYf179nTU3Zfc82bQIWLkz+3MKF2vNENGAZBy4A3wLwDwBuEkJ8CcC0HI1hFoADUsqDUko/gKcADPFPdiLC5s2xcLVrF2A2976/efPQjke/anLZsljokpGaogULtPt6UEoMG4keeih1DVr8lY+6lSux/8SB9JtHJ9m0ekjNnw/cey9w6JD2da9aFfueTZgAtLZm9z2bP18LpnpI1T38sPY4G6ISDUo2gatDSnlSSvn3AL4CYGaOxjAWwCdx9z+NPEZEQ0nfcLq1tffjra2xjaiHejx6oNJDV/zVdfq2P/pr9LCRTHxoS6QfN+H1k6onwmaxJX1Lr02r+5uJS/W5gyUE8OMfa19/4td96BC7xhMVmmTrjMluAOYl3L870/f2c9yvAlgdd/9mAD9P8rq7ALQAaBk/fnxe1l2Jhr34mib9NneuVh+U+Lp8FNJnMp7EWqxwuPfzifVHek1Svmq4+im8T1tHlYsLB0Kh5HV3id+z/sTXwSWew0Ks4SMqUBho0TyAhxBpH5GPG4CLATwfd/+7AL6b7j0smifKg2ThI7EoO/F1Q/FLODFQJYatxECWWDAfH7rixxsOS3nvvX3DUtzVeumuUkx73jK9um8wYS3d1z+QKwtZNE+UE4MJXD8E8CyAqsj9rwB4s7/3ZXqD1u3+IIAzAFgB7AYwOd17GLiIBinZDIr+yz9+Rit+9mTu3PRhIpdtHuLfm2qGK/65+GCoh4T4q/bWr8/s640/5r33ShkOS9WnytWtq+X9L94vV7euTn51YiYzcf19fQNpxZDLK0sHOxYiklIOInBp78WNAHYAeAPA8wA+n8n7Mr0BmAPgQwAfAfhef69n4CIapGQzK/F9mOJ/Ucc/ni5MDHa2JlF/ASC+55bedyoSslxWyF/96pvy3hfulb/61Tely3sq++NnGzAS+5fps0LxgTNZ+BxoWNM/M1XvrGRLwenk+vtHNEwNZobrMgCvAPgTtF5ZZ/f3nnzfGLiIBinbsJFuWW+gx+xPfwEg2ayVlPL1Q69J5V8q0y8DJhvzQJfi9OMkhtLEpc3161OHl0zO70DOUbYzXLmeoSQahgYTuP4IYHbkz+cD2AXgS/29L583Bi6iAUqcbUkMG0uWpC8s7y+U5CrAJI41k8ellK4eV/bNSgcaduLfn9hwNHGJL13x/mDOWS5DEgMXUU4Makmx1xuA0QDeyvZ9ubwxcBENUOKMSGLYWL++9+sHMmuVKsAM8Bd6OBiW3o+9suu1Ltn2ZJs8/LPD8sB9B+T733hf7rthn9yzYI/cs3CPfPfmd+WGWzfIeQvmybpldX0Cl+0Bm/zFtl/IX7X+SltqbP2VttQ42IAYf07j68YyKWRPd36H+upQLikS5UTOApd2LFQO5H25ujFwEQ1Q/C/Q+FmXVDNc2f4STjdbk+ZYYUB6H9koO1/slJ/8/BP54d0fyl1X7JJvT3xb/qnsT/IVvNLr9ifLn+QbDW/Itye+LbdN3ia3nbdNvjX+Lfmy5eXoa35y5k/k2LvH9gpd1n+19l5q/GeLfH18FmEy1TmND0GJgTPd7Fmqc6IvT+oXKvR33jOVLvTGX6HIonmiActp4DL6xsBFNAjhcPKglWzJK5tZqf5mwyKzPz6Mkp3X/lAeXnFYvjf5f2UrfiFfs77QK1C9Zn9N7pi+Q+796l750Xc/kkceOSI7/9Ap3fvc0n/CL/XNoV09rl4zVj9/6+fy3CXnyhsvu1E+W/6s/L3193LCtyYkXWKMLjX+s0WqPa6+X8NAQk2ywNnfDFe+NpJOduz+rsyMrzMb7JIw0TCVKnAJ7bni0tzcLFtaWoweBlHx2rCh97554ciegXon9w0btE7u2dD3Nly6FFi5EmG/hOddDzz3PQL3ix/BfcG18ByrQqAjEH2LBSdhGxdA1dVTYZtsQ9W5Vag6pwrW0VaIVFvxRLxx+A3MWTsHYRmGJ+CBzWKDgEAYYXQHutFwsgH/8av/wLFRx/B3d/4dkOJwNosNq65chTtn3Kk9IKW2rdD8+am3A0pGytj5W7JEeyx+L0f9fuT89Hvs+OPpMn0v0Of7ASG073NTk9aZfu5c4Nlne3fv17c4MsVtQhIOZ3ceiIY5IUSrlLI58fEyIwZDRAaSEnj11d6PLVum/bJduRL4whey3hImcDKADtssvLloBXz76lB39gso/2s5EASAJpisM2CzOlDzNzbYL7DBtmw+bDgIK04Ch7P/ha76VMxZOweqX40+pu97WFlWCbvVDnedG2s/vxZ3/+FunNV5Fj6q/SjpsfrsiyhE9mET0EKaHlwuuUQLtPFBa/167dirVmnnuL/P0Pd4jA9c/YWt+LAYvzWSlNpnvvpqbH/MLVtiwSo+bCXZ5ijjkEdEKTFwEQ0n+qxJ/ExL/CzKypX9BgFfmw/unW6oO1W4d7rh3uVGz197AAB1mI5Oeyf2jN6DQ587hK9d9zU0Xd6EqklVEGYR+3zsjB1wAL/Q1+1bh7AMJ33OJEz48WU/RkVZBY6OPgr8AfhBzQ/wt5a/TboZda99EQdD34tSD6vxf/7iF7U/X3tt6kCbOLMWPVdx7rknFtbiz5f+Xim1oKd/b1eu1B57+OHYbNvSpdpG32Zz7P3xYSt+tivx7wZDF9GAMXARDSfxszD6L1D9l23CzIuUEr7Dvmiw0v/rb/NHD1c5qRKVTZX478/8N/bV7cOBxgPosndFn39cfRxHzzzaO2yl+YWu+t1Yt28d9nfux6SaSVg0eRGUcqXPl7G/c3/S8ARoM1afuj7Fjy7/EYJnBfHGHW/goqqLYAqZkr7eJExYdLASmC6Th5hMlxaF0F6rvyc+uKZ6PN6mTbElwBUrgOXLtXMzbVpsCVAPTkuWAA891DuYrVqlzaLps1qRc9qHfux4y5Zps3IZ/t0gouwxcBENJ/GzMHqIEAJyxQr0nHMp1ODFcH/3INRWFepOFcHOoPYaM2A7z4ZRXxkF+3Q7lCYF9ml2lCllWL1zNZ7+w9NJA1BYhrFu7zqtPqqfsPdGcz3mfPLjXjVZy59fjq2Lt2L2+Nm9jjupZhJsFlu/M1Z6jWq5pRxbr9/ap+bLJEzYetr9sH91MbB0e2xc8SEmm3q2+NCU7bHilwAPHNCW/PSwpYcwfXby4Ydj5y8+xF57bez4q1b1Xo7U6TVciaFXSi2wxc+e6Z8xgGVmIuqNRfNEw4yUEj2HerRQ1aLC3eqG2qoi2KWFK2ERsE22wT4jEqxm2GGfaoe50pz0ePe9eB9+8tZPUn7e/Z+7Hz+6/EepZ4ykhLr+Nxi7/2971WTpFKuCo985CrvVHn1M9akYu2Jsv6/3fuTFtonbcPb/no3Rt42G2+/Gur1P4cDbWzHxojlYNOV62C22WOiYOxd45pnY7FI2ReqRryXlLF4mx+qvUF5KrRj+1VdjS4SJr9GPE1/4rs+IXX11LMi1tmqvGWi4JKKkWDRPNAxFlwVbtHCltmq34IlIuCoTsF1gQ911dVrAalZgP98OU3ny5bdk0s02AYBE5H/qUhWjC4F1Z3Yj/GHymqxes2QRSrmCrYtTzFgt3hoNZz2HtNqyitMrAAB2qx13flwDfHsjsHQ8sNKmjWvFCi3EbNkSq23KNmzpX2P8MpwenDI9Vn+F8kJoM2jXXts7cOmfuXEjMG9e3yXDAwe0YPXMM8A112hf5+bNsdkszmIR5R0DF1GJkFLCd8QHd6sbrh2u6OxV4LjWhkGUCdjOt6FuQR3sTQMLV8ksmrwIy55flvL5X27/Jf7xkn/sNUOVqL+arF5XEUbMHj8bR79zFOv2rsOBEwcwsXoiFk1Z1OtzPO9qx6w6pyr2xvilO0ALG8uXa8ts8VasGFhN10CuLoz/jP6uEkz2mquvBm6/Hbjuutgy5N13AxUVwPPPA1u3akHr2We1m/51xI+ZM1tEecXARVSk/E5/bOaqRYVrhwsBZ6THlRmwTbah5poaKM0KlCYFtgtsMFckXxYcCNWnRgvcP3fa5/D8R88nfZ2E7DNDlSjTmqxEdqs97XG7WroQGhnC9/d8H5OOxRXhJ5uF0oOKrqlpYMtumYSmdO9Ld5Wgfqz41+jLhEeOAFddBTz3HDB1qvZZP/1p7GvbskULWvF1XkQ0ZFjDRVQEAicCvcKV2qLC94lPe1IAVedWQWlStHDVrBW0m6tyF64SJTYdtZgsCIQDKV8freNKIdOarGzHeHDmQThHOnHvjff2WnKcPX523zonIFacrheW67VOmdZ0DaaGK1mj0sSgB/R9zfr12swWoNWgSanNaOnmzNFmtTZvzr6ZKxFlLVUNFwMXUYEJqkG4d0aWBXdo4arnYE/0+cqJlVBmRsLVzNjVggMRP0uVrg1D4ntShaNk+nRyTyFZ5/heASkLqk/F2T88G0/+8Ems/tJqrL1kbfQ5xarg6PIjsN/3T72X/eILyeM7susyqcPKJDSlml1Kc1FBryXAxNdIqX3ez3+e/LihUN9gSUR5w8BFVIBC3hDcu91asIrcuj/ohl5nXjGhIlpv5ZjpgL3JDstIS04+e6ABZ/XO1bjnD/ekrLlKlM0MlXYVYeqarEyt3rkaT658Et9f830suX0J9py+J/qczWLDqpMX4c6fvhyb0dILyRO3wYlvDprJFjeZhKZ8zDBJqTVFjS+k1w2k+J+IBoxXKRIZLBwIw7PXoy0JRsKVZ68HMqilK2ujFcpMBfU31EeXBq311ryMJd3WOHPWzknahkGfCdvt3J02bJWJMgRlMOlVg/3pryYrU/s792PKh1PQU9aD98e+3+s5T8CDAztf7h1E4vcU1K/WS9YctL/gkuZKzCGvm9K3FWKneKKCwMBFlAcyLNH9YTfU7Wo0YLl3uRHu0VoflI0qg9Kk4LR7T4suDZaPLe93w+ZcSbc1TmIbhsSZMKs5dQi0WWy47rzrMNo+elAzVIM1qWYSyg+WY/eE3QiU9a4ts1lsmHjDrcAdCe0W9NYI8+YV1xY3qWa39I70S5awUzxRAWDgIhokKSV6Pu7ptSyotqoIqSEAgMlmgjJDwZhvjYEyU1sarDizYsjCVTKZtmFINhPmD/mTvg/Qtsn5xZxfGBKyAESX7uafOw97j+/D5ubNfV5iEiYsuvnf+oYmfRZq48bi2uJm48ZY2NIL5OM70v/ud7G9HInIMAxcRFnyO/2xgvbILdrryipgn2pHw80N0Zkr27k2bS/BApJpG4Z0M2EAUG4uhy/kG9DyYV5EttbxffEhAFOx97y90a/T5gNMlZX9jzHF9kcF3xw0fn/Fhx7SHtO3ACqkgEg0TLFoniiN4Klgrz5X6g4VvsORdgwmrR2DY5ZDu2pwpgL7BXaYrIV/RVimbRj627bnqolXYWrDVEOXD3uJXBH4zqpGeEdMwWTnF7Dun67FgZ0vY+KMy7DoXzfC3s9VmHkbV76K6VNdxZjqz4W0HEpUglg0T9SP6BWD29VoO4bu97ujz1ecWQHHxQ44ljigzFJgn25Hmb04/wllujVOfzNhC89dmJMi95wRAsF//Xd0/eJVjD21AfaKq3EnoC0P/puBtVeD2dS6P/EzWIltKa69lnslEhWI4vxtQTRI4WAY3fu6Y0uD2xOuGBwduWLwxvroDJalOjftGApFJlvjLJq8CMufX570/SZhwqIpi4ZquBnreqELMmRGDd6MPWh0oXuy7YT0ELRkiRaKpBz87Fe6z1m6tHCXQ4mGAS4pUsmTUsL7kTd6xaBruwvunW6EvZErBkeWReutlFlaUXv52HKDR104ctmQdCi8e9O7OLH+E3y2Zw5MiNSfDbYXVS6WBONnmnRLlwKXXAIsXJi72a9Un2N06CQaJtj4lIYN3zEfXNtiXdrVHSqCXUEAgKnCBPt0OxwXxuquKs+qhDDxF1E6uWpImm9hXwhvOv6IOv9LOGepL7utdXTJQpS+VDd3LvDMM9nvrxh/7Piu7+FIIBzodkDZfA7DFtGQYA0XlaRAVwBqq7Yk6Nrugtqiwn9Ea1sgygSqJleh7ro6rR3DLAeqJlfBVFb4Re2FJr4hqepT8dTep7LaDmionHxgK0J+BbVXjwJW3jewlg7J6q3mzYttAH3NNb0bpWa6VJduU+tkm2kPJmwNZPNsIsorznBR0Qh5Q3Dv0rbBcW13Qd2uwrvfG32+8jOV0aVBx0wH7DPsMFfmbwPnUpZqj8VCX1784Ovvo/3JY/hs5yW9v/cDXfpLnHGaNi37/RWl1GbIXn1Va9Ogv0dvVqq3cwAGPys1mM2ziSgnuKRIRSUcDKP73W4tWEWK2t173IDWSxTW0dbYsmAkZFlGlVZRu1FSharffe13uO631/XbSsIo4WAYbzW+heqvVOO8J88b3MFS1UGtWJH9/or6ciTQO1zFd4dfvx547bXB110NZvNsIsoJLilSwZJSoudgT3TWyrXDBfdf3Ah39y5qH3/feO2KwWaFRe15km6PxWt+cw3KTMl/ZCRuB2SEk6+cRLAziLrr6gZ/MH0pMj4ArVgxsP0V58/Xglb81jt6J/glS7Si+cTZr4FuJVSsTVuJhgEGLhpyvjZftEO7a5tWdxU8ESlqrzTBPs2O0V8frYWrCyNF7VwGGRLpOsuHwiH4Qr6kz8VvB2SUjqc7YLKZUH1V9eAPlqwOqqlJW07MNhTpnd+F0F6vBy/9OJs29Q5f+vEA7fWXXKK9N5Pl0ELaPJuIejE0cAkhvgrgBwDOBTBLSsl1whLTp1P7NhW+T2Od2m1TbKhbUKctC85SYJtig8nConajpNtjMSiDsJgsCIQDfZ6L3w7ICOFAGB0bOlB7Te3g6/aS1UFdfbVWMD9tmjbTlW0xfrIZMz2k6bNSUvZuD7FyZe/ZLy4HEhU1o2e49gJYAOC/DR4H5UDYF4Z7t7tXS4bu97uBSJlgxZkVGDF7BJRZkZ5X0xWYbSxqLyTpOssDSDnTaHQT1JN/jCwnfi0Hy4mbNvUtMn/mGe3qxC1bgM2bteCTzVJdf1cO6h3hE5uWvvZabKmRy4FERc3QwCWlfA9I/UOcCpcMSXS/3x2dtXLtcMHzjgcyEOnU3miF0hzXqb259Dq1l6JFkxdh2fPLUj5vhhl2qx1SypTbARmh/bftMCtmVF+Zg+XEZHVQJpPWCiJ+b0Igs6W6dFcOArHQlThrNtj2EERUUAriKkUhxJ8A/H2mS4q8SnFoSSnR83FPtImoa5sL7lY3Qm7tkkGzw6wtCTYr0bqr8rHlDNJFKt2G1TaLDf92+b+hoqyiYJqghn3a1Yk1V9fg3MfPNWwcKWV75SCblhIVNcOuUhRCvASgMclT35NSbs7iOHcBuAsAxo8fn6PRUTKBzkC0mF2/cjDQodXtCIuAfbodjbc3QmnSlgarzqlip/ZhwhPw4FPXp/jR5T8yeihRJ54/geDJIOqvrzd6KMllc+Ugm5YSlay8By4p5eU5Os4jAB4BtBmuXByTgJAnBPUvKlxvu6IzWD0He7QnBVB1ThWq51RrPa+aFdgvsMNUzqL2Upaujsvo4vhk2p9qR1l1GUZ9eZTRQ0ku0ysHM116JKKiZHTRPA2hcCAMz15PrB3DdhWedz3Q9/etmFABe5MdY+4aA+VCBUqTgjKFf0WGm0WTF2H588uTPmd0cXyikCeE45uPo+GmhuK/ujVZsX622xIRUcEyui3EtQB+DqAOwBYhxC4p5RVGjqlUyLCEd7831o5hhwq1VYX0aZODZdVlcFzoQO21tVrt1YUOWBusBo+aCoFSrmDr4q0pt/AppE2rjz97HOHuMOpvKNDlxGywaSlRSSuIovlssWi+L1+bT1sWjLRjUHeoCHbFNROdYYfjQkf0isGKMytY1E5puf1urNu7rmCK45PZc80eqK0qLj58MYSZf5+JyHjc2qeEBF3BWEH7Ni1gRZuJmgH7+XbULayD4yIHlFkKqs6tgqmsyJdbaMjZrXZDt+rpT+BEACf+cAJjl4xl2CKigsfAVeBCPSF4dnuiAcv1tgveD73R5ysnVWLE50dAmaktC9qn2wffaZuoCHRs6IAMSDTc0GD0UIiI+sXAVUBkONJMdJsLaqsKdbsK9y53tJmopd4Cx0UONN7SGO17ZalhM1EantrXtqPyM5WwzyisZU4iomQYuAwipYTviE/r0v52JGC1qAipkWaidjPsTXaMWz5Oq7uaqaB8HJuJEgFAzyc9OPnqSUz45wn8N0FERYGBa4gEOgNQd2rhSm8qGnBGmolaBexT7Wi4uUELV7MUVJ3NZqJEqbQ/1Q5IoH5xCVydSETDAgNXHujNRN2tbq3uapsLPR/1RJ+vOrcK1VdUa3VXM7W6K5OVRe1EmWp/sh3KhQqqJlYZPRQioowwcA2SDEl49nmis1Zqiwr3bjegrQzCOtYKxywHxnxjjNapvckOy0jWXRENlGefB+5dbkxcVVgd74mI0mHgyoKUEj2HeqBu1zq1u7a74N7lRtijtWovG1kGpVnB+PvGay0ZmhSUjyk3eNREpcW5xgmYgfpFXE4kouLBwJWG3+nXitl3qDj151NaM9ETkWaiFVoz0dF3jIYyS4HjIgcqz6pkAS9RHsmwhPNJJ6q/XM2dEYioqDBwRQTdwdiSYKsbp/58Cr6PI81EBVB1XhXqFtTB3mSHY5YDtvNtxb93G1GROfXmKfgO+3DGA2cYPRQioqwMy8AVDoS1uqu3tQ2c1RYVnn2xTZzLTyvXtsFZom2DY59u5ybORAXA+YQTpioTaufXGj0UIqKslHyKkGEJ70deqK0qXH/Wrhj07PYg3KOlK0udBUqTgtpra+G4UOt3Za3jUgVRoQn7wuh4ugN1C+pQZi/5H11EVGJK7qeW76hP28C5VY1u5hw8Gam7qjJBaVYw5pvaFYOOixyoOIObOBMVg84tnQieDKLhJm7lQ0TFp6gDV1ANalcM7nBpPa92uGJ1VybAdr4NdV+rg2OWA/YZdtimsO6KqFg51zphabBg5GUjjR4KEVHWijJw9RzqwfbJ29H9fne07qrizAqt7uoehxawptphtnETZ6JSEDgRQOfvOzHmm2NgKuP/NBFR8SnKwBU8FUTlxZWou64OjosdcFzogGUUm4kSlaqOpzsg/RKNtzQaPRQiogEpysBln2rH+c+eb/QwiGiIONc4UXVeFezT7UYPhYhoQDg3T0QFzftXL069cQoNixt4gQsRFS0GLiIqaM41TgBAw2JenUhExYuBi4gKlpQSzsedGPnFkag4vcLo4RARDRgDFxEVLHWHCu8BL3tvEVHRY+AiooLlfMIJUS5Qd12d0UMhIhoUBi4iKkhhfxjO3zhRO68WZSOK8oJqIqIoBi4iKkgnnjuBYGcQjbey9xYRFT8GLiIqSM41TljqLBj15VFGD4WIaNAYuIio4AS6Ajj+7HHU31DP/U+JqCTwJxkRFZz2de2QPm7lQ0Slg4GLiApOdCufGdzKh4hKAwMXERUU70EvXG+60HATt/IhotLBwEVEBcX5hBMQ3MqHiEqLoYFLCPFTIcT7Qoh3hBAbhRAjjRwPERlLSom2x9ow8ksjUTGeW/kQUekweobrRQBTpJQXAPgQwHcNHg8RGcj1lgs9f+1B480sliei0mJo4JJSviClDEbuvg1gnJHjISJjOdc4Yao0oXZBrdFDISLKKaNnuOLdAeA5owdBRMYI9YTQ/lQ7ahfUokzhVj5EVFry/lNNCPESgGTrA9+TUm6OvOZ7AIIA1qY5zl0A7gKA8ePH52GkRGSkzmc6ETwZRONtXE4kotKT98Alpbw83fNCiFsB/A2Ay6SUMs1xHgHwCAA0NzenfB0RFSfnGiesY6wYdSm38iGi0mP0VYpXArgPwDVSym4jx0JExvF3+HHiuRNouLEBwszeW0RUeoyu4foFAAXAi0KIXUKI/zJ4PERkgPYn2yGDEg23svcWEZUmQytTpZQTjfx8IioMbY+1wd5kh30Kt/IhotJk9AwXEQ1znnc9cP/Fzd5bRFTSy93I3QAAC/xJREFUGLiIyFDOJ5yAGai/vt7ooRAR5Q0DFxEZJhwMo+2xNtTMqYG1wWr0cIiI8oaBi4gMc/KPJ+E/5kfjrVxOJKLSxsBFRIZxrnHCPMKM6rnVRg+FiCivGLiIyBBBNYiO9R2o/1o9zBVmo4dDRJRXDFxEZIiOpzsQ7g6j8XYuJxJR6WPgIiJDOJ9wonJSJRwXOYweChFR3jFwEdGQ6zncg5OvnkTDTQ0Qglv5EFHpY+AioiHX9ngbIIGGm7iVDxENDwxcRDSkpJRwPubEyEtHovLMSqOHQ0Q0JBi4iGhIqdtVeA940XAzZ7eIaPhg4CKiIdX2eBtMFSbULawzeihEREOGgYuIhkyoJ4T2J9tRu6AWZY4yo4dDRDRkGLiIaMh0PtOJ4Mkge28R0bDDwEVEQ8a5xgnrGCtGXTrK6KEQEQ0pBi4iGhL+dj9OPHcCDTc2QJjZe4uIhhcGLiIaEs41Tsig5HIiEQ1LDFxENCTaHm+DMkuB7Tyb0UMhIhpyDFxElHfuvW54dnvQsJi9t4hoeGLgIqK8a3u0DaJMoP76eqOHQkRkCAYuIsqrcCAM5xNO1FxdA2u91ejhEBEZgoGLiPKq68UuBNoDaLyVxfJENHwxcBFRXjmfcKJsVBmqr6o2eihERIZh4CKivAl0BdCxsQP1N9TDZOWPGyIavvgTkIjypn1dO6RPYvSdo40eChGRoRi4iChvnGucqDqvCvbpdqOHQkRkKAYuIsoL70deuN50oeGmBgjBrXyIaHhj4CKivDj2P8cAE9BwM5udEhExcBFRzsmwhPMJJ6qvqEbFuAqjh0NEZDhDA5cQ4l+FEO8IIXYJIV4QQowxcjxElBunXj8F3yc+NNzE2S0iIsD4Ga6fSikvkFJOA/B7AN83eDxElANtj7XBbDejdl6t0UMhIioIhgYuKaUr7q4NgDRqLESUG0E1iPZ17ai/vh5mm9no4RARFYQyowcghHgAwC0ATgG41ODhENEgHd94HOHuMBpv41Y+RES6vM9wCSFeEkLsTXKbBwBSyu9JKU8DsBbA36U5zl1CiBYhREtHR0e+h01EA+Rc40TFhAo4PusweihERAUj7zNcUsrLM3zpkwC2APjnFMd5BMAjANDc3MylR6IC1HO4B10vdeH0fzydvbeIiOIYfZXipLi71wB436ixENHgtT3WBkig8Q4uJxIRxTO6huvHQoizAYQBfAzgbw0eDxENkJQSzjVOjPziSFROqDR6OEREBcXQwCWlXGjk5xNR7qg7VHg/9OK0fzjN6KEQERUco/twEVGJOPbrYzBVmlD/1Xqjh0JEVHAYuIho0ELeENqfakfdV+tQNsLoSgUiosLDwEVEg9a5pRMhV4gbVRMRpcDARUSD5nzcCetoK0ZdOsrooRARFSQGLiIaFN9RHzq3dKLx1kYIM3tvERElw8BFRIPiXOsEwuy9RUSUDgMXEQ1K+5PtUGYqqJpUZfRQiIgKFgMXEQ2Ye7cb7l1uFssTEfWDgYuIBuzY6mMQ5QINixm4iIjSYeAiogEJB8Jw/saJ2nm1sFRbjB4OEVFBY+AiogHpeqELwc4gZ7eIiDLAwEVEA3Ls18dgqbWg+spqo4dCRFTwGLiIKGv+dj86n+1E422NMFn5Y4SIqD/8SUlEWet4ugMyKNFwK5cTiYgywcBFRFlzrnHCdr4N9il2o4dCRFQUGLiIKCvuPW643nah8TZ2liciyhQDFxFlpe3RNgiLQOOtDFxERJli4CKijMmQRPtT7ai+shqWGvbeIiLKFAMXEWWs649d8B/1o+EmFssTEWWDgYuIMnbskWMoqy5D7bxao4dCRFRUGLiIKCOBkwEcf+Y4Gm5ugKmcPzqIiLLBn5pElJHjG45D+iUabuRyIhFRthi4iCgjx/7nGCo/UwllpmL0UIiIig4DFxH1y/OeB643XRj9jdEQQhg9HCKiosPARUT9cq51Aiag8Wb23iIiGggGLiJKS0qJ9ifbMeqyUbA2WI0eDhFRUWLgIqK0Tv7xJHr+2oOGW1gsT0Q0UAxcRJTWsV8fQ9moMtRdV2f0UIiIihYDFxGlFPKEcHzzcdR9rQ7mCrPRwyEiKloMXESUUsfGDoS7w2i4gcuJRESDURCBSwjx90IIKYTgfiFEBeTYI8dQcVYFRnx+hNFDISIqaoYHLiHEaQC+DOCw0WMhohjvR16cev0UxnxjDISJvbeIiAbD8MAFYCWAewFIowdCRDHtT7UDAOpvqDd4JERExc/QwCWEuAbAESnlbiPHQUR9db3chRGfH4GK8RVGD4WIqOiV5fsDhBAvAUjWnvp7AP4vgK9keJy7ANwVuesTQuzNzQhLRi2A40YPosDwnCSX3XkZHquJ/LvSF89JcjwvffGc9HZ6sgeFlMas5AkhzgfwMoDuyEPjABwFMEtK2dbPe1uklM15HmJR4Tnpi+ckOZ6XvnhO+uI5SY7npS+ek8zkfYYrFSnlHgDR4hAhxCEAzVJKpmQiIiIqKYVQNE9ERERU0gyb4UokpZyQxcsfydc4ihjPSV88J8nxvPTFc9IXz0lyPC998ZxkwLAaLiIiIqLhgkuKRERERHlW1IGLWwL1JoT4VyHEO0KIXUKIF4QQY4wek9GEED8VQrwfOS8bhRAjjR6T0YQQXxVC7BNChIUQw/rKIiHElUKID4QQB4QQ9xs9nkIghPgfIUQ7W+/ECCFOE0K8IoR4L/JvZ6nRYzKaEKJCCLFdCLE7ck7+n9FjKnRFG7i4JVBSP5VSXiClnAbg9wC+b/SACsCLAKZIKS8A8CGA7xo8nkKwF8ACAK8ZPRAjCSHMAH4J4CoA5wG4QQhxnrGjKgiPArjS6EEUmCCA70gpzwVwEYBv8+8KfAC+JKWcCmAagCuFEBcZPKaCVrSBC9wSqA8ppSvurg08N5BSviClDEbuvg2t39uwJqV8T0r5gdHjKACzAByQUh6UUvoBPAVgnsFjMpyU8jUAJ4weRyGRUh6TUu6M/FkF8B6AscaOylhS447ctURuw/53TjpFGbi4JVBqQogHhBCfAFgMznAlugPAc0YPggrGWACfxN3/FMP8lyj1TwgxAcB0ANuMHYnxhBBmIcQuAO0AXpRSDvtzkk7BtIVIlKstgUpNuvMipdwspfwegO+J/9/e/btaXcdxHH++BoVCcYgEh0CFi4uBtUlLlFJIKIGDSzS03iFwkLjDlX5Qk4M0NNR4E4QUQoeLgzY5CGJW2NR0/wDhotAQ74bvVxC911PDx8/xfp+P6ZzDd3jx5XC+r+/5fL6fT/IZsAgsP9eAHcw6J+MxSwzDAivPM1sv/+WcaMNNi7xD16aS7AB+Aj59YkRhkqrqH+DQODf2cpKDVeXcv03MbeGqqiMbfT5uCbQP+DUJDENEt5PM3BJoK9jsvGzgR+AqEyhcs85Jko+BD4B3ayLroPyP78mUrQGvPfb+0fZi0lOSbGMoWytVdal3nnlSVfeT3GCY+2fh2sQLN6RYVb9V1e6q2jsulroGvDmFsjVLkoXH3h4H/uyVZV4keR84Axyvqoezjtek3AIWkuxLsh04BfzcOZPmUIa7+x+Ae1V1rneeeZDk1UdPfSd5CTiC15xneuEKl57pmyS/J7nLMOQ6+UeXgW+BncC1cbmM73oH6i3Jh0nWgMPA1SSrvTP1MD5MsQisMkyCvlhVf/RN1V+SC8BN4ECStSSf9M40B94CPgLeGX9H7iQ51jtUZ3uA6+P15hbDHK4rnTPNNVealyRJasx/uCRJkhqzcEmSJDVm4ZIkSWrMwiVJktSYhUuSJKkxC5ckSVJjFi5JkqTGLFySJiXJ9SRHx9dfJjnfO5OkrW9u91KUpEaWgc+T7AbeYNgGS5KacqV5SZOT5BdgB/B2Va0n2Q8sAbuq6mTfdJK2IocUJU1KktcZ9oH7u6rWAarqr6pyz0BJzVi4JE1Gkj3ACnACeJDkvc6RJE2EhUvSJCR5GbgEnK6qe8AXwNmuoSRNhnO4JE1ekleAr4CjwPdV9XXnSJK2GAuXJElSYw4pSpIkNWbhkiRJaszCJUmS1JiFS5IkqTELlyRJUmMWLkmSpMYsXJIkSY1ZuCRJkhqzcEmSJDX2L5Os/ZtFxd0WAAAAAElFTkSuQmCC\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "fig = plot_data_for_classification(Xbnp, Ybn, xlabel=r'$x_1$', ylabel=r'$x_2$')\n", + "plot_decision_boundary(fig, theta, Xbnp, xmin=-4.0, xmax=4.0)" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "metadata": { + "scrolled": true, + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + ":8: UserWarning: The following kwargs were not used by contour: 'lw'\n", + " plt.contour(x1, x2, p_diff, levels=[0.0], colors='c', lw=3);\n", + ":10: UserWarning: The following kwargs were not used by contour: 'lw'\n", + " plt.contour(xx, yy, z, levels=[0.5], colors='m', lw=3);\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "fig = plot_data_for_classification(Xbn, Ybn, xlabel=r'$x_1$', ylabel=r'$x_2$')\n", + "plot_decision_boundary_bayes(fig, X_mean, X_std, xmin=-4.0, xmax=4.0, ymin=-4.0, ymax=4.0)\n", + "plot_decision_boundary(fig, theta, Xbnp, xmin=-4.0, xmax=4.0)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "* Naiwny klasyfikator Bayesa nie działa, jeżeli dane nie różnią się ani średnią, ani odchyleniem standardowym." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "## 8.2. Algorytm $k$ najbliższych sąsiadów" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "### KNN – intuicja" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "source": [ + "* Do której kategorii powinien należeć punkt oznaczony gwiazdką?" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "metadata": { + "slideshow": { + "slide_type": "notes" + } + }, + "outputs": [], + "source": [ + "# Przydatne importy\n", + "\n", + "import ipywidgets as widgets\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "import pandas\n", + "\n", + "%matplotlib inline" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "metadata": { + "slideshow": { + "slide_type": "notes" + } + }, + "outputs": [], + "source": [ + "# Wczytanie danych (gatunki kosaćców)\n", + "\n", + "data_iris = pandas.read_csv('iris.csv')\n", + "data_iris_setosa = pandas.DataFrame()\n", + "data_iris_setosa['dł. płatka'] = data_iris['pl'] # \"pl\" oznacza \"petal length\"\n", + "data_iris_setosa['szer. płatka'] = data_iris['pw'] # \"pw\" oznacza \"petal width\"\n", + "data_iris_setosa['Iris setosa?'] = data_iris['Gatunek'].apply(lambda x: 1 if x=='Iris-setosa' else 0)\n", + "\n", + "m, n_plus_1 = data_iris_setosa.values.shape\n", + "n = n_plus_1 - 1\n", + "Xn = data_iris_setosa.values[:, 0:n].reshape(m, n)\n", + "\n", + "X = np.matrix(np.concatenate((np.ones((m, 1)), Xn), axis=1)).reshape(m, n_plus_1)\n", + "Y = np.matrix(data_iris_setosa.values[:, 2]).reshape(m, 1)" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "metadata": { + "slideshow": { + "slide_type": "notes" + } + }, + "outputs": [], + "source": [ + "# Wykres danych (wersja macierzowa)\n", + "def plot_data_for_classification(X, Y, xlabel, ylabel): \n", + " fig = plt.figure(figsize=(16*.6, 9*.6))\n", + " ax = fig.add_subplot(111)\n", + " fig.subplots_adjust(left=0.1, right=0.9, bottom=0.1, top=0.9)\n", + " X = X.tolist()\n", + " Y = Y.tolist()\n", + " X1n = [x[1] for x, y in zip(X, Y) if y[0] == 0]\n", + " X1p = [x[1] for x, y in zip(X, Y) if y[0] == 1]\n", + " X2n = [x[2] for x, y in zip(X, Y) if y[0] == 0]\n", + " X2p = [x[2] for x, y in zip(X, Y) if y[0] == 1]\n", + " ax.scatter(X1n, X2n, c='r', marker='x', s=50, label='Dane')\n", + " ax.scatter(X1p, X2p, c='g', marker='o', s=50, label='Dane')\n", + " \n", + " ax.set_xlabel(xlabel)\n", + " ax.set_ylabel(ylabel)\n", + " ax.margins(.05, .05)\n", + " return fig" + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "metadata": { + "slideshow": { + "slide_type": "notes" + } + }, + "outputs": [], + "source": [ + "def plot_new_example(fig, x, y):\n", + " ax = fig.axes[0]\n", + " ax.scatter([x], [y], c='k', marker='*', s=100, label='?')" + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAlwAAAFkCAYAAAD13eXtAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nO3dfZRddX3v8c83mYAhGURJbIAQw0PEAtVJJiJWLOAzYGEyhQRqK7YsU1psR7QrEG/lqr01rNx7nQ6WYilayL2KITIEFmDxAdRwhUoSEiQ8BZSUNCCCApPISjLnfO8f+xzmzMw5Z++Zs5/OOe/XWnvN7Ifz29/9myzOl71/+/c1dxcAAACSMyXrAAAAAFodCRcAAEDCSLgAAAASRsIFAACQMBIuAACAhJFwAQAAJKwj6wAmatasWT5//vyswwAAABhl06ZNL7j77Gr7mi7hmj9/vjZu3Jh1GAAAAKOY2Y5a+3ikCAAAkDASLgAAgISRcAEAACSMhAsAACBhJFwAAAAJI+ECAABIGAkXAABAwki4AAAAEpZYwmVmR5rZPWb2qJltM7O+KsecZmYvm9mW0nJFUvEAAJAId+mWW4KfUbYndY404sCkJXmHa1jSZ9z9dyWdLOkSMzu+ynEb3L2rtHwxwXgAAIjf+vVSb6906aUjSY17sN7bG+xP4xxpxIFJS6y0j7s/K+nZ0u9DZvaopCMkPZLUOQEASF1Pj9TXJw0MBOv9/UGSMzAQbO/pSe8cSceBSTNP4Rajmc2X9GNJJ7r7KxXbT5N0s6SdknZJ+lt331avrcWLFzu1FAEAuVK+k1ROdqQgyenvl8zSO0cacaAmM9vk7our7ks64TKzmZJ+JOkf3H1wzL6DJRXdfbeZnSlpwN0XVGljuaTlkjRv3rzuHTtq1oYEACAb7tKUipE6xWL8SU6Uc6QRB6qql3Al+paimU1TcAfrG2OTLUly91fcfXfp9zslTTOzWVWOu9bdF7v74tmzZycZMgAAE1e+s1SpcixVWudIIw5MSpJvKZqkr0l61N2/XOOYOaXjZGYnleJ5MamYAACIXeVjvL6+4I5SeSxVXMlOlHOkEQcmLbFB85LeLelPJf3MzLaUtn1W0jxJcvevSjpX0l+a2bCkVyWd72kMKgMAIC7r148kOeWxUv39wb6BAenUU6UlS5I/R/n3JOPApKUyaD5ODJoHAOSKe5AQ9fSMHitVa3tS55CSjwN1ZTpoPm4kXAAAII8yGzQPAAAAEi4AAIDEkXABANLXLHX/ikXpssuCn1G2AzWQcAEA0tcsdf9WrpRWr5a6u0eSq2IxWF+9OtgPREDCBQBIX2VtwHLSlce6f6tWSV1d0pYtI0lXd3ew3tUV7AciSHIeLgAAqhs7R1S59l/e6v5NmSJt2jSSZE2dGmzv6gq2T+G+BaJhWggAQHaape5fsTiSbElSoUCyhXGYFgIAkD/NUvev/BixUuWYLiACEi4AQPqape7f2DFbhcL4MV1ABCRcAID01aoNWE668vSWYjnZKo/Z2rRpJOniLUVExBguAED60qg/GIdiMUiqVq0aP9as2na0NWopAgAAJIxB8wAAABki4QIApC+stE+xGF76J4420riWKOfJSxutJG/94e5NtXR3dzsAoMkNDgYpU1+fe7EYbCsWg3XJfcWK+vsHB+NpI41riXKevLTRSjLoD0kbvUb+knkCNdGFhAsAWkDlF1/5C7FyvVCov79YjKeNNK4lynny0kYryaA/SLgAAPlT+QVYXmrdjai2P6420riWZmqjlaTcH/USLt5SBABkx0NK+4Ttj6uNOMRxnry00UpS7A/eUgQA5I+HlPYJ2x9XG3GI4zx5aaOV5Kk/at36yuvCI0UAaAGM4cpnG62EMVwkXADQ9nhLMZ9ttBLeUiThAoC2VywGX3hj7zKUtxcK9feX73A12kYa1xL17lQe2mglGfRHvYSLQfMAAAAxYNA8AABAhki4AAAAEkbCBQBALR5DPb442mg3LdhnJFwAANSyfr3U21t9bq/e3mB/Gm20mxbss46sAwAAILd6eqS+PmlgIFjv7w++9AcGgu09Pem00W5asM94SxEAgHrKd1bKX/5S8KXf3x+9REwcbbSbJuyzem8pknABABDGqXGYiSbrM6aFAABgssp3WipR4zB5LdZnJFwAANRS+Virry+4w1IeWxT1yz+ONtpNC/YZg+YBAKhl/fqRL/3y2KH+/mDfwIB06qnSkiXJt9FuWrDPGMMFAEAt7sGXf0/P6LFDtbYn1Ua7adI+Y9A8AABAwhg0DwAAkCESLgAAgISRcAEAWlOUenxhxxSLjbdBvcXR2ulaK5BwAQBaU5R6fGHHrFzZeBvUWxytna61krs31dLd3e0AAIQqFt37+oJ7UH191dfDjikUGm+jWIwn1lbRwtcqaaPXyF8yT6AmupBwAQAiq/wyLy9jv9TDjomjjbhibRUteq31Ei6mhQAAtDaPUI8v7Jg42ogr1lbRgtfKtBAAgPbkEerxhR0TRxtxxdoq2ulay2rd+srrwiNFAEAkjOHKpxa+VjGGCwDQdgYHx3+JV365Dw6GH7NiReNtDA7GE2uraOFrrZdwMYYLANCaPEI9Pqn+MeecI916a2NtUG9xtBa+VmopAgAAJIxB8wAAABki4QIAAEhYYgmXmR1pZveY2aNmts3M+qocY2Z2lZk9aWYPmdmipOIBAMTEU6g/GKUNpC/s7xbX3yWt86QoyTtcw5I+4+6/K+lkSZeY2fFjjjlD0oLSslzSNQnGAwCIQxr1B6O0gfSlVQexFest1np9Me5F0q2SPjBm279IuqBi/XFJh9Vrh2khACBjacxdFaUNpC+tObSadK4uZT0Pl6T5kv5T0sFjtt8u6ZSK9R9IWlyvLRIuAMiBNOoPtmi9vaaX1t+lCf/+9RKuxKeFMLOZkn4k6R/cfXDMvjskrXL3e0vrP5C0wt03jTluuYJHjpo3b173jh07Eo0ZABCBp1B/MEobSF9af5cm+/tnNi2EmU2TdLOkb4xNtkp2SjqyYn2upF1jD3L3a919sbsvnj17djLBAgCiK4+nqRR3/cEobSB9af1dWu3vX+vWV6OLJJO0RtI/1jnmLEnfKR17sqSfhrXLI0UAyBhjuNoXY7jqUhZjuCSdIsklPSRpS2k5U9LFki72kaTsaklPSfqZQsZvOQkXAGQvjfqDUdpA+tKqg9ik9RbrJVyU9gEATIyH1MKLo/5glDZyPJanZYX97eP6u6R1nphRSxEAACBh1FIEAADIEAkXAABAwki4AADx8gh18IpF6bLLgp+Vam2f7HnaCf2RayRcAIB4RamDt3KltHq11N09klwVi8H66tXB/jjO007oj3yr9fpiXhemhQCAnIsyh1Kh4N7VFWzr6qq+Hsd52gn9kTkxLQQAIFXlOysDAyPb+vqk/v6R1/nLd7S2bBk5pqtL2rRpdDmXRs/TTuiPTDEtBAAgfR6hDl6xKE2dOrJeKERPtiZynnZCf2SGaSEAAOkq32mpNLYOXvkOV6XKMV1xnaed0B+5RcIFAIhX5WOtvr4ggerrC9bLX/6VjxO7uoI7W11dwXrUpCvKedoJ/ZFvtQZ35XVh0DwA5FyUOnjlWomVA+QrB86vWBHPedoJ/ZE5MWgeAJAaj1AHzz2Y+mHVqvHjjaptn+x52mnsEv2ROQbNAwAAJIxB8wAAABki4QIAjCgUpCVLgp+1trdSWZ6waykUGo8zjmtNq7/y8ndpRbUGd+V1YdA8ACSopycYYD1rlvvwcLBteDhYl4L9rTTgPexayv3RSJxxXGta/ZWXv0uTUp1B85knUBNdSLgAIEGVyVU56Rq73kplecKuZXi48TjjuNa0+isvf5cmRcIFAIiuMskqL5V3vNxHJyblJWqyVVb5ZV5esvhSD7uWOOLMSxt5Ok8Lqpdw8ZYiAGC8QkHq6BhZHx4eXYJHaq2yPGHXEkeceWkjT+dpMbylCACIrlCQ5swZvW3OnNED6VupLE/YtcQRZ17ayNN52k2tW195XXikCAAJYgwXY7jy8HdpUmIMFwAgEt5S5C3FPPxdmhQJFwAgmuHhIMmoHCA/dnuhECQqY+9k1dpeTbEYfHmPvWNSa3tSwq5leLjxOOO41rT6Ky9/lyZVL+Fi0DwAAEAMGDQPAACQIRIuAACAhJFwAUCz8Capc9cscQIpIuECgGaxfr3U2zt6TiQvzZnU2xvsz4NmiRNIUUf4IQCAXOjpkfr6pIGBYL2/P0hiBgaC7T092cZX1ixxAiniLUUAaCblO0XlZEYKkpj+/nyVXmmWOIEY1XtLkYQLAJqNN0mdu2aJE4gJ00IAQKso3zmqlMc6d80SJ5ASEi4AaBaVj+n6+oI7RuWxUnlKZpolTiBFDJoHgGaxfv1IElMeC9XfH+wbGJBOPVVasiTbGKXmiRNIEWO4AKBZuAfJTE/P6LFQtbZnpVniBGLGoHkAAICEMWgeAAAgQyRcAAAACSPhAoBmEUeNwrzUOcxLHGlop2tFTSRcANAs4qhRmJc6h3mJIw3tdK2ozd2baunu7nYAaEvFontfn7sU/Ky2nkYbcchLHGlop2ttc5I2eo38hbcUAaCZxFGjMC91DvMSRxra6VrbGNNCAEAriaNGYV7qHOYljjS007W2KaaFAIBWEUeNwrzUOcxLHGlop2tFVSRcANAs4qhRmJc6h3mJIw3tdK2ordbgrrwuDJoH0LYGB8cPtK4cgD04mE4bcchLHGlop2ttc2LQPAC0AI+hRmEcbcQhL3GkoZ2utc0xaB4AACBhDJoHAADIEAkXAABAwiInXGb2JjObV14iHP91M3vezB6usf80M3vZzLaUlismEjgA5IanVCtv/35pwYLgZ7Xt+/aFxxFHrMWidNllwc9q2wuFdOIAmkmt0fTlRdLZkrZL2iPpF5KKkrZF+NwfSFok6eEa+0+TdHtYO2MX3lIEkDtpvYV27LFBe1Onuu/bF2zbty9Yl9znzAmPI45YV6wIju3qci8Ugm2FQrAuuff0pBMHkDOq85ZilIRrq6RDJT1YWj9d0rVhnysdO5+EC0DLS6tWXmVyVU66Ktf37g2PI45YK5OrctJVuT48nE4cQM40mnBt9JHEa0rp95+Gfc6jJVwvltr9jqQTorRJwgUglyoThvKSROJQmWSVl8o7XlHiiCPWyiSrvFTe8UorDiBH6iVcodNCmNn3JfVIWiVplqTnJb3D3X8/7HGlmc0v3cU6scq+gyUV3X23mZ0pacDdF9RoZ7mk5ZI0b9687h07doSdGgDS5ynVytu/XzrggJH1ffukadMmFkccsRaL0tSpI+uFwug204oDyIlGp4U4R9Krki6V9O+SnpL0kUaDcvdX3H136fc7JU0zs1k1jr3W3Re7++LZs2c3emoAiJ+nVCtv/35p+vTR26ZPHxlIHyWOOGItFqXu7tHburtHBtKnFQfQLGrd+iovki6qsu3KsM95+CPFORqZePUkSf9ZXq+38EgRQO4whosxXIDXf6QYJWn6jqSPVqxfLelrET53o6RnJe2XtFPSRZIulnRxaf8nJW1TMIbrfkm/H9amk3AByCPeUuQtRcAbT7imS/qepAskrZH0j2GfSXIh4QKQO8VikCCMvStTa/tk7dsXJF3lZGvs9r17w+OII9ZCIUi6ysnW2O3Dw+nEAeRMvYSr5qB5M3tjxWqnpPWS/p+kK0qPIn89qWeYDaKWIgAAyKN6g+Y76nxukySXZBU/zyotLunomOMEAABoSTXfUnT3o9z9aEm/6+5Hl9aPcvejJB2fXogAMEnuzVM+Jqxcztjt1US53jjK8rSTZvo3hFyLMi3ETyJuA4B8Wb9e6u0dPdWAl6Yi6O0N9ufFypXS6tWjp1YoT72wenWwP0yU6w07z7nnNk+fpaGZ/g0h32oN7lIwbUO3pEclLVRQF3GRghniH6v1uaQXBs0DiKyZph4Im2ph7AD1aqJcbxxTOrSTZvo3hMxpMm8pSrpQ0j2Shko/y8ttknprfS7phYQLwIQ0U/mYsHI5UUS53jjK8rQT+gMR1Uu4opT2+SN3vzn+e2uTw1uKACbMm6h8TFi5nCiiXG8cZXnaCf2BCBoq7ePuN5vZWWa2wsyuKC/xhwkACSiPt6mU1/IxYeVyoohyvXGU5Wkn9AdiEJpwmdlXJS2T9NcKpoY4T9KbE44LABpX/qIcGJD6+oKEoq8vWM/bF2Y5CdqyRerqCu44dXUF61GTrijXG3aeQqF5+iwNzfRvCPlW61ljeZH00JifMyV9N+xzSS2M4QIQWTOVjwkrl7NiRXgbUa43jrI87aSZ/g0hc2qwtM9/lH7eL+lwSQdK2h72uaQWEi4AkTVT+ZiwcjlR31IMu944yvK0k2b6N4TM1Uu4ogya/5ykr0h6n4LC1S7pOnf/XPz328IxaB4AAOTRZEv7lF0paaYHg+dvl/Q6d3851ggBAABaWM2Ey8x6S7/OldRrZldV7JO7DyYdHAAAQCuo95biH5aWhZKek3RVxbaPJB8agJbmOalRVyhIS5YEP6tt378/vMZhlDqIcdQwDOuzYjEffQpgvFqDu8Yuks6NemySC4PmgRaRl7e/ym/lzZoVDBh3D37OmhVsP/bY8LcHo7xhGMfbgWF9Vj5H1n0KtCk1+JbioQrubj0oaZOkAUmHhn0uqYWEC2gRealRV5lclZOuyvV9+8JrHEapgxhHDcOwPisU8tGnQJtqNOH6nqTPSTqqtPydpO+HfS6phYQLaCF5qVFXmWSVl8o7XlFqHMZxTJT+CDsmL30KtKF6CVeUaSE2uXv3mG0bvcZrj0ljWgigxXhOatQVClJHxXtEw8Ojaw1GqXEYxzFR+iPsmLz0KdBmGqqlKOkeMzvfzKaUlqWS7og3RABtyXNSo65QkObMGb1tzpyRgfRRahzGcUyU/gg7Ji99CmC0Wre+youkIUlFSftLS7G0bUjSK2Gfj3vhkSLQIhjDxRguoMWokTFceVtIuIAWwVuKvKUItBgSLgD5k5cadcPDQbJTTrbGbt+3L7zGYZQ6iHHUMAzrs0IhH30KtKl6CVfooPm8YdA8AADIo0YHzQMAAKABJFwAAAAJm1TCZWa3xx0IAMTOQ2oPeoT6hFGGXeSljSjSOg+AUeomXGY21cz+Z5Vdn0goHgCIz/r1Um9v9XmqenuD/VGOieM8abQRRVrnATBardH05UXS3VIwuD4PC28pAogsylxfccwHlpc2osjL/GdAC1KDpX3+t6QFktZJ2lORqA0mlwbWxluKACakfPdmYGBkW1+f1N8/Uu4myjFxnCeNNvJ0HqDN1HtLMUrC9W9VNru7/3kcwU0UCReACfMY6hPGdZ402sjTeYA20tC0EO7+Z1WWTJItAJiw8t2cShOtTxjXedJoI0/nAfCa0ITLzN5iZj8ws4dL628zs79LPjQAaFDlo7O+vuAuTl9fsF5OMKIcE8d50mgjirTOA2C0WoO7youkH0k6SdKDFdseDvtcUguD5gFEFqVeYxw1HfPSRhR5qWEJtCA1OGj+AXd/h5k96O4LS9u2uHtXsqlgdYzhAhCZezDNQU/P6PFJldul8GPCxjZFOU8abUSR1nmANtTooPnvSPqkpHXuvsjMzpV0kbufEX+o4Ui4AABAHtVLuDoifP4SSddKequZ/ZekX0j6kxjjAwAAaGmhCZe7/1zS+81shqQp7j6UfFgAAACtI8pbigUzu1LSb8vJlpltTjwyAOM5dfBGCeuPYpH+ApALUYpXbysd910ze2NpGyMqgSxQB2+0sP5YuZL+ApALUcZwDbv7CjNbKmmDmX1MEv9bCGShp2dkziQpKMVSOadS+a27dhHWH6tWSXv30l8AMhflLcXK6SBOkHSjpHnufkgK8Y3DW4poe9TBGy2sP+gvAClpdFqIbnffVLF+sKQed18Tb5jRkHABog7eWGH9QX8BSEFDtRQlHW1mnaWG/k7S9ZIeji88ABNCHbzRwvqD/gKQA1ESrs+5+5CZnSLpQ5JukHRNsmEBqIo6eKOF9UexSH8ByIUog+YLpZ9nSbrG3W81s88nFxKAmtavH0keymOQ+vuDfQMD0qmnSkuWZBtjmsL648AD6S8AuRBlDNftkv5L0vsldUt6VdJP3f3tyYc3HmO40NaogzdaWH+cc4506630F4BUNDpo/iBJH5b0M3ffbmaHSfo9d/9u/KGGI+ECAAB51FAtRXf/raTBivVnJT0bX3gAAACtLcqgeQAAADQgsYTLzL5uZs+bWdUpJCxwlZk9aWYPmdmipGIBMAHFonTZZcHPKNuTaiOtupHUYwSQgiTvcF2vYOxXLWdIWlBaloupJoB8WLlSWr1a6u4eSYyKxWB99epgfxptpFU3knqMANLg7oktkuZLerjGvn+RdEHF+uOSDgtrs7u72wEkqFBw7+pyl4Kf1dbTaKNYdO/rCz7T11d9PQ5h5ykU0okDQNOTtNFr5C9R5uFKyhGSnqlY31naxoB8IEtTpkibNgV3o7ZskaZODbZ3dQXbp0S4MR5HG2PnzCrXQoy7DmKU86QRB4CWFjotREONm82XdLu7n1hl3x2SVrn7vaX1H0ha4RV1GyuOXa7gsaPmzZvXvWPHjsRiBlBSLI4kSpJUKERLlOJuI606iNRjBNCgRmspJmWnpCMr1udK2lXtQHe/1t0Xu/vi2bNnpxIc0NbK460qVY7HSquNtOogUo8RQMKyTLhuk/Sx0tuKJ0t62YM5vgBkqZwobdkSPAIsFIKfW7ZET5jiaCOtupHUYwSQhlqDuxpdJN2oYDzWfgV3sy6SdLGki0v7TdLVkp6S9DNJi6O0y6B5IGErVowf3F456H3FinTaGBwcPzC9csD64ODkrm+i5ylfS9JxAGh6qjNoPtExXEmgtA+QsGIxmAph1arxY5aqbU+qDU+pbmTYeajHCCCihmop5g0JFwAAyKO8DpoH2tbLL7+sE044QS+//HLWoQAAUkDCBWTg9ttv1yOPPKI77rgj61AAACkg4QIycMMNN4z6CQBobVnONA+0jcHBQf3whz98bf3HP/6xJOlHP/qR/uZv/ua17aeddpp6e3vTDg8AkDASLiAF+/fv1zXXXKPh4eFR2/fu3auvfOUrkqSOjg6dcsopWYQHAEgYjxSBFCxbtkxbt27V0UcfrenTp4/aN336dB199NHaunWrli5dmlGEAIAkcYcLSMnxxx+vTZs2adasWaO279u3T5s3b9brX//6jCIDACSNO1xAijZs2KCDDjpIHR0dmjp1qjo6OnTQQQdpw4YNWYcGAEgQCReQojVr1mj37t1auHChfvKTn2jhwoXavXu31qxZk3VoAIAEkXABKdq+fbuuuOIK3XfffTrppJN033336YorrtD27duzDg0AkCBK+wAAAMSA0j4AAAAZIuECAABIGAkXAABAwki4AAAAEkbCBQAAkDASLgAAgISRcAEAACSMhAsAACBhJFwAAAAJI+ECAABIGAkXAABAwki4AAAAEkbCBQAAkDASLgAAgISRcAEAACSMhAsAACBhJFwAAAAJI+ECAABIGAkXAABAwki4AAAAEkbCBQAAkDASLgAAgISRcAEAACSMhAsAACBhJFwAAAAJI+ECAABIWEfWASAZQ3uHtHbbWm1/cbsWHLpAy05Yps4DO7MOCwCAtkTC1YLu/c97deY3zlTRi9qzf49mTJuhT9/1ad350Tt1yrxTsg4PAIC2wyPFFjO0d0hnfuNMDe0b0p79eyRJe/bv0dC+YPvufbszjhAAgPZDwtVi1m5bq6IXq+4relFrH16bckQAAICEq8Vsf3H7a3e2xtqzf4+e/PWTKUcEAABIuFrMgkMXaMa0GVX3zZg2Q8e+8diUIwIAACRcLWbZCcs0xar/WafYFC07cVnKEQEAABKuFtN5YKfu/Oid6jyg87U7XTOmzVDnAcH2mQfMzDhCAADaD9NCtKBT5p2iXZ/ZpbUPr9WTv35Sx77xWC07cRnJFgAAGSHhalEzD5ipixZdlHUYAABAPFIEAABIHAkXAABAwhJNuMzsw2b2uJk9aWaXV9l/mpm9bGZbSssVScaD0Yb2Dum6zdfpsu9dpus2X6ehvUNZhwQAQEtKbAyXmU2VdLWkD0jaKekBM7vN3R8Zc+gGd/9IUnGgOuotAgCQniTvcJ0k6Ul3/7m775P0LUnnJHg+RES9RQAA0pVkwnWEpGcq1neWto31LjPbambfMbMTEowHJdRbBAAgXUlOC2FVtvmY9c2S3uzuu83sTEnrJS0Y15DZcknLJWnevHlxx9l2qLcIAEC6krzDtVPSkRXrcyXtqjzA3V9x992l3++UNM3MZo1tyN2vdffF7r549uzZCYbcHqi3CABAupJMuB6QtMDMjjKzAySdL+m2ygPMbI6ZWen3k0rxvJhgTBD1FgEASFtiCZe7D0v6pKS7JD0q6SZ332ZmF5vZxaXDzpX0sJltlXSVpPPdfexjR8SMeosAAKTLmi2/Wbx4sW/cuDHrMFrC7n27qbcIAEBMzGyTuy+uto9aim2MeosAAKSD0j4AAAAJ4w5XBob2DmnttrXa/uJ2LTh0gZadsEydB3ZOqI0nXnhCH1//cf3ipV/oqEOO0vU91+sts94yoXPEEUccbQAA0OoYw5WyaiV1ptiUCZXU+fRdn1b//f3jtl968qX68oe+HOkcccQRRxsAALSKemO4SLhSNLR3SEd8+QgN7RtfJLrzgE7t+syu0EHrT7zwhI67+ria+7cs36L3XP+euudw94bjiONaAABoJfUSLsZwpSiOkjofX//xuvt71/WGniOOOCgPBABAdIzhSlEcJXV+8dIv6u7/5e5fhp6j/AiwkTgoDwQAQHTc4UpRHCV1jjrkqLr7f2fm74SeI444KA8EAEB0JFwpiqOkzvU919fdP3jeYOg54oiD8kAAAERHwpWiOErqvGXWW3TpyZdW3XfpyZfq7Ye9PfQcccRBeSAAAKLjLcUMxFFS56lfP6WP3fIxPf3S05p/yHytWbJGx7zxmAmdI444KA8EAECAaSEAAAASxrQQAAAAGSLhAgAASBjzcGVg1yu7tPIHK/XYC4/prbPeqlXvW6XDDz78tf1hdWmn8N4AAAvLSURBVBIl6iACANBMGMOVsn9+4J91yZ2XjNt+9ZlX66/e8VehdRIl6iACAJBHDJrPiV2v7NIR/UfU3H/vx+/VKdfXTnae/Osn9aYZb6IOIgAAOcSg+ZxY+YOVdff33NRTd//HbvkYdRABAGhCJFwpeuyFx+ruf+nVl+ruf/qlp2OpYUgdRAAA0kXClaK3znpr3f2HTD+k7v75h8ynDiIAAE2IhCtFq963qu7+9UvX192/Zska6iACANCESLhSdPjBh+vqM6+uuu/qM6/Wu9/87rp1Eo954zHUQQQAoAnxlmIGntv9nC7//uV6/IXHddys43Tl+6/UnJlzXtsfVidRog4iAAB5w7QQAAAACWNaCAAAgAyRcAEAACSMhKvC0N4hXbf5Ol32vct03ebrNLR3/EzsYXa9sksX3nKh3vmv79SFt1yoXa/sGnfM5l2bdczAMZrxDzN0zMAx2rxr86j939z6TU374jTZF0zTvjhN39z6zXFt3LX9LnV+qVNTvjBFnV/q1F3b7xq1f8PTGzR79WxN++I0zV49Wxue3pDI9cbRBgAArY4xXCVx1BYMq5MoScvWLdNNj9w07pilxy/V2vPW6sgvH6mdQzvH7Z/bOVfPfPoZSdKif1mkB597cNwxC+cs1Oa/2Kz33vBe3fP0PeP2nz7/dN194d2xXS/1GAEAGMGg+RBx1BYMq5P47Gee1a5Xdqn7X7trHvOl076kz/7wszX3r/ujdeo8sFMf/uaHax7T/8F+Xfrd6lNLSNJ9f36fTnjTCdRjBAAgZgyaDxFHbcGwOomXf/9ynbfuvLrH1Eu2JOmCwQt07rpz6x5TL9mSpLO/dTb1GAEASBkJl+KpLRhWJ/HxFx7Xc7ufm1R8ZcM+XDPOqH7z6m+oxwgAQMpIuBRPbcGwOonHzTpu1OSmk9FhHTXjjOoN099APUYAAFJGwqV4aguG1Um88v1Xat156+oe86XTvlR3/429N+rb53277jH9H+yvu/+282+jHiMAACkj4VI8tQXD6iTOmTlHiw5fpKXHL616zNLjl2rlqSs1t3Nu1f1zO+fq3BPP1YcWfEgL5yyseszCOQv1qXd9SqfPP73q/tPnn66TjzyZeowAAKSMtxQrxFFbMKxOoiQ99NxD6r2pV8/tfk5zZs7R4NJBvW3O217b/+2Hv60LBi/QsA+rwzp0Y++NOvfE0YPl7/753Tpn7Tnas2+PZhwwQ7cuu1XvPfq9r+2//5n7dfa3ztZvXv2N3jD9Dbrt/Nt08pEnx3691GMEACDAtBAAAAAJY1oIAACADJFwAQAAJKwj6wCazdDeIa3dtlbbX9yuBYcu0LITlqnzwM7Uz7F512adt+6818aBrTtvnRYdvijWOAAAQDwYwzUBadQOjHKOsHqMAAAgfQyaj0EatQOjnOOJF56oW49x619sHfXGIwAASAeD5mOQRu3AKOcIq8fYe1Nvw3EAAIB4kXBFlEbtwCjnCKvH2Gi9RgAAED8SrojSqB0Y5Rxh9RgbrdcIAADiR8IVURq1A6OcI6we4+DSwYbjAAAA8SLhiiiN2oFRzhFWj5EB8wAA5A9vKU5QGrUDo5wjrB4jAABIF9NCAAAAJIxpIQAAADJEwgUAAJCwRBMuM/uwmT1uZk+a2eVV9puZXVXa/5CZUQwQAAC0nMQSLjObKulqSWdIOl7SBWZ2/JjDzpC0oLQsl3RNUvEAAABkJck7XCdJetLdf+7u+yR9S9I5Y445R9IaD9wv6RAzOyzBmAAAAFKXZMJ1hKRnKtZ3lrZN9BiZ2XIz22hmG3/1q1/FHigAAECSkky4rMq2sXNQRDlG7n6tuy9298WzZ8+OJTgAAIC0JJlw7ZR0ZMX6XEm7JnEMAABAU0ts4lMz65D0hKT3SfovSQ9I+mN331ZxzFmSPinpTEnvlHSVu58U0u6vJO1IJOgRsyS9kPA52hH9Gj/6NH70afzo0/jRp8lotF/f7O5VH8V1NNBoXe4+bGaflHSXpKmSvu7u28zs4tL+r0q6U0Gy9aSk30r6swjtJv5M0cw21popFpNHv8aPPo0ffRo/+jR+9GkykuzXxBIuSXL3OxUkVZXbvlrxu0u6JMkYAAAAssZM8wAAAAkj4aru2qwDaFH0a/zo0/jRp/GjT+NHnyYjsX5NbNA8AAAAAtzhAgAASBgJVwUz+7qZPW9mD2cdS6swsyPN7B4ze9TMtplZX9YxNTsze52Z/dTMtpb69AtZx9QqzGyqmT1oZrdnHUurMLOnzexnZrbFzDZmHU8rMLNDzOzbZvZY6b+t78o6pmZmZseV/n2Wl1fM7FOxn4dHiiPM7A8k7VZQ3/HErONpBaXamIe5+2Yz65S0SVKPuz+ScWhNy8xM0gx3321m0yTdK6mvVI8UDTCzT0taLOlgd/9I1vG0AjN7WtJid2fOqJiY2Q2SNrj7dWZ2gKSD3P2lrONqBWY2VcHcoe9091jn/OQOVwV3/7GkX2cdRytx92fdfXPp9yFJj6pKvUxEVyr2vru0Oq208H9ODTKzuZLOknRd1rEAtZjZwZL+QNLXJMnd95Fsxep9kp6KO9mSSLiQIjObL2mhpP/INpLmV3r0tUXS85K+5+70aeP+UdIKScWsA2kxLum7ZrbJzJZnHUwLOFrSryT9W+nx93VmNiProFrI+ZJuTKJhEi6kwsxmSrpZ0qfc/ZWs42l27l5w9y4F9UdPMjMegTfAzD4i6Xl335R1LC3o3e6+SNIZki4pDd3A5HVIWiTpGndfKGmPpMuzDak1lB7Pni1pXRLtk3AhcaVxRjdL+oa7D2YdTyspPUr4oaQPZxxKs3u3pLNL442+Jem9ZvZ/sw2pNbj7rtLP5yXdIqluvVyE2ilpZ8Vd7W8rSMDQuDMkbXb3XybROAkXElUa4P01SY+6+5ezjqcVmNlsMzuk9Pt0Se+X9Fi2UTU3d1/p7nPdfb6CRwp3u/ufZBxW0zOzGaWXZVR67PVBSbwF3gB3f07SM2Z2XGnT+yTxElI8LlBCjxOlhGspNhszu1HSaZJmmdlOSf/d3b+WbVRN792S/lTSz0pjjiTps6U6m5icwyTdUHqbZoqkm9ydaQyQR78j6Zbg/7vUIemb7v7v2YbUEv5a0jdKj8B+LunPMo6n6ZnZQZI+IOkvEjsH00IAAAAki0eKAAAACSPhAgAASBgJFwAAQMJIuAAAABJGwgUAAJAwEi4ATcXMPm9mf1v6/XozO3eS7cw3s7pzQpWO+eOK9Y+b2T9N5nwA2hsJFwDUNl/SH4cdBABhSLgA5J6Z/Tcze9zMvi/puDG755YmgKz12c+b2f8xs7vNbLuZfWLM/qNLd7I2mNnm0vL7pd1XSnqPmW0xs0vHfO4sM7vPzGaZ2SfM7AEz22pmN5cmUQSA15BwAcg1M+tWUG5noaReSe+o2D29tK0zpJm3STpL0rskXWFmh5c+e4ykUyQ9L+kDpSLLyyRdVfrc5ZI2uHuXu/dXxLSktO9Md39B0qC7v8Pd3y7pUUkXNXDJAFoQpX0A5N17JN3i7r+VJDO7rfTzPAXJUp+7vxjSxq3u/qqkV83sHkknS/qEpKfcfY2ZvV7SP5lZl6SCpLfUaet0SYslfdDdXyltO9HM/oekQyTNlHTXZC4UQOviDheAZjCuBpm7r5P0vUl+viDpLyvWL5X0S0lvV5BM1XxEqaB2XadGJ2XXS/qku/+epC9Iel3EuAC0CRIuAHn3Y0lLzGy6mXVK+sNJtHGOmb3OzA5VUKD+gTH7Xy/pWXcvKii2PrW0fUjjH1fuUPAYc42ZnVDa1inpWTObJumjk4gPQIsj4QKQa+6+WdJaSVsk3SxpQ7XjzOyLZnZ2jWZ+KukOSfdL+nt33zVm/z9LutDM7ldw52pPaftDkoZLg+FfGzTv7o8rSKzWmdkxkj4n6T8U3HF7bOJXCaDVmfu4O/UA0DLM7POSdrv7/8o6FgDtiztcAAAACeMOFwAAQMK4wwUAAJAwEi4AAICEkXABAAAkjIQLAAAgYSRcAAAACSPhAgAASNj/B5pGrglDXWeqAAAAAElFTkSuQmCC\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "fig = plot_data_for_classification(X, Y, xlabel=u'dł. płatka', ylabel=u'szer. płatka')\n", + "plot_new_example(fig, 2.8, 0.9)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "* Wydaje się sensownym przyjąć, że punkt oznaczony gwiazdką powinien być czerwony, ponieważ sąsiednie punkty są czerwone. Najbliższe czerwone punkty są położone bliżej niż najbliższe zielone." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "source": [ + "* Algorytm oparty na tej intuicji nazywamy algorytmem **$k$ najbliższych sąsiadów** (*$k$ nearest neighbors*, KNN)." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "source": [ + "* Idea (KNN dla $k = 1$):\n", + " 1. Dla nowego przykładu $x'$ znajdź najbliższy przykład $x$ ze zbioru uczącego.\n", + " 1. Jego klasa $y$ to szukana klasa $y'$." + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "metadata": { + "slideshow": { + "slide_type": "notes" + } + }, + "outputs": [], + "source": [ + "from scipy.spatial import Voronoi, voronoi_plot_2d\n", + "\n", + "def plot_voronoi(fig, points):\n", + " ax = fig.axes[0]\n", + " vor = Voronoi(points)\n", + " ax.scatter(vor.vertices[:, 0], vor.vertices[:, 1], s=1)\n", + " \n", + " for simplex in vor.ridge_vertices:\n", + " simplex = np.asarray(simplex)\n", + " if np.all(simplex >= 0):\n", + " ax.plot(vor.vertices[simplex, 0], vor.vertices[simplex, 1],\n", + " color='orange', linewidth=1)\n", + " \n", + " xmin, ymin = points.min(axis=0).tolist()[0]\n", + " xmax, ymax = points.max(axis=0).tolist()[0]\n", + " pad = 0.1\n", + " ax.set_xlim(xmin - pad, xmax + pad)\n", + " ax.set_ylim(ymin - pad, ymax + pad)" + ] + }, + { + "cell_type": "code", + "execution_count": 49, + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "fig = plot_data_for_classification(X, Y, xlabel=u'dł. płatka', ylabel=u'szer. płatka')\n", + "plot_new_example(fig, 2.8, 0.9)\n", + "plot_voronoi(fig, X[:, 1:])" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "source": [ + "* Podział płaszczyzny jak na powyższym wykresie nazywamy **diagramem Woronoja** (*Voronoi diagram*)." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "* Taki algorytm wyznacza dość efektowne granice klas, zwłaszcza jak na tak prosty algorytm. " + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "* Niestety jest bardzo podatny na obserwacje odstające:" + ] + }, + { + "cell_type": "code", + "execution_count": 50, + "metadata": { + "slideshow": { + "slide_type": "notes" + } + }, + "outputs": [], + "source": [ + "X_outliers = np.vstack((X, np.matrix([[1.0, 3.9, 1.7]])))\n", + "Y_outliers = np.vstack((Y, np.matrix([[1]])))" + ] + }, + { + "cell_type": "code", + "execution_count": 51, + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "fig = plot_data_for_classification(X_outliers, Y_outliers, xlabel=u'dł. płatka', ylabel=u'szer. płatka')\n", + "plot_new_example(fig, 2.8, 0.9)\n", + "plot_voronoi(fig, X_outliers[:, 1:])" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "* Pojedyncza obserwacja odstająca dramatycznie zmienia granice klas." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "source": [ + "* Aby temu zaradzić, użyjemy więcej niż jednego najbliższego sąsiada ($k > 1$)." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "### Algorytm $k$ najbliższych sąsiadów dla problemu klasyfikacji\n", + "\n", + "1. Dany jest zbiór uczący zawierajacy przykłady $(x_i, y_i)$, gdzie: $x_i$ – zestaw cech, $y_i$ – klasa.\n", + "1. Dany jest przykład testowy $x'$, dla którego chcemy określić klasę.\n", + "1. Oblicz odległość $d(x', x_i)$ dla każdego przykładu $x_i$ ze zbioru uczącego.\n", + "1. Wybierz $k$ przykładów $x_{i_1}, \\ldots, x_{i_k}$, dla których wyliczona odległość jest najmniejsza.\n", + "1. Jako wynik $y'$ zwróć tę spośrod klas $y_{i_1}, \\ldots, y_{i_k}$, która występuje najczęściej." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "### Algorytm $k$ najbliższych sąsiadów dla problemu klasyfikacji – przykład" + ] + }, + { + "cell_type": "code", + "execution_count": 52, + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "outputs": [], + "source": [ + "# Odległość euklidesowa\n", + "def euclidean_distance(x1, x2):\n", + " return np.linalg.norm(x1 - x2)" + ] + }, + { + "cell_type": "code", + "execution_count": 53, + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [], + "source": [ + "# Algorytm k najbliższych sąsiadów\n", + "def knn(X, Y, x_new, k, distance=euclidean_distance):\n", + " data = np.concatenate((X, Y), axis=1)\n", + " nearest = sorted(\n", + " data, key=lambda xy:distance(xy[0, :-1], x_new))[:k]\n", + " y_nearest = [xy[0, -1] for xy in nearest]\n", + " return max(y_nearest, key=lambda y:y_nearest.count(y))" + ] + }, + { + "cell_type": "code", + "execution_count": 54, + "metadata": { + "slideshow": { + "slide_type": "notes" + } + }, + "outputs": [], + "source": [ + "# Wykres klas dla KNN\n", + "def plot_knn(fig, X, Y, k, distance=euclidean_distance):\n", + " ax = fig.axes[0]\n", + " x1min, x2min = X.min(axis=0).tolist()[0]\n", + " x1max, x2max = X.max(axis=0).tolist()[0]\n", + " pad1 = (x1max - x1min) / 10\n", + " pad2 = (x2max - x2min) / 10\n", + " step1 = (x1max - x1min) / 50\n", + " step2 = (x2max - x2min) / 50\n", + " x1grid, x2grid = np.meshgrid(\n", + " np.arange(x1min - pad1, x1max + pad1, step1),\n", + " np.arange(x2min - pad2, x2max + pad2, step2))\n", + " z = np.matrix([[knn(X, Y, [x1, x2], k, distance) \n", + " for x1, x2 in zip(x1row, x2row)] \n", + " for x1row, x2row in zip(x1grid, x2grid)])\n", + " plt.contour(x1grid, x2grid, z, levels=[0.5]);" + ] + }, + { + "cell_type": "code", + "execution_count": 55, + "metadata": { + "slideshow": { + "slide_type": "notes" + } + }, + "outputs": [], + "source": [ + "# Przygotowanie interaktywnego wykresu\n", + "\n", + "slider_k = widgets.IntSlider(min=1, max=10, step=1, value=1, description=r'$k$', width=300)\n", + "\n", + "def interactive_knn_1(k):\n", + " fig = plot_data_for_classification(X_outliers, Y_outliers, xlabel=u'dł. płatka', ylabel=u'szer. płatka')\n", + " plot_voronoi(fig, X_outliers[:, 1:])\n", + " plot_knn(fig, X_outliers[:, 1:], Y_outliers, k)" + ] + }, + { + "cell_type": "code", + "execution_count": 56, + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "6e20fc55e2ad4e59874fd59b9f128073", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "interactive(children=(IntSlider(value=1, description='$k$', max=10, min=1), Button(description='Run Interact',…" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 56, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "widgets.interact_manual(interactive_knn_1, k=slider_k)" + ] + }, + { + "cell_type": "code", + "execution_count": 58, + "metadata": { + "slideshow": { + "slide_type": "notes" + } + }, + "outputs": [], + "source": [ + "# Wczytanie danych (inny przykład)\n", + "\n", + "alldata = pandas.read_csv('classification.tsv', sep='\\t')\n", + "data = np.matrix(alldata)\n", + "\n", + "m, n_plus_1 = data.shape\n", + "n = n_plus_1 - 1\n", + "Xn = data[:, 1:].reshape(m, n)\n", + "\n", + "X2 = np.matrix(np.concatenate((np.ones((m, 1)), Xn), axis=1)).reshape(m, n_plus_1)\n", + "Y2 = np.matrix(data[:, 0]).reshape(m, 1)" + ] + }, + { + "cell_type": "code", + "execution_count": 59, + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "fig = plot_data_for_classification(X2, Y2, xlabel=r'$x_1$', ylabel=r'$x_2$')" + ] + }, + { + "cell_type": "code", + "execution_count": 60, + "metadata": { + "slideshow": { + "slide_type": "notes" + } + }, + "outputs": [], + "source": [ + "# Przygotowanie interaktywnego wykresu\n", + "\n", + "slider_k = widgets.IntSlider(min=1, max=10, step=1, value=1, description=r'$k$', width=300)\n", + "\n", + "def interactive_knn_2(k):\n", + " fig = plot_data_for_classification(X2, Y2, xlabel=r'$x_1$', ylabel=r'$x_2$')\n", + " plot_voronoi(fig, X2[:, 1:])\n", + " plot_knn(fig, X2[:, 1:], Y2, k)" + ] + }, + { + "cell_type": "code", + "execution_count": 61, + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "db278f40e7fa4fdc90a9fe2f15a917c6", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "interactive(children=(IntSlider(value=1, description='$k$', max=10, min=1), Button(description='Run Interact',…" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 61, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "widgets.interact_manual(interactive_knn_2, k=slider_k)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "### Algorytm $k$ najbliższych sąsiadów dla problemu regresji\n", + "\n", + "1. Dany jest zbiór uczący zawierajacy przykłady $(x_i, y_i)$, gdzie: $x_i$ – zestaw cech, $y_i$ – liczba rzeczywista.\n", + "1. Dany jest przykład testowy $x'$, dla którego chcemy określić klasę.\n", + "1. Oblicz odległość $d(x', x_i)$ dla każdego przykładu $x_i$ ze zbioru uczącego.\n", + "1. Wybierz $k$ przykładów $x_{i_1}, \\ldots, x_{i_k}$, dla których wyliczona odległość jest najmniejsza.\n", + "1. Jako wynik $y'$ zwróć średnią liczb $y_{i_1}, \\ldots, y_{i_k}$:\n", + " $$ y' = \\frac{1}{k} \\sum_{j=1}^{k} y_{i_j} $$" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "### Wybór $k$\n", + "\n", + "* Wartość $k$ ma duży wpływ na wynik działania algorytmu KNN:\n", + " * Jeżeli $k$ jest zbyt duże, wszystkie nowe przykłady są klasyfikowane jako klasa większościowa.\n", + " * Jeżeli $k$ jest zbyt małe, granice klas są niestabilne, a algorytm jest bardzo podatny na obserwacje odstające.\n", + "* Aby dobrać optymalną wartość $k$, najlepiej użyć zbioru walidacyjnego." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "### Miary podobieństwa" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "#### Odległość euklidesowa\n", + "$$ d(x, x') = \\sqrt{ \\sum_{i=1}^n \\left( x_i - x'_i \\right) ^2 } $$" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "source": [ + "* Dobry wybór w przypadku numerycznych cech.\n", + "* Symetryczna, traktuje wszystkie wymiary jednakowo.\n", + "* Wrażliwa na duże wahania jednej cechy." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "#### Odległość Hamminga\n", + "$$ d(x, x') = \\sum_{i=1}^n \\mathbf{1}_{x_i \\neq x'_i} $$" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "source": [ + "* Dobry wybór w przypadku cech zero-jedynkowych.\n", + "* Liczba cech, którymi różnią się dane przykłady." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "#### Odległość Minkowskiego ($p$-norma)\n", + "$$ d(x, x') = \\sqrt[p]{ \\sum_{i=1}^n \\left| x_i - x'_i \\right| ^p } $$" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "source": [ + "* Dla $p = 2$ jest to odległość euklidesowa.\n", + "* Dla $p = 1$ jest to odległość taksówkowa.\n", + "* Jeżeli $p \\to \\infty$, to $p$-norma zbliża się do logicznej alternatywy.\n", + "* Jeżeli $p \\to 0$, to $p$-norma zbliża się do logicznej koniunkcji." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "### KNN – praktyczne porady" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "source": [ + "* Co zrobić z remisami?\n", + " * Można wybrać losową klasę.\n", + " * Można wybrać klasę o wyższym prawdopodobieństwie _a priori_.\n", + " * Można wybrać klasę wskazaną przez algorytm 1NN." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "source": [ + "* KNN źle radzi sobie z brakującymi wartościami cech (nie można wówczas sensownie wyznaczyć odległości)." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "## 8.3. Drzewa decyzyjne" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "### Drzewa decyzyjne – przykład" + ] + }, + { + "cell_type": "code", + "execution_count": 61, + "metadata": { + "slideshow": { + "slide_type": "notes" + } + }, + "outputs": [], + "source": [ + "# Przydatne importy\n", + "\n", + "import ipywidgets as widgets\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "import pandas\n", + "\n", + "%matplotlib inline" + ] + }, + { + "cell_type": "code", + "execution_count": 64, + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " Day Outlook Humidity Wind Play\n", + "0 1 Sunny High Weak No\n", + "1 2 Sunny High Strong No\n", + "2 3 Overcast High Weak Yes\n", + "3 4 Rain High Weak Yes\n", + "4 5 Rain Normal Weak Yes\n", + "5 6 Rain Normal Strong No\n", + "6 7 Overcast Normal Strong Yes\n", + "7 8 Sunny High Weak No\n", + "8 9 Sunny Normal Weak Yes\n", + "9 10 Rain Normal Weak Yes\n", + "10 11 Sunny Normal Strong Yes\n", + "11 12 Overcast High Strong Yes\n", + "12 13 Overcast Normal Weak Yes\n", + "13 14 Rain High Strong No\n" + ] + } + ], + "source": [ + "alldata = pandas.read_csv('tennis.tsv', sep='\\t')\n", + "print(alldata)" + ] + }, + { + "cell_type": "code", + "execution_count": 65, + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "{'Outlook': {'Overcast', 'Rain', 'Sunny'},\n", + " 'Humidity': {'High', 'Normal'},\n", + " 'Wind': {'Strong', 'Weak'}}" + ] + }, + "execution_count": 65, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Dane jako lista słowników\n", + "data = alldata.T.to_dict().values()\n", + "features = ['Outlook', 'Humidity', 'Wind']\n", + "\n", + "# Możliwe wartości w poszczególnych kolumnach\n", + "values = {feature: set(row[feature] for row in data)\n", + " for feature in features}\n", + "values" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "* Czy John zagra w tenisa, jeżeli będzie padać, przy wysokiej wilgotności i silnym wietrze?\n", + "* Algorytm drzew decyzyjnych spróbuje _zrozumieć_ „taktykę” Johna.\n", + "* Wykorzystamy metodę „dziel i zwyciężaj”." + ] + }, + { + "cell_type": "code", + "execution_count": 66, + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [], + "source": [ + "# Podziel dane\n", + "def split(features, data):\n", + " values = {feature: list(set(row[feature]\n", + " for row in data))\n", + " for feature in features}\n", + " if not features:\n", + " return data\n", + " return {val: split(features[1:],\n", + " [row for row in data\n", + " if row[features[0]] == val])\n", + " for val in values[features[0]]}" + ] + }, + { + "cell_type": "code", + "execution_count": 67, + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "\tOutlook\tHumid\tWind\tPlay\n", + "Day 1:\tSunny\tHigh\tWeak\tNo\n", + "Day 2:\tSunny\tHigh\tStrong\tNo\n", + "Day 8:\tSunny\tHigh\tWeak\tNo\n", + "Day 9:\tSunny\tNormal\tWeak\tYes\n", + "Day 11:\tSunny\tNormal\tStrong\tYes\n", + "\n", + "\tOutlook\tHumid\tWind\tPlay\n", + "Day 4:\tRain\tHigh\tWeak\tYes\n", + "Day 5:\tRain\tNormal\tWeak\tYes\n", + "Day 6:\tRain\tNormal\tStrong\tNo\n", + "Day 10:\tRain\tNormal\tWeak\tYes\n", + "Day 14:\tRain\tHigh\tStrong\tNo\n", + "\n", + "\tOutlook\tHumid\tWind\tPlay\n", + "Day 3:\tOvercast\tHigh\tWeak\tYes\n", + "Day 7:\tOvercast\tNormal\tStrong\tYes\n", + "Day 12:\tOvercast\tHigh\tStrong\tYes\n", + "Day 13:\tOvercast\tNormal\tWeak\tYes\n" + ] + } + ], + "source": [ + "split_data = split(['Outlook'], data)\n", + "\n", + "for outlook in values['Outlook']:\n", + " print('\\n\\tOutlook\\tHumid\\tWind\\tPlay')\n", + " for row in split_data[outlook]:\n", + " print('Day {Day}:\\t{Outlook}\\t{Humidity}\\t{Wind}\\t{Play}'\n", + " .format(**row))" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "Obserwacja: John lubi grać, gdy jest pochmurnie.\n", + "\n", + "W pozostałych przypadkach podzielmy dane ponownie:" + ] + }, + { + "cell_type": "code", + "execution_count": 68, + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "\tOutlook\tHumid\tWind\tPlay\n", + "Day 1:\tSunny\tHigh\tWeak\tNo\n", + "Day 2:\tSunny\tHigh\tStrong\tNo\n", + "Day 8:\tSunny\tHigh\tWeak\tNo\n", + "\n", + "\tOutlook\tHumid\tWind\tPlay\n", + "Day 9:\tSunny\tNormal\tWeak\tYes\n", + "Day 11:\tSunny\tNormal\tStrong\tYes\n" + ] + } + ], + "source": [ + "split_data_sunny = split(['Outlook', 'Humidity'], data)\n", + "\n", + "for humidity in values['Humidity']:\n", + " print('\\n\\tOutlook\\tHumid\\tWind\\tPlay')\n", + " for row in split_data_sunny['Sunny'][humidity]:\n", + " print('Day {Day}:\\t{Outlook}\\t{Humidity}\\t{Wind}\\t{Play}'\n", + " .format(**row))" + ] + }, + { + "cell_type": "code", + "execution_count": 69, + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "\tOutlook\tHumid\tWind\tPlay\n", + "Day 6:\tRain\tNormal\tStrong\tNo\n", + "Day 14:\tRain\tHigh\tStrong\tNo\n", + "\n", + "\tOutlook\tHumid\tWind\tPlay\n", + "Day 4:\tRain\tHigh\tWeak\tYes\n", + "Day 5:\tRain\tNormal\tWeak\tYes\n", + "Day 10:\tRain\tNormal\tWeak\tYes\n" + ] + } + ], + "source": [ + "split_data_rain = split(['Outlook', 'Wind'], data)\n", + "\n", + "for wind in values['Wind']:\n", + " print('\\n\\tOutlook\\tHumid\\tWind\\tPlay')\n", + " for row in split_data_rain['Rain'][wind]:\n", + " print('Day {Day}:\\t{Outlook}\\t{Humidity}\\t{Wind}\\t{Play}'\n", + " .format(**row))" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "* Outlook=\n", + " * Overcast\n", + " * → Playing\n", + " * Sunny\n", + " * Humidity=\n", + " * High\n", + " * → Not playing\n", + " * Normal\n", + " * → Playing\n", + " * Rain\n", + " * Wind=\n", + " * Weak\n", + " * → Playing\n", + " * Strong\n", + " * → Not playing" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "* (9/5)\n", + " * Outlook=Overcast (4/0)\n", + " * YES\n", + " * Outlook=Sunny (2/3)\n", + " * Humidity=High (0/3)\n", + " * NO\n", + " * Humidity=Normal (2/0)\n", + " * YES\n", + " * Outlook=Rain (3/2)\n", + " * Wind=Weak (3/0)\n", + " * YES\n", + " * Wind=Strong (0/2)\n", + " * NO" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "### Algorytm ID3" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "Pseudokod algorytmu:\n", + "\n", + "* podziel(węzeł, zbiór przykładów):\n", + " 1. A ← najlepszy atrybut do podziału zbioru przykładów\n", + " 1. Dla każdej wartości atrybutu A, utwórz nowy węzeł potomny\n", + " 1. Podziel zbiór przykładów na podzbiory według węzłów potomnych\n", + " 1. Dla każdego węzła potomnego i podzbioru:\n", + " * jeżeli podzbiór jest jednolity: zakończ\n", + " * w przeciwnym przypadku: podziel(węzeł potomny, podzbiór)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "Jak wybrać „najlepszy atrybut”?\n", + "* powinien zawierać jednolity podzbiór\n", + "* albo przynajmniej „w miarę jednolity”\n", + "\n", + "Skąd wziąć miarę „jednolitości” podzbioru?\n", + "* miara powinna być symetryczna (4/0 vs. 0/4)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "### Entropia\n", + "\n", + "$$ H(S) = - p_{(+)} \\log p_{(+)} - p_{(-)} \\log p_{(-)} $$\n", + "\n", + "* $S$ – podzbiór przykładów\n", + "* $p_{(+)}$, $p_{(-)}$ – procent pozytywnych/negatywnych przykładów w $S$" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "source": [ + "Entropię można traktować jako „liczbę bitów” potrzebną do sprawdzenia, czy losowo wybrany $x \\in S$ jest pozytywnym, czy negatywnym przykładem." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "Przykład:\n", + "\n", + "* (3 TAK / 3 NIE):\n", + "$$ H(S) = -\\frac{3}{6} \\log\\frac{3}{6} - \\frac{3}{6} \\log\\frac{3}{6} = 1 \\mbox{ bit} $$\n", + "* (4 TAK / 0 NIE):\n", + "$$ H(S) = -\\frac{4}{4} \\log\\frac{4}{4} - \\frac{0}{4} \\log\\frac{0}{4} = 0 \\mbox{ bitów} $$" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "### *Information gain*\n", + "\n", + "*Information gain* – różnica między entropią przed podziałem a entropią po podziale (podczas podziału entropia zmienia się):\n", + "\n", + "$$ \\mathop{\\rm Gain}(S,A) = H(S) - \\sum_{V \\in \\mathop{\\rm Values(A)}} \\frac{|S_V|}{|S|} H(S_V) $$" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "Przykład:\n", + "\n", + "$$ \\mathop{\\rm Gain}(S, Wind) = H(S) - \\frac{8}{14} H(S_{Wind={\\rm Weak}}) - \\frac{6}{14} H(S_{Wind={\\rm Strong}}) = \\\\\n", + "= 0.94 - \\frac{8}{14} \\cdot 0.81 - \\frac{6}{14} \\cdot 1.0 = 0.049 $$" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "* _Information gain_ jest całkiem sensowną heurystyką wskazującą, który atrybut jest najlepszy do dokonania podziału.\n", + "* **Ale**: _information gain_ przeszacowuje użyteczność atrybutów, które mają dużo różnych wartości.\n", + "* **Przykład**: gdybyśmy wybrali jako atrybut *datę*, otrzymalibyśmy bardzo duży *information gain*, ponieważ każdy podzbiór byłby jednolity, a nie byłoby to ani trochę użyteczne!" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "### _Information gain ratio_\n", + "\n", + "$$ \\mathop{\\rm GainRatio}(S, A) = \\frac{ \\mathop{\\rm Gain}(S, A) }{ -\\sum_{V \\in \\mathop{\\rm Values}(A)} \\frac{|S_V|}{|S|} \\log\\frac{|S_V|}{|S|} } $$" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "source": [ + "* _Information gain ratio_ może być lepszym wyborem heurystyki wskazującej najużyteczniejszy atrybut, jeżeli atrybuty mają wiele różnych wartości." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "### Drzewa decyzyjne a formuły logiczne\n", + "\n", + "Drzewo decyzyjne można pzekształcić na formułę logiczną w postaci normalnej (DNF):\n", + "\n", + "$$ Play={\\rm True} \\Leftrightarrow \\left( Outlook={\\rm Overcast} \\vee \\\\\n", + "( Outlook={\\rm Rain} \\wedge Wind={\\rm Weak} ) \\vee \\\\\n", + "( Outlook={\\rm Sunny} \\wedge Humidity={\\rm Normal} ) \\right) $$" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "### Klasyfikacja wieloklasowa przy użyciu drzew decyzyjnych\n", + "\n", + "Algorytm przebiega analogicznie, zmienia się jedynie wzór na entropię:\n", + "\n", + "$$ H(S) = -\\sum_{y \\in Y} p_{(y)} \\log p_{(y)} $$" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "### Skuteczność algorytmu ID3\n", + "\n", + "* Przyjmujemy, że wśród danych uczących nie ma duplikatów (tj. przykładów, które mają jednakowe cechy $x$, a mimo to należą do różnych klas $y$).\n", + "* Wówczas algorytm drzew decyzyjnych zawsze znajdzie rozwiązanie, ponieważ w ostateczności będziemy mieli węzły 1-elementowe na liściach drzewa." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "### Nadmierne dopasowanie drzew decyzyjnych\n", + "\n", + "* Zauważmy, że w miarę postępowania algorytmu dokładność przewidywań drzewa (*accuracy*) liczona na zbiorze uczącym dąży do 100% (i w ostateczności osiąga 100%, nawet kosztem jednoelementowych liści).\n", + "* Takie rozwiązanie niekoniecznie jest optymalne. Dokładność na zbiorze testowym może być dużo niższa, a to oznacza nadmierne dopasowanie." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "#### Jak zapobiec nadmiernemu dopasowaniu?\n", + "\n", + "Aby zapobiegać nadmiernemu dopasowaniu drzew decyzyjnych, należy je przycinać (*pruning*)." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "Można tego dokonywać na kilka sposobów:\n", + "* Można zatrzymywać procedurę podziału w pewnym momencie (np. kiedy podzbiory staja się zbyt małe).\n", + "* Można najpierw wykonać algorytm ID3 w całości, a następnie przyciąć drzewo, np. kierując się wynikami uzyskanymi na zbiorze walidacyjnym.\n", + "* Algorytm _sub-tree replacement pruning_ (algorytm zachłanny)." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "#### Algorytm _Sub-tree replacement pruning_\n", + "\n", + "1. Dla każdego węzła:\n", + " 1. Udaj, że usuwasz węzeł wraz z całym zaczepionym w nim poddrzewem.\n", + " 1. Dokonaj ewaluacji na zbiorze walidacyjnym.\n", + "1. Usuń węzeł, którego usunięcie daje największą poprawę wyniku.\n", + "1. Powtarzaj, dopóki usuwanie węzłów poprawia wynik." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "### Zalety drzew decyzyjnych\n", + "\n", + "* Zasadę działania drzew decyzyjnych łatwo zrozumieć człowiekowi.\n", + "* Atrybuty, które nie wpływają na wynik, mają _gain_ równy 0, zatem są od razu pomijane przez algorytm.\n", + "* Po zbudowaniu, drzewo decyzyjne jest bardzo szybkim klasyfikatorem (złożoność $O(d)$, gdzie $d$ jest głębokościa drzewa)." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "### Wady drzew decyzyjnych\n", + "\n", + "* ID3 jest algorytmem zachłannym – może nie wskazać najlepszego drzewa.\n", + "* Nie da się otrzymać granic klas (*decision boundaries*), które nie są równoległe do osi wykresu." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "### Lasy losowe" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "#### Algorytm lasów losowych – idea\n", + "\n", + "* Algorytm lasów losowych jest rozwinięciem algorytmu ID3.\n", + "* Jest to bardzo wydajny algorytm klasyfikacji.\n", + "* Zamiast jednego, będziemy budować $k$ drzew." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "#### Algorytm lasów losowych – budowa lasu\n", + "\n", + "1. Weź losowy podzbiór $S_r$ zbioru uczącego.\n", + "1. Zbuduj pełne (tj. bez przycinania) drzewo decyzyjne dla $S_r$, używając algorytmu ID3 z następującymi modyfikacjami:\n", + " * podczas podziału używaj losowego $d$-elementowego podzbioru atrybutów,\n", + " * obliczaj _gain_ względem $S_r$.\n", + "1. Powyższą procedurę powtórz $k$-krotnie, otrzymując $k$ drzew ($T_1, T_2, \\ldots, T_k$)." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "#### Algorytm lasów losowych – predykcja\n", + "\n", + "1. Sklasyfikuj $x$ według każdego z drzew $T_1, T_2, \\ldots, T_k$ z osobna.\n", + "1. Użyj głosowania większościowego: przypisz klasę przewidzianą przez najwięcej drzew." + ] + } + ], + "metadata": { + "celltoolbar": "Slideshow", + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.3" + }, + "livereveal": { + "start_slideshow_at": "selected", + "theme": "white" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +}