Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save Sarikachima/24be1e79f58bf591baae10b1c9e63035 to your computer and use it in GitHub Desktop.
Save Sarikachima/24be1e79f58bf591baae10b1c9e63035 to your computer and use it in GitHub Desktop.
Created on Skills Network Labs
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"<a href=\"https://cognitiveclass.ai\"><img src = \"https://ibm.box.com/shared/static/9gegpsmnsoo25ikkbl4qzlvlyjbgxs5x.png\" width = 400> </a>\n",
"\n",
"<h1 align=center><font size = 5><em>k</em>-means Clustering</font></h1>"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"## Introduction\n",
"\n",
"There are many models for clustering out there. In this lab, we will be presenting the model that is considered the one of the simplest model among them. Despite its simplicity, *k*-means is vastly used for clustering in many data science applications, especially useful if you need to quickly discover insights from unlabeled data.\n",
"\n",
"Some real-world applications of *k*-means include:\n",
"- customer segmentation,\n",
"- understand what the visitors of a website are trying to accomplish,\n",
"- pattern recognition, and,\n",
"- data compression.\n",
"\n",
"In this lab, we will learn *k*-means clustering with 3 examples:\n",
"- *k*-means on a randomly generated dataset.\n",
"- Using *k*-means for customer segmentation."
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"## Table of Contents\n",
"\n",
"1. <a href=\"#item1\"><em>k</em>-means on a Randomly Generated Dataset</a> \n",
"2. <a href=\"#item2\">Using <em>k</em> for Customer Segmentation</a> \n"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Before we start with the main lab content, let's download all the dependencies that we will need."
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"button": false,
"collapsed": false,
"deletable": true,
"jupyter": {
"outputs_hidden": false
},
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Libraries imported.\n"
]
}
],
"source": [
"import random # library for random number generation\n",
"import numpy as np # library for vectorized computation\n",
"import pandas as pd # library to process data as dataframes\n",
"\n",
"import matplotlib.pyplot as plt # plotting library\n",
"# backend for rendering plots within the browser\n",
"%matplotlib inline \n",
"\n",
"from sklearn.cluster import KMeans \n",
"from sklearn.datasets.samples_generator import make_blobs\n",
"\n",
"print('Libraries imported.')"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"<a id='item1'></a>"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"## 1. *k*-means on a Randomly Generated Dataset"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Let's first demonstrate how *k*-means works with an example of engineered datapoints. "
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"#### 30 data points belonging to 2 different clusters (x1 is the first feature and x2 is the second feature)"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"button": false,
"collapsed": false,
"deletable": true,
"jupyter": {
"outputs_hidden": false
},
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Datapoints defined!\n"
]
}
],
"source": [
"# data\n",
"x1 = [-4.9, -3.5, 0, -4.5, -3, -1, -1.2, -4.5, -1.5, -4.5, -1, -2, -2.5, -2, -1.5, 4, 1.8, 2, 2.5, 3, 4, 2.25, 1, 0, 1, 2.5, 5, 2.8, 2, 2]\n",
"x2 = [-3.5, -4, -3.5, -3, -2.9, -3, -2.6, -2.1, 0, -0.5, -0.8, -0.8, -1.5, -1.75, -1.75, 0, 0.8, 0.9, 1, 1, 1, 1.75, 2, 2.5, 2.5, 2.5, 2.5, 3, 6, 6.5]\n",
"\n",
"print('Datapoints defined!')"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"#### Define a function that assigns each datapoint to a cluster"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"button": false,
"collapsed": false,
"deletable": true,
"jupyter": {
"outputs_hidden": false
},
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"assign_members function defined!\n"
]
}
],
"source": [
"colors_map = np.array(['b', 'r'])\n",
"def assign_members(x1, x2, centers):\n",
" compare_to_first_center = np.sqrt(np.square(np.array(x1) - centers[0][0]) + np.square(np.array(x2) - centers[0][1]))\n",
" compare_to_second_center = np.sqrt(np.square(np.array(x1) - centers[1][0]) + np.square(np.array(x2) - centers[1][1]))\n",
" class_of_points = compare_to_first_center > compare_to_second_center\n",
" colors = colors_map[class_of_points + 1 - 1]\n",
" return colors, class_of_points\n",
"\n",
"print('assign_members function defined!')"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"#### Define a function that updates the centroid of each cluster"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"button": false,
"collapsed": false,
"deletable": true,
"jupyter": {
"outputs_hidden": false
},
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"assign_members function defined!\n"
]
}
],
"source": [
"# update means\n",
"def update_centers(x1, x2, class_of_points):\n",
" center1 = [np.mean(np.array(x1)[~class_of_points]), np.mean(np.array(x2)[~class_of_points])]\n",
" center2 = [np.mean(np.array(x1)[class_of_points]), np.mean(np.array(x2)[class_of_points])]\n",
" return [center1, center2]\n",
"\n",
"print('assign_members function defined!')"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"#### Define a function that plots the data points along with the cluster centroids"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"button": false,
"collapsed": false,
"deletable": true,
"jupyter": {
"outputs_hidden": false
},
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"plot_points function defined!\n"
]
}
],
"source": [
"def plot_points(centroids=None, colors='g', figure_title=None):\n",
" # plot the figure\n",
" fig = plt.figure(figsize=(15, 10)) # create a figure object\n",
" ax = fig.add_subplot(1, 1, 1)\n",
" \n",
" centroid_colors = ['bx', 'rx']\n",
" if centroids:\n",
" for (i, centroid) in enumerate(centroids):\n",
" ax.plot(centroid[0], centroid[1], centroid_colors[i], markeredgewidth=5, markersize=20)\n",
" plt.scatter(x1, x2, s=500, c=colors)\n",
" \n",
" # define the ticks\n",
" xticks = np.linspace(-6, 8, 15, endpoint=True)\n",
" yticks = np.linspace(-6, 6, 13, endpoint=True)\n",
"\n",
" # fix the horizontal axis\n",
" ax.set_xticks(xticks)\n",
" ax.set_yticks(yticks)\n",
"\n",
" # add tick labels\n",
" xlabels = xticks\n",
" ax.set_xticklabels(xlabels)\n",
" ylabels = yticks\n",
" ax.set_yticklabels(ylabels)\n",
"\n",
" # style the ticks\n",
" ax.xaxis.set_ticks_position('bottom')\n",
" ax.yaxis.set_ticks_position('left')\n",
" ax.tick_params('both', length=2, width=1, which='major', labelsize=15)\n",
" \n",
" # add labels to axes\n",
" ax.set_xlabel('x1', fontsize=20)\n",
" ax.set_ylabel('x2', fontsize=20)\n",
" \n",
" # add title to figure\n",
" ax.set_title(figure_title, fontsize=24)\n",
"\n",
" plt.show()\n",
"\n",
"print('plot_points function defined!')"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"#### Initialize *k*-means - plot data points"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"button": false,
"collapsed": false,
"deletable": true,
"jupyter": {
"outputs_hidden": false
},
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 1080x720 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plot_points(figure_title='Scatter Plot of x2 vs x1')"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"#### Initialize *k*-means - randomly define clusters and add them to plot"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"button": false,
"collapsed": false,
"deletable": true,
"jupyter": {
"outputs_hidden": false
},
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA5kAAAJyCAYAAABOogTTAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAgAElEQVR4nOzdfXhcZ33n/893HoRGIVie8JDYqao6gvIL3tZxh+LQsDGgXyH0AQJZoCyYyAa3pBdsYsNugbKyaNO9+NE47tWSpe5a8rpXWlIKTSltmlYUB9ImoTJ22RiHVDaqitxNGkl2nEhC8/D9/TFHiaLM6GHmnJmR5v26rrkmOg/3+Z6jsaKPzrnv29xdAAAAAACEIVbvAgAAAAAAawchEwAAAAAQGkImAAAAACA0hEwAAAAAQGgImQAAAACA0BAyAQAAAAChIWQCQAMxsxEzczPbXu9aUH9m1hl8Hiqeb2xufzPrDLGuw0Gb+2pxvKgsdh4AgMoRMgEAqJKZba91uAqOuc/M3laL460mZtYeXJt99a4FAJpRot4FAACAsrKSvldm3XZJvZL+t6S7F2ljbv9seGUtqtbHK6VdxWsjSfsW2e7fVKz3iagLAoBmQsgEAKBBufuYpFdW2UZV+zf68arh7h+X9PF61wEAaw2PywIAAAAAQkPIBIBVwszWm9kDQb+/fzKzl65g333Bfoet6FfN7LiZPW1m/2Zm/9vMLp+3/cuDZT8wsxkze9jMPrjEMWJm9j4z+1sz+3czmzWzs2Z2l5m9psw+cTN7vZn9jpkdM7PH5u33Z2b2hkWOdzQ4pxvNLBWc4/fMbNrMHjezL5jZyxfZ/61m9lfBMbNmNhHs/8dm9q7lXNflCOpzMzsafP0LZvZ1MztnZk+Z2YNm9ktl9n3ewD9zy/Ts46Dvn9cf9Hn9Qsv1Fa3m2i9xvqVquLFEjaVeIwvauszMPmRmf2lm/2xmU2b2ZPDZ7TOz9hLHPyrp+yXqmXvtm7du0YF/zOwFZrbHzB4ys/PBZ+t7ZrbfzC4ts0/F328AWCt4XBYAVoHgF9q/kfQfJD0o6S3uPllhc38s6V2SZlXsN3eppB2SXheEwSsk3aNiv7bzklokvUrSQTNrd/fPlqjvYklfltQdLHJJFyRdJumdkm4ws//i7r+3YNf/R9Lfzfv6h0Fdl0l6m6S3mdkn3f23FjmfF0n6e0lXBfsXJL0kOMf/18x+2t1PL6j3VkmfmLfogqSUpFcEr9dLumuRY1bEzD4l6dNBjRckXSTpNZL+yMxe5u4HltFMXtJjkl4Y7D+j4vdp4TZLCePaL9e0ijWX8yIVr/9CvyvpHfO+PhdsuyV4/Wcz2+7uP5i3zYSKfSxfHHy98LhPLadgM3uJpHtV/FxJz16fuc/IjWb2Fnd/cJE2wvh+A8Cqw51MAGhwZvajkr6pYsD8mqTuKgLm2yT9nKT3Sro4eP1HSf9X0o9J+g1JX5B0v6Qr3L1dxbD5+WD/T5vZJSXaPaJiwPxO0P5F7r5O0noVw1xO0u+Y2c8s2G9W0hcl/YKKYTfl7i+U9DJJn1IxLP2mlbkTGugLjvNmFX+Jf2FwTj+QlJb0P+ZvHNxh+7Xgy/8h6SXu/iJ3TwXHvUHSXy5yvEr9pIp3Hz8l6ZLg2l4q6U/najGz9FKNuPu/uvulkn47WHSXu1+64PWvy6gnjGu/LO5eqsZLg/N4tYoBTCr+cWO+f5b06yr+kSPl7usltao46NE/qvgHkd9fcKy3B23Ofb3wmL+t5TmiYsCcVPEPJRe5+4uCtv+Pip+5u83sxWX2D+X7DQCrkrvz4sWLF68GeUkaUfEu4Pbg61dK+tdg2d2SXlBhu/uCNlzS+0usf9+89Y9KSixYH1PxF36XtGPBuu5g+fclpcsc/78G23x1hXV/KthvoMS6o8G6KUldJda/I1g/I6ll3vJ3BstPhfh92z7v+nUuWHfjvHWfLLFvq6THy1zbzrl9F/meHl6itpJ1VXntDwfr9lVzPEltkr4dbH///O/TMvZNz7tuP7bc67ac85D0unnn8eYS+71MxTumLunTYX2/efHixWutvLiTCQANysy2SvqGpMsl3SnpBnf/YZXN/kDSH5ZYPjjvvz/r7rn5K929IOnrwZebF+z7/uD9sLtPlDnuHwXvrzez+Arq/YvgfeEd0Pn+1N2HSyz/ioq/yL9AUte85U8G7+vMrG0FtVRrRtLzHo909xkVH8uUnn9t62k5175ah1S8W/ivkt7u7rPL3TH4rP1D8OXVIdd1Q/A+5O5/XeLYj+nZu/vvLNPGavt+A0BoCJkA0Jhep2Koe4mk/ynpfQuDX4W+GwTGhR6f998Pl9l3rm/b+gXLXxu832Jm/7fUS9JQsE2bpOc8bmvFQXtuseJAPo8Hg/DMDXZzPNhswyLn9I+lFrp7dt55za/5IRXvQl0m6QEz221mP7ZI+2H5rrs/XWbdWPC+8NpGKoRrX82xPy7p3SreiX6ruz9eZrufNrN+M3skGDjH59X41ohq3Bq8f32Rbeb6s77CzC4qsb7hvt8AUCsM/AMAjenTwfvfuftN5TYysx9RmZCl4p2hf1iw7N9KbejueTNbdBs9O5hMcsHyy4L3dcFrKc/cPTSzy1R87PUV89Y/rWI/uIKkuIoDuJT6JX7OhUXWzQTvz9Ts7pNm9j4V7w7/hII+fUEY/htJ/e5+3zLOY6VWVGfUQrr2lR775yT9ZvDlTnc/Xma7j0r6/yTNfTjzQX1zdzzXqfj4adg1viR4H1tkm7nBhkzF67QwUDbU9xsAaok7mQDQmL4QvL/BzD60yHZxFfuHlXq1RFrhs+b+X/JWd7dlvEbm7XtAxZBzRsU+lGl3f6G7v9SLg8Jsi6Jgd/8rFfvt7Zb0J5LO6tlRdo+a2cEojttg6nLtzeyVKj4+HZN0q7uXHMXXzF4l6TMqhrjfU3Hwnxe4e9qfHTRobhAdK9VGCF4QUbsAsKYRMgGgMf2+pD3Bf3/OzHaV2sjdRxYJc0drVOvcY7RXrmQnM2vRs487/md3/7I/f9Tcl1VbXDnuft7d/8Dd3+XuG1UMMX8QrP5gcLdtTarXtQ/mtfyKitOQfEXFwYXKeYeKv6fc6+4fdvfvuvvCqVmi+nz8e/D+o4tsMzevrKs4ZQoAIEDIBIAG5e63qzjVhqk4R+V761xSOQ8E7+9YdKvne7GevVNU8nFJPTvvZuSCELNbxXlIJenaWh27QnN9ayu5i1fza29mMRXnaH25pO9Keq+7+yK7zIW4co/SXqTyd1sL87ar5Pp8O3i/dpH93xC8P7pI30sAaEqETABoYO7+GRXn2otJOmxm5UayrKfDwXvGzHYstqGZzR/o5EkV7wJJxTlAF257maQPh1HggnaXeox4Onhv9Ecl50bJba9w31pf+8+oOJfphKRfdPfF+ixK0vng/Xn1BT6p4jyvpTw5778ruT5zj+G+Ss/e8X2Gmb1M0q8EX/5JBe0DwJpGyASABufun5Z0q4r9L+80s+vrXNJzBFM8fDn4st/M+oKQIqkYLM3srWb255L2z9vvKT1717DfzLYE28fM7I2S7lM0fe0+ZGb3mtl7FtTZbmafUHHOS+nZaSYa1cng/Roze/lKdqz1tTezd0v6qIoD97zT3U8vY7e/Dd5/zsw+MTfdjJm9xMw+K+njksZL7eju51TsZytJPSut192/KWlu6pJ+M7thbuodM/spFQeIWq/io+K/s9L2AWCtI2QCwCrg7r8u6bMqjgr+hQbsL7hD0t0qBuH/LumsmZ0zs/Mq3rm6W9IvltjvFhXvHP4HScfN7ClJT6k4b+clkkr2Ra2SSfpZFUeXPRtMizGp4qiltwbrDwaDAzWyo5JOS0pL+l4wBclI8Lp88V0l1fbavzl4dxX/UFJyqhsze2akZHf/Gz37x4tbJT1lZhMqBruPSuqX9NVFjvm/gvfbgu/x3LW5eZk175B0QsUw+cXg+E+qOB3PT6j4ebne3UsGXQBoZoRMAFgl3P2/qnjXpEXSl8zsZ+tc0jPc/Wl3v17Sz6sYDMYkpVSsdVjF0URvkHTTgv0eknS1iiF0UsUpHR5XceCjLZL+KYJy/0jSByXdJemUpKykF6o4dctXVBwl95cjOG6ognlA3yjpD1W83utVHKjmR7WMKcrqdO0TKj8a8sv07NQhc96lYr/kue+TSfp7Se9396VC8Kcl/TdJ3wn2m7s2y3p81t3/XcXrs1fFYJlV8fP8zyqOzPsqd3+gfAsA0Lxs8T73AAAAAAAsH3cyAQAAAAChIWQCAAAAAEJDyAQAAAAAhIaQCQAAAAAIDSETAAAAABCaJYc4bwYvfvGLvbOzs95lAAAAAEBdHDt27Al3XziVVEUImZI6Ozs1NDRU7zIAAAAAoC7M7F/CaovHZQEAAAAAoSFkAgAAAABCQ8gEAAAAAISGkAkAAAAACA0hEwAAAAAQGkImAAAAACA0hEwAAAAAQGgImQAAAACA0BAyAQAAAAChIWQCAAAAAEJDyAQAAAAAhIaQCQAAAAAITaLeBQAAgOaQK+Q0cm5EM7kZtSZa1dneqUSMX0UAYK3hJzsAAIjM+NS4+o/3a+DEgE5PnlYyllQ8Fle+kNdsflZd6S71bOnRrq27lE6l610uACAE5u71rqHuMpmMDw0N1bsMAADWjNn8rPqO9mn/g/tlMk3npstum0qk5HLt2bZHvdt71RJvqWGlAABJMrNj7p4Joy36ZAIAgFCNnh/V5js268BDBzSTm1k0YErSdG5aM7kZHXjogDbfsVmj50drVCkAIAqETAAAEJrR86PKHMzozOQZTWWnVrTvVHZKZybPKHMwQ9AEgFWMkAkAAEIxm59V95FuTUxPKO/5itrIe14T0xPqPtKtbD4bcoUAgFogZAIAgFD0He3T2IWxigPmnLznNXZhTH339YVUGQCglgiZAACgauNT49r/4P4VPyJbzlR2Src9cJsmpidCaQ8AUDuETAAAULX+4/0yWahtmkyHjh8KtU0AQPQImQAAoGoDJwaWHEV2paZz0zp84nCobQIAokfIBAAAVckVcjo9eTqStocnhpUr5CJpGwAQDUImAACoysi5ESVjyUjaTsaSGjk3EknbAIBoEDIBAEBVZnIzisfikbQdj8U1k5uJpG0AQDQImQAAoCqtiVblC9VNW1JOvpBXa6I1krYBANEgZAIAgKp0tncqW8hG0na2kFVne2ckbQMAokHIBAAAVUnEErpi/RWRtN2V7lIiloikbQBANAiZAACgaj1bepRKpEJtM5VIqWdLT6htAgCiR8gEAABV27V1l1weapsu186rdobaJgAgeoRMAABQtXQqrT3b9qgt2RZKe23JNu29eq/SqXQo7QEAaoeQCQAAQtG7vVcbL96ouFU3nUnc4tp48Ub1XtsbUmUAgFoiZAIAgFC0xFs0uGNQ6VS64qAZt7jSqbQGdwwqGU+GXCEAoBYImQAAIDQd6zo0tHtIm9ZvWvGjs23JNm1av0lDu4fUsa4jogoBAFEjZAIAgFB1rOvQt3/529rysi0r2m/Ly7bo+C8fJ2ACwCpHyAQAAKEaPT+qrb+/VSceO7Gi/U48dkJX/f5VGj0/GlFlAIBaIGQCAIDQjJ4fVeZgRmcmz2gqO7WifaeyUzozeUaZgxmCJgCsYoRMAAAQitn8rLqPdGtiekJ5z1fURt7zmpieUPeRbmXz2ZArBADUAiETAACEou9on8YujFUcMOfkPa+xC2Pqu68vpMoAALXUsCHTzBJm9mtm9s9m9kMz+4GZ3b6M/daZ2YCZTZrZeTO708wuqUXNAAA0q/Gpce1/cP+KH5EtZyo7pdseuE0T0xOhtAcAqJ2GDZmSBiR9RNJvS/pZSb8maXoZ+90labukD0i6UdKrJd0dSYUAAECS1H+8XyYLtU2T6dDxQ6G2CQCIXqLeBZRiZm+W9G5JP+nu313BfldLepOka939G8GyMUkPmVm3uw9GUjAAAE1u4MSApnPL+Vvw8k3npnX4xGF97LUfC7VdAEC0GvVO5k5Jf7eSgBm4TtJjcwFTktz9W5K+H6wDAAAhyxVyOj15OpK2hyeGlSvkImkbABCNRg2Zr5H0qJn9npk9aWZTZvZlM9uwxH6vlPRIieWngnUAACBkI+dGlIwlI2k7GUtq5NxIJG0DAKLRqCHzUhX7U25R8bHZHkk/JenPzGyxDh/rJZ0rsXwyWPccZrbPzPzs2bNVFwwAQLOayc0oHotH0nY8FtdMbiaStgEA0WjUkGnB663u/lfufpek90n6aUlvWGJfL9Pe85a7+z53tw0blrpBCgAAymlNtCpfqG7aknLyhbxaE62RtA0AiEajhsxJSf/H3cfnLbtf0qykK5fYr73E8naVvsMJAACq1NneqWwhG0nb2UJWne2dkbQNAIhGo4bMU2WWm6TCIvs9otJ9L8v11QQAAFVKxBK6Yv0VkbTdle5SItaQg+EDAMpo1JD5VUk/YWYvnrfsP0pKSvqnRfa7R9KlZnbN3AIzy0jaFKwDAAAR6NnSo1QiFWqbqURKPVt6Qm0TABC9Rg2ZByWNS/oLM/sFM3uPpD+UNOju989tZGbDZvbMLM3u/oCkeyUdMbO3m9nbJN0p6X7myAQAIDq7tu6SlxwWoXIu186rdobaJgAgeg0ZMt39SRUH+JmU9AVJn5P0NUnvXLBpQtLC4ezeLek+Sf2Sjkg6Jun6KOsFAKDZpVNp7dm2R23JtlDaa0u2ae/Ve5VOpUNpDwBQO+Ye7l8dV6NMJuNDQ0P1LgMAgFVtNj+rzXds1pnJM8p75aPNxi2uTes36eRNJ5WMRzP/JgDguczsmLtnwmirIe9kAgCA1acl3qLBHYNKp9KKW2XzZsYtrnQqrcEdgwRMAFilCJkAACA0Hes6NLR7SJvWb1rxo7NtyTZtWr9JQ7uH1LGuI6IKAQBRI2QCAIBQdazr0MM3PaybX3OzWhOtS44625ZsU2uiVbdsu0UnbzpJwASAVY4+maJPJgAAUZmYntCh44d0+MRhDU8MKxlLKh6LK1/IK1vIqivdpZ4tPdp51U4G+QGAOgqzTyYhU4RMAABqIVfIaeTciGZyM2pNtKqzvVOJWKLeZQEAFG7I5Cc7AACoiUQsoa50V73LAABEjD6ZAAAAAIDQEDIBAAAAAKEhZAIAAAAAQkPIBAAAAACEhpAJAAAAAAgNIRMAAAAAEBpCJgAAAAAgNIRMAAAAAEBoCJkAAAAAgNAQMgEAAAAAoSFkAgAAAABCQ8gEAAAAAISGkAkAAAAACA0hEwAAAAAQGkImAAAAACA0hEwAAAAAQGgImQAAAACA0BAyAQAAAAChIWQCAAAAAEJDyAQAAAAAhIaQCQAAAAAIDSETAAAAABCahgyZZnajmXmJ168ssd86Mxsws0kzO29md5rZJbWqGwAAAACaXaLeBSzhDZKm5319Zont75L045I+IKkg6TOS7pb0ukiqAwAAAAA8R6OHzH9096eWs6GZXS3pTZKudfdvBMvGJD1kZt3uPhhhnQAAAAAANejjshW6TtJjcwFTktz9W5K+H6wDAAAAAESs0UPmaTPLmdn3zOyXl9j2lZIeKbH8VLAOAAAAABCxRn1c9t8kfUrStyTFJf2SpM+bWZu7315mn/WSzpVYPilpUyRVAgAAAACeoyFDprvfK+neeYvuMbMXSPp1M/sddy+U27XEMiuzXGa2T1LvZZddVk25AAAAAIBAoz8uO9+fSkpL6iyzflJSe4nl7Sp9h1Puvs/dbcOGDaEUCAAAAADNbjWFzDkl70qq2B+zVN/Lcn01AQAAAAAhW00h8x2SnpD0L2XW3yPpUjO7Zm6BmWVU7I95T/TlAQAAAAAask+mmX1JxUF/vqPiwD/vCl4fmeuPaWbDku5z912S5O4PmNm9ko6Y2UclFSR9RtL9zJEJAAAAALXRkCFT0vck7ZT0IyoO3PNdSTvc/Q/nbZNQMYDO925Jt0vqV/Eu7VclfSTyagEAAAAAkiRzL9fFsXlkMhkfGhqqdxkAAAAAUBdmdszdM2G0tZr6ZAIAAAAAGhwhEwAAAAAQGkImAAAAACA0hEwAAAAAQGgImQAAAACA0BAyAQAAAAChIWQCAAAAAEJDyAQAAAAAhIaQCQAAAAAIDSETAAAAABAaQiYAAAAAIDSETAAAAABAaAiZAAAAAIDQEDIBAAAAAKEhZAIAAAAAQkPIBAAAAACEhpAJAAAAAAgNIRMAAAAAEBpCJgAAAAAgNIRMAAAAAEBoCJkAAAAAgNAQMgEAAAAAoSFkAgAAAABCQ8gEAAAAAISGkAkAAAAACA0hEwAAAAAQGkImAAAAACA0hEwAAAAAQGgImQAAAACA0DR8yDSzjWb2lJm5mb1wiW3XmdmAmU2a2Xkzu9PMLqlVrQAAAADQ7Bo+ZEr6rKSnlrntXZK2S/qApBslvVrS3ZFUBQAAAAB4nkS9C1iMmb1O0psl/ZaKYXOxba+W9CZJ17r7N4JlY5IeMrNudx+Mul4AAAAAaHYNeyfTzOKSflfSpyU9sYxdrpP02FzAlCR3/5ak7wfrAAAAAAARa9iQKelXJLVK+twyt3+lpEdKLD8VrAMAAAAARKwhQ2YwWM9vSNrj7tll7rZe0rkSyyeDdaWOs8/M/OzZs5UVCgAAAAB4joYMmZJulfSQu//VCvfzEsuszHK5+z53tw0bNqy0PgAAAABACQ038I+ZvUrSTkn/0czag8Vtwfs6M8u7+3SJXSclvaTE8naVvsMJAAAAAAhZI97JfLmkpKQHVAyOk3q2X+YPVBwMqJRHVLrvZbm+mgAAAACAkDXcnUxJ90t6/YJlb5b03yS9RdKZMvvdI+lTZnaNu98vSWaWkbQpWAcAAAAAiFjDhUx3f0LS0fnLzKwz+M9vuvtTwbJhSfe5+65gvwfM7F5JR8zso5IKkj4j6X7myAQAAACA2mjEx2WXKyEpvmDZuyXdJ6lf0hFJxyRdX+O6AAAAAKBpmXvJgVebSiaT8aGhoXqXAQAAAAB1YWbH3D0TRlur+U4mAAAAAKDBEDIBAAAAAKEhZAIAAAAAQkPIBAAAAACEhpAJAAAAAAgNIRMAAAAAEBpCJgAAAAAgNIRMAAAAAEBoCJkAAAAAgNAQMgEAAAAAoSFkAgAAAABCQ8gEAAAAAISGkAkAAAAACA0hEwAAAAAQGkImAAAAACA0hEwAAAAAQGgImQAAAACA0BAyAQAAAAChIWQCAAAAAEJDyAQAAAAAhIaQCQAAAAAIDSETAAAAABCaRL0LAAAAWA1yhZxGzo1oJjej1kSrOts7lYjxqxQALMRPRgAAgDLGp8bVf7xfAycGdHrytJKxpOKxuPKFvGbzs+pKd6lnS492bd2ldCpd73IBoCGYu9e7hrrLZDI+NDRU7zIAAECDmM3Pqu9on/Y/uF8m03Ruuuy2qURKLteebXvUu71XLfGWGlYKAOEws2PungmjLfpkAgAAzDN6flSb79isAw8d0ExuZtGAKUnTuWnN5GZ04KED2nzHZo2eH61RpQDQmAiZAAAAgdHzo8oczOjM5BlNZadWtO9UdkpnJs8oczBD0ATQ1AiZAAAAKj4i232kWxPTE8p7vqI28p7XxPSEuo90K5vPhlwhAKwODRkyzewGM/sHMxs3sxkz+56Z/bqZLdrJwczWmdmAmU2a2Xkzu9PMLqlV3QAAYPXqO9qnsQtjFQfMOXnPa+zCmPru6wupMgBYXRoyZEq6RNLXJX1A0nWS+iV9UtL+Jfa7S9L2YL8bJb1a0t1RFQkAANaG8alx7X9w/4ofkS1nKjul2x64TRPTE6G0BwCrSUNOYeLuv79g0dfN7EWSftXMPuwlhsQ1s6slvUnSte7+jWDZmKSHzKzb3QcjLxwAAKxK/cf7ZbJQ2zSZDh0/pI+99mOhtgsAja5R72SWMi5pscdlr5P02FzAlCR3/5ak7wfrAAAASho4MbDkKLIrNZ2b1uETh0NtEwBWg4a8kznHzOKSXiBpq6SPSPqfpe5iBl4p6ZESy08F6wAAAJ4nV8jp9OTpSNoenhhWrpBTItbQv3IBQKga/U7m08Hrm5Luk7TY8ybrJZ0rsXwyWAcAAPA8I+dGlIwlI2k7GUtq5NxIJG0DQKNq9JD5Wkmvk7RX0lsl/d4S25e6y2lllsvM9pmZnz17tqoiAQDA6jWTm1E8Fo+k7XgsrpncTCRtA0CjauiQ6e7fdvf73X2/io/LfsjMriiz+aSk9hLL21X6DqfcfZ+724YNG8IpGAAArDqtiVblC9VNW1JOvpBXa6I1krYBoFE1dMhc4NvB+4+VWf+ISve9LNdXEwAAQJ3tncoWspG0nS1k1dneGUnbANCoVlPI/Jng/ftl1t8j6VIzu2ZugZllJG0K1gEAADxPIpbQFevLPShVna50F4P+AGg6DRkyzeyvzeyjZnadmf2smfVJuk3SXe5+Othm2MwOze3j7g9IulfSETN7u5m9TdKdku5njkwAALCYni09SiVSobaZSqTUs6Un1DYBYDVoyJAp6R8l3Sjpi5L+RNIvSPq4pPfN2yYhaWEv/XerOAptv6Qjko5Juj7iWgEAwCq3a+sueelxAivmcu28ameobQLAatCQz2+4+6ckfWqJbTpLLDsnqSd4AQAALEs6ldaebXt04KEDmspOVd1eW7JNt2y7RelUOoTqAGB1adQ7mQAAADXVu71XGy/eqLhVN51J3OLaePFG9V7bG1JlALC6NOSdTABA88oVcho5N6KZ3IxaE63qbO9cswOnNNO51tNyr3NLvEWDOwaVOZjRxPSE8r7yaU3iFlc6ldbgjkEl48kwykeD4t8vUB7/EgAAdTc+Na7+4/0aODGg05OnlYwlFY/FlS/kNZufVVe6Sz1berRr665V//hhM51rPVV6nTvWdWho95C6j3Rr7MLYih6dbUu2aePFGzW4Y1Ad6zqiOC3UGf9+geUx93A7ua9GmUzGh4aG6l0GADSd2fys+o72af+D+2UyTeemy26bSqTkcu3Ztke923vVEm+pYaXVa6ZzraewrvNK2mlLtqngBe29eq96r+3lDuYaxL9fNAMzO+bumVDaImQSMgGgHkbPjzbN3aJmOtd6iuI6T0xP6La74V8AACAASURBVNDxQzp84rCGJ4afc+cqW8g+c+dq51U7uXO1RvHvF82CkBkyQiYA1Nbo+dFQ+r0N7R5q+F/emulc66kW15k+eM2Hf79oJmGGTEaXBQDU1Gx+Vt1Huiv+pU2S8p7XxPSEuo90K5vPhlxheJrpXOupVtc5EUuoK92lzS/drK50FwFzjePfL1A5QiYAoKb6jvZp7MJYxb+0zcl7XmMXxtR3X19IlYWvmc61nrjOiAKfK6ByPC4rHpcFgFoZnxrX5bdfrpncTGhttiZaNbZnrOH6wzXTudYT1xlR4HOFZsTjsgCAVan/eL9MFmqbJtOh44dCbTMMzXSu9cR1RhT4XAHVIWQCAGpm4MTAokP/V2I6N63DJw6H2mYYmulc64nrjCjwuQKqQ8gEANRErpDT6cnTkbQ9PDGsXCEXSduVaKZzrSeuM6LA5wqoHiETAFATI+dGlIxFM0l9MpbUyLmRSNquRDOdaz1xnREFPldA9QiZAICamMnNKB6LR9J2PBYPdYCOajXTudYT1xlR4HMFVI+QCQCoidZEq/KF6qYCKCdfyKs10RpJ25VopnOtJ64zosDnCqgeIRMAUBOd7Z3KFqKZjDxbyKqzvTOStivRTOdaT1xnRIHPFVA9QiYAoCYSsYSuWH9FJG13pbuUiCUiabsSzXSu9cR1RhT4XAHVI2QCAGqmZ0uPUolUqG2mEin1bOkJtc0wNNO51hPXGVHgcwVUh5AJAKiZXVt3yeWhtuly7bxqZ6hthqGZzrWeuM6IAp8roDqETABAzaRTae3ZtkdtybZQ2mtLtmnv1XuVTqVDaS9MzXSu9cR1RhT4XAHVMfdw/0qzGmUyGR8aGqp3GQDQFGbzs9p8x2admTyjvFc+gmPc4tq0fpNO3nRSyXg0c9pVq5nOtZ64zogCnys0GzM75u6ZMNriTiYAoKZa4i0a3DGodCqtuFU2F13c4kqn0hrcMdjQv7Q107nWE9cZUeBzBVSOkAmgYY2P13d/RKdjXYeGdg9p0/pNK34crS3Zpk3rN2lo95A61nVEVGF4mulc64nrjCjwuQIqQ8gE0JD27ZN+4iekRx+tbP9HHy3uv29fmFUhTB3rOvTwTQ/r5tfcrNZE65IjObYl29SaaNUt227RyZtOrqpf2p5zrvFWJWOL39FIxpKr9lzrqZk+U6gdPlfAytEnU/TJBBrNvn1SX1/xvzdskL7+dekVr1j+/o8+Kr3+9dLZs8Wve3sJm41uYnpCh44f0uEThzU8MaxkLKl4LK58Ia9sIauudJd6tvRo51U7V+3AGbP5WfUd7dNtD9ymfCGvnOfKbpuwhOKxuPZevVe923vVEm+pYaVrQzN8plB7fK6wloXZJ5OQKUIm0EjmB8w5KwmaCwPmHILm6pEr5DRybkQzuRm1JlrV2d656icvHz0/qu4j3Rq7MKap7NSy92tLtmnjxRs1uGOQuyFVWIufKdQfnyusNYTMkBEygcYwPl58xHVhQJSWFzTLBcy5/b/zHemSS8KrF1iO0fOjyhzMaGJ6oqIRKucGDqFfFwAgSowuC2BNuuSSYpDcsOH5686eLQbIcn00lwqYX/86ARO1N5ufVfeR7ooDpiTlPa+J6Ql1H+lWNp8NuUIAAMLXkCHTzP6TmX3FzMbM7CkzO2Zmv7SM/daZ2YCZTZrZeTO708z4tRJYRV7xipUHzeUEzJX06QTC0ne0T2MXxqqaY08qBs2xC2Pqu69v6Y0BAKizhgyZkvZIekrSLZJ+UdLXJf2RmX14if3ukrRd0gck3Sjp1ZLujqxKAJFYSdAkYKJRjU+Na/+D+1fUB3MxU9kp3fbAbZqYngilPQAAotKoIfMX3P097v4n7v537v5RSX+sYvgsycyulvQmSe939y+5+59Jeq+ka8ysuzZlAwjLcoLmX/4lARONq/94v0wWapsm06Hjh0JtEwCAsDVkyHT3J0osPi7ppYvsdp2kx9z9G/Pa+Zak7wfrAKwySwXNn/95AiYa18CJAU3npkNtczo3rcMnDofaJgAAYWvIkFnGayV9d5H1r5T0SInlp4J1AFahxYJmKQRMNIJcIafTk6cjaXt4Yli5Qvk5NteqXCGn4YlhPfz4w017DQBgtVgVk/mY2RslvVXSzkU2Wy/pXInlk5I2RVEXgNqYC5rlHo2dQ8BEoxg5N6JkLKnZ/GzobSdjSY2cG1FXuiv0thvN+NS4+o/3a+DEgE5Pnn7OxPez+dlnJr7ftXUXE98DQANp+DuZZtYp6Y8k/bm7H15i81KTflqZ5TKzfWbmZxf7rRVAQ3jFK6SDBxff5uBBAiYaw0xuRvFYPJK247G4ZnIzkbTdKGbzs/rk1z6py2+/XL1He3XqiVOazc/q6ezTevKHT+rp7NPKFrI69cQp9R7t1cb9G/XJr30yklAPAFi5hg6ZZpaWdI+kURUH8VnMpKT2EsvbVfoOp9x9n7vbhuU+hwegbh59VNq9e/Ftdu8uP48mUEutiVblC9VNW1JOvpBXa6I1krYbwej5UW2+Y7MOPHRAM7mZJfu1TuemNZOb0YGHDmjzHZs1en60RpUCAMpp2JBpZm2SviqpRdLPufvTS+zyiEr3vSzXVxPAKrHYNCXzlZtHE6i1zvZOZQvZSNrOFrLqbO+MpO16Gz0/qszBjM5Mnlnx1C9T2SmdmTyjzMEMQRMA6qwhQ6aZJSR9UdLLJV3n7o8vY7d7JF1qZtfMayejYn/MeyIpFEDklhsw5xA00QgSsYSuWH9FJG13pbuUiK2KIRVWZDY/q+4j3ZqYnlDeK7sLnPe8JqYn1H2kW9l8NCEfALC0hgyZku6Q9BZJvyEpbWbb5r1eIElmNmxmz0wW5u4PSLpX0hEze7uZvU3SnZLud/fBOpwDgCotFjA3bJC++tXF59EkaKKeerb0KJVIhdpmKpFSz5aeUNtsFH1H+zR2YazigDkn73mNXRhT3319IVUGAFgpcy85Jk5dmdmIpB8ts/rH3H0k2Oaou984b792SbdLul7FAP1VSR8pM+/mMzKZjA8NDYVQOYCwLBUw50aRXe52QK1NTE9o4/6NoQ7S05po1diesTU3kur41Lguv/1yrhUA1JGZHXP3TBhtNeSdTHfvdHcr8xqZt82NC/Y75+497t7u7i9y9/csFTABNJ6VBMfF5tHkjibqKZ1Ka8+2PWpLtoXSXluyTXuv3rsmQ1P/8X6ZLNQ2TaZDxw8tvSEAIHQNGTIBNK9K7kwSNNGoerf3auPFGxW36qYziVtcGy/eqN5re0OqrLEMnBhYchTZlZrOTevwicOhtgkAWB5CJoCGMT5e+aOvywma4+Ph1gsspSXeosEdg0qn0hUHzbjFlU6lNbhjUMl4MuQK6y9XyOn05OlI2h6eGFaukIukbQBAeYRMAA3jkkukD37w+cuX27dysaD5wQ8W2wdqrWNdh4Z2D2nT+k0rfnS2LdmmTes3aWj3kDrWdURUYX2NnBtRMhZNeE7Gkho5NxJJ2wCA8giZABrKvn1S77wnAlc6eE+poNnbW2wXqJeOdR16+KaHdfNrblZronXJUWfbkm1qTbTqlm236ORNJ9dswJSkmdyM4rHqHicuJx6LhzqYEABgedbeRFsAVr25QPgHf1DZ6LBzQfP1ry/ewSRgohG0xFt06xtv1d7X7tWh44d0+MRhDU8MKxlLKh6LK1/IK1vIqivdpZ4tPdp51c41OcjPQq2JVuUL1U1bUk6+kFdrojWStgEA5TXkFCa1xhQmQGMaH6/uEddq9weilivkNHJuRDO5GbUmWtXZ3qlErLn+/psr5HTRb12k2fxs6G23xFv09CeebrprCgCVCHMKE37qAmhY1QZEAiYaXSKWUFe6q95l1FUiltAV66/QqSdOhd52V7qLgAkAdUCfTAAAUFc9W3qW7Ke6UqlESj1bekJtEwCwPIRMAABQV7u27pIr3O47LtfOq3aG2iYAYHkImQAAoK7SqbT2bNuz4ileymlLtmnv1XubYuAkAGhEhEwAAFB3vdt7tfHijYpbddOZxC2ujRdvVO+1vUtvDACIBCETAADUXUu8RYM7BpVOpSsOmnGLK51Ka3DHoJLxZMgVAgCWi5AJAAAaQse6Dg3tHtKm9ZtW/OhsW7JNm9Zv0tDuIXWs64ioQgDAchAyAQBAw+hY16GHb3pYN7/mZrUmWpccdbYt2abWRKtu2XaLTt50koAJAA3A3MMdzW01ymQyPjQ0VO8yAADAPBPTEzp0/JAOnzis4YlhJWNJxWNx5Qt5ZQtZdaW71LOlRzuv2skgPwBQJTM75u6ZUNoiZBIyAQBodLlCTiPnRjSTm1FrolWd7Z1KxBL1LgsA1owwQyY/nQEAQMNLxBLqSnfVuwwAwDLQJxMAAAAAEBpCJgAAAAAgNIRMAAAAAEBoCJkAAAAAgNAQMgEAAAAAoWF0WQAAsKbVa/qTZpt2pdnOF0B5/MsHAABrzvjUuPqP92vgxIBOT55WMpZUPBZXvpDXbH5WXeku9Wzp0a6tu5ROpVf9ceul2c4XwPKYu9e7hrrLZDI+NDRU7zIAAECVZvOz6jvap/0P7pfJNJ2bLrttKpGSy7Vn2x71bu9VS7xl1R23XprtfIFmYGbH3D0TSluETEImAABrwej5UXUf6dbYhTFNZaeWvV9bsk0bL96owR2D6ljXsWqOWy/Ndr5AswgzZDLwDwAAWPVGz48qczCjM5NnVhR8JGkqO6Uzk2eUOZjR6PnRVXHcemm28wVQGUImAACoiVwhp+GJYT38+MManhhWrpALpd3Z/Ky6j3RrYnpCec9X1Ebe85qYnlD3kW5l89mGPm69NNv5AqgcIRMAAERmfGpcn/37z+rKz12pi37rIm35/Bb9TP/PaMvnt6jt1jZd+bkr9dm//6wmpicqPkbf0T6NXRirOPjMyXteYxfG1HdfX0Mft16a7XwBVK4h+2SaWZekj0naJmmzpG+6+/Zl7LdO0gFJb1MxQH9V0kfcfXyx/eiTCQBAuGo1MMz41Lguv/1yzeRmwihbktSaaNXYnrFFR0Ot13HrpdnOF2hGzdAn81WS3iLp0eC1XHdJ2i7pA5JulPRqSXeHXBsAAFjE6PlRbb5jsw48dEAzuZlFA6YkTeemNZOb0YGHDmjzHZtX1F+v/3i/TFZtyc9hMh06fqghj1svzXa+AKrTqCHzL9z9R9z9P0k6uZwdzOxqSW+S9H53/5K7/5mk90q6xsy6I6wVAICmVKqPZa0Hhhk4MbBkiF2p6dy0Dp843JDHrZdmO18A1UnUu4BS3L1QwW7XSXrM3b8xr51vmdn3g3WDYdUHAECzGp8aV//xfg2cGNDpydNKxpKKx+LKF/L6Ye6HMjPlCjm5KuuOM39gmJM3nVQyniy7ba6Q0+nJ05WeyqLmQnMi9vxflep13HpptvMFUL1GvZNZiVdKeqTE8lPBOgAAUKHZ/Kw++bVP6vLbL1fv0V6deuKUZvOzejr7tJ784ZN6Ovu0cp5TtpCtOGDOWe7AMCPnRpSMlQ+h1UjGkho5N9JQx62XZjtfANVbSyFzvaRzJZZPBuuex8z2mZmfPXs20sIAAFjNVtrHMgxT2Snd9sBti446O5ObUTwWj+T48Vi87CA39TpuvTTb+QKo3loKmZJK/unUyiyXu+9zd9uwYUO0VQEAsEpV08eyWksNDNOaaFW+UN10GuXkC3m1Jlob6rj10mznC6B6aylkTkpqL7G8XaXvcAIAgEXM5mfVfaRbE9MTVc+NWImlBobpbO9UtpCN5NjZQlad7Z0Nddx6abbzBVC9tRQyH1Hpvpfl+moCAIBF9B3t09iFsboEzDlzA8OUkogldMX6KyI5ble6q+xgNPU6br002/kCqN5aCpn3SLrUzK6ZW2BmGUmbgnUAAGCZxqfGtf/B/TV/RHahpQaG6dnSo1QiFeoxU4mUerb0LLpNvY5bL812vgCq05Ah08zazOwGM7tB0kZJL5n72szagm2GzeyZjhru/oCkeyUdMbO3m9nbJN0p6X53Z/oSAABWoP94v0xW7zKWHBhm19ZdVY9mu5DLtfOqnYtuU6/j1kuznS+A6jRkyJT0UklfDF7bJF057+uXBtskJC0c6uzdku6T1C/piKRjkq6vQb0AAKwpAycGajKK7FKWGhgmnUprz7Y9aku2hXK8tmSb9l69V+lUetHt6nXcemm28wVQHXMP969Sq1Emk/GhoaF6lwEAQEPIFXK66Lcu0mx+tt6lqCXeoqc/8fSi/fZm87PafMdmnZk8U1X/0bjFtWn9Jp286aSS8aXnhazXceul2c4XaDZmdszdM2G01ah3MgEAQJ2MnBtRMtYYv/wvZ2CYlniLBncMKp1KK26VzecYt7jSqbQGdwwuO/jU67j10mznC6ByhEwAAPAcM7kZxWOVhYgwrWRgmI51HRraPaRN6zet+JHOtmSbNq3fpKHdQ+pY17Gifet13HpptvMFUJllh0wzu8rMbjGzD5vZjy+y3VvNrD+c8gAAQK21JlqVL9Rv2pI5Kx0YpmNdhx6+6WHd/Jqb1ZpoXXI01LZkm1oTrbpl2y06edPJioNPvY5bL812vgBWbll9Ms3styXdMm+RS7pD0l53zy7YtlfSf3f3+v8JdJnokwkAwLMaoU9mW7JNt2y7Rb/5ht+saP+J6QkdOn5Ih08c1vDEsJKxpOKxuPKFvLKFrLrSXerZ0qOdV+0MdfCZeh23XprtfIG1LMw+mUuGTDO7XtKXJD0p6S5JWUnvUHGU129I+jl3n5q3PSETAIBV7srPXalTT5yqy7HDHhgmV8hp5NyIZnIzak20qrO9c8l+nmGo13HrpdnOF1hrwgyZy/mX/yFJM5Je4+7fCwr4uKRDkm6Q9FUze4u7l5/ECgAArCo9W3rUe7S35tOYRDEwTCKWUFe6K5S2VsNx66XZzhdAecvpk7lV0pfnAqYkufsFd3+npAOStkv6CzN7QTQlAgCAWtu1dZdctZ3mjIFhAGBtWE7IfKGkfym1wt33SLpN0hsl3W1mLSHWBgAA6iSdSmvPtj0rHkG0EgwMAwBry3Iel/03SZeWW+nuHzOzhKT/omLfze+EVBsAAKij3u29+uJ3v6gzk2eU98pHmzVZcd5NEwPDAEATWE7IPCXp2sU2cPdbgruYH5L0+jAKAwAA9dUSb9HgjkFlDmY0MT1RUdCc62M5tHtIGy7ewMAwANAElvO47D2SNpnZ6xbbyN1/VcXBgKJ/rgYAANREx7oODe0e0qb1m1b86OzCPpZzA8NsfulmdaW7CJgAsEYtJ2R+SdJnJF2y1Ibu/kFJfZKOVFkXAABoEB3rOvTwTQ/r5tfcrNZEq1KJ1KLb08cSAJrbkvNkVtSoWcLdc6E3HBHmyQQAYHkmpid06PghHT5xWMMTw/SxBIA1Isx5MlcUMs3soKSPLDYnppl1SvqCu2+ruroaIWQCALByuUKOPpYAsEaEGTJX+n+CD0jaZmbvdPdHShR2g6Q/kPSiMIoDAACNa66PJQAA8y2nT+Z8t0q6UtKQmfXMLTSzFjO7Q9JdkvKSrg+vRAAAAADAarGikOnun5L0JkkXJP0vM/tDM8tI+pakX5H0D5K2uPtXQq8UAAAAANDwVnonU+7+NUk/KWlQ0nskPSTpVZJ+U9K17v6DUCsEAAAAAKwalfbOf0rSv0uy4Ovzkr7h7oVQqgIAAAAArEorvpNpZj8p6duSfknSvSo+Jtsi6a/N7FYzW3GbAAAAAIC1YUWB0Mx+VdIDkjZJ+oS7X+fuByX9lKTvSPo1Sd80M2ZdBgAAAIAmtNK7jr8r6XEV+15+Zm6hu/+zpG2S7pB0taTjoVUIAAAAAFg1Vton888l7XT3yYUr3H1W0ofN7GuSDoVRHAA0EiaeB4Dy+BkJYM6K/uW7+5LzX7r73WZ2rPKSAKBxjE+Nq/94vwZODOj05GklY0nFY3HlC3nN5mfVle5Sz5Ye7dq6S+lUut7lAkBN8TMSQCnm7vWuoe4ymYwPDQ3VuwwADWQ2P6u+o33a/+B+mUzTuemy26YSKblce7btUe/2XrXEW2pYKQDUHj8jgbXHzI65eyaUtgiZhEwAzzV6flTdR7o1dmFMU9mpZe/XlmzTxos3anDHoDrWMf4ZgLWJn5HA2hRmyGS6EQCYZ/T8qDIHMzozeWZFvzxJ0lR2SmcmzyhzMKPR86MRVQgA9cPPSADLQcgEgMBsflbdR7o1MT2hvOcraiPveU1MT6j7SLey+WzIFQJA/fAzEsByNWzINLMrzexrZjZlZmfN7NNmFl/GfuvMbMDMJs3svJndaWaX1KJmAKtb39E+jV0Yq/iXpzl5z2vswpj67usLqTIAqD9+RgJYrobsk2lm6yWdlPRdSZ+RdIWk2yTd7u6/vsS+fy3pxyV9VFIh2P8xd39duX3okwlgfGpcl99+uWZyM6G12Zpo1dieMUZUBLDq8TMSWPuaoU/mr0hKSXq7u/+tu39eUp+kPWb2onI7mdnVkt4k6f3u/iV3/zNJ75V0jZl116JwAKtT//F+mSzUNk2mQ8eZNhjA6sfPSAAr0agh8zpJ97r7k/OWfUHF4HntEvs95u7fmFvg7t+S9P1gHQCUNHBiYNEh+CsxnZvW4ROHQ20TAOqBn5EAVqJRQ+YrJT0yf4G7j0qaCtYte7/AqSX2A9DEcoWcTk+ejqTt4Ylh5Qq5SNoGgFrgZySAlWrUkLle0rkSyyeDdWHvB6CJjZwbUTKWjKTtZCypkXMjkbQNALXAz0gAK9WoIVOSSo1IZGWWV7Sfme0zMz979mwF5QFYK2ZyM4rHlhy8uiLxWDzUgTIAoNb4GQlgpRo1ZE5Kai+xfJ1K36lcar/2Uvu5+z53tw0bNlRUJIC1oTXRqnyhuiH5y8kX8mpNtEbSNgDUAj8jAaxUo4bMR7SgD6WZ/Yiki1S6z2XZ/QLl+moCgDrbO5UtRDMpeLaQVWd7ZyRtA0At8DMSwEo1asi8R9KbzOziecveJWla0n1L7HepmV0zt8DMMpI2BesA4HkSsYSuWH9FJG13pbuUiCUiaRsAaoGfkQBWqlFD5ucl/VDSl82s28x2S9onaf/8aU3MbNjMnplgyd0fkHSvpCNm9nYze5ukOyXd7+6DNT0DAKtKz5YepRKpUNtMJVLq2dITapsAUA/8jASwEg0ZMt19UtIbJcUl/YWkPkm3S+pdsGki2Ga+d6t4t7Nf0hFJxyRdH2W9AFa/XVt3yZccV2xlXK6dV+0MtU0AqAd+RgJYiYYMmZLk7t919ze4e8rdL3P3T7l7fsE2ne5+44Jl59y9x93b3f1F7v4ed3+ipsUDWHXSqbT2bNujtmRbKO21Jdu09+q9SqfSobQHAPXEz0gAK9GwIRMAaq13e682XrxRcatuqP64xbXx4o3qvXbhwxcAsHrxMxLAchEyEblcIafhiWE9/PjDGp4YVq6Qq3dJQEkt8RYN7hhUOpWu+JeouMWVTqU1uGNQyXg0k5cDQD3wMxLAcjGcFyIxPjWu/uP9GjgxoNOTp5WMJRWPxZUv5DWbn1VXuks9W3q0a+suHpVBQ+lY16Gh3UPqPtKtsf+/vfuPr/O8C7v/+eqc40gKqW0V+kBcjGaLkGaGOUGsDk0Xp/X6tOVHGbTrjw1T2SMdfkaX2BQYpSiiLbC2MWZAHsjqH2RAfzz0Wbe1QIrbOLSQhCnYW+OmzWxXGJR2UMt2TSRFOkfX/jhHiaLot+6j8+vzfr3OS9Z97us636+k+/b5nvu+ruvKMKOTo0tu21noZNM1mzi++zib12+uYpSSVBueIyUtRaSU7SDuRtTb25sGBwdrHUZTmChNMHBigIMPHyQIxopj8+7bke8gkdi/Yz/9O/tZl1u3hpFKC1vO33JnoZOpNMWBmw/Qf2u/n85LanqeI6XmExGPppR6M+nLItMiMyvnL5/3k001nZGxEQ6fPMyxU8c4M3LmOVflJ6cmn7kqv+fGPV6Vl9RyPEdKzcMiM2MWmat3/vJ5eu/tZWRshNJzJwFekukxGoO3D1poqm4Vp4oMXRpivDhOe76d7g3dLiIuSRWeI6XGlmWR6ZGvVZsoTbDrvl0rLjABSqnEyNgIu+7bxel9p72VRnUp35anp6un1mFIUl3yHClpmrPLatUGTgwwfGV4xQXmtFIqMXxlmIEHBzKKTJIkSdJas8jUqlwYvcDBhw8uawzmQkYnR7n7obsZGRvJpD9JkiRJa8siU6ty5OQRgsi0zyA4fPJwpn1KkiRJWhsWmVqVo6eOLjht+UqMFcc4dupYpn1KkiRJWhsWmVqx4lSRsxfPVqXvMyNnKE4Vq9K3JEmSpOqxyNSKDV0aotBWnVlgC20Fhi4NVaVvSZIkSdVjkakVGy+Ok2vLVaXvXFuO8eJ4VfqWJEmSVD2uk6kVa8+3U5pa3bIl8ylNlWjPt1elbzW+Vlvwu9XylSRJjc13KVqx7g3dTE5NVqXvyalJujd0V6VvNaYLoxc4cvIIR08d5ezFsxTaCuTacpSmSkyUJujp6qFvex97b9pLV0dXrcNdtVbLV5IkNY9IKdU6hprr7e1Ng4ODtQ6jId3wmzfw+Ncez77fb7qB0/tOZ96vGs9EaYKBEwMcfPggQSw4m3FHvoNEYv+O/fTv7Gddbt0aRpqNVstXkiTVh4h4NKXUm0VfjsnUqvRt76Mj35Fpnx35Dvq292XapxrT+cvn2XbPNg49cojx4viiy+WMFccYL45z6JFDbLtnG+cvn1+jSLPRavlKkqTmZJGpVdl7014S2V4NTyT23Lgn0z7VeM5fPk/vvb2cu3iO0cnRZbUdnRzl3MVz9N7b2zCFV6vlK0mSmpdFplalq6OL/Tv201nozKS/zkInB24+4BizFjdRmmDXfbsYGRuhlFY2uVQplRgZG2HXfbuYLFVn7HBWWi1fSZLU3CwytWr9O/vZdM0mcrG65UxykWPTNZvov7U/o8jUqAZOIH0fQgAAIABJREFUDDB8ZXjFBde0UioxfGWYgQcHMoqsOlotX0mS1NwsMrVq63LrOL77OF0dXSsuNHORo6uji+O7j1PIFTKOUI3kwugFDj58cNm3jM5ndHKUux+6m5GxkUz6y1qr5StJkpqfRaYysXn9ZgZvH2TLxi3LvnW2s9DJlo1bGLx9kM3rN1cpQjWKIyePEESmfQbB4ZOHM+0zK62WryRJan4WmcrM5vWbeWzfY9zx0jtoz7cvOutsZ6GT9nw7d+64k9P7TltgCoCjp44uOqvqco0Vxzh26limfWal1fKVJEnNL1/rANRc1uXW8d5XvpcD33uAwycPc+zUMc6MnHnOQvKTU5PPLCS/58Y9TvKjZxSnipy9eLYqfZ8ZOUNxqki+rX5Oe62WryRJag2++1BVdHV08Y7vfQfv+N53UJwqMnRpiPHiOO35dro3dPvGV3MaujREoa3ARGki874LbQWGLg3R09WTed8r1Wr5SpKk1uA7fVVdvi3vG10tyXhxnFzb6mYpnk+uLcd4cbwqfa9Uq+UrSZJag2MyJdWN9nw7panVLeMxn9JUifZ8e1X6XqlWy1eSJLUGi0xJdaN7QzeTU5NV6XtyapLuDd1V6XulWi1fSZLUGuqyyIyIfRHxyYi4EBEpInYuo+3rIuLzETEeEV+IiDdWMVRJGcq35dm6cWtV+u7p6qm7scCtlq8kSWoNdVlkAruBLuD+5TSKiFuAjwEPAK8BPgl8KCJelXmEkqqib3vfosvfLFdHvoO+7X2Z9pmVVstXkiQ1v0gp1TqG54mItpTSVERsAz4P3JZSOrGEdvcDhZTSK2Zs+0PgBSmlW+Zr19vbmwYHBzOIXNJqjYyNsOngpkwnrWnPtzO8f7gul8tptXwlSVJ9iohHU0q9WfRVl1cyU0pTy20TEVcBtwEfnfXUh4GbI2J9FrFJqq6uji7279hPZ6Ezk/46C50cuPlA3RZcrZavJElqfnVZZK7QVqAAfHHW9scp53ndmkckaUX6d/az6ZpN5GJ1y3vkIsemazbRf2t/RpFVR6vlK0mSmlszFZkbK18vzdp+cdbzz4iIuyIiPfnkk1UNTNLyrMut4/ju43R1dK248MpFjq6OLo7vPk4hV8g4wmy1Wr6SJKm51bTIjLL8jEcWq5LPHmQa82wnpXRXSimuvfbaDF5WUpY2r9/M4O2DbNm4Zdm3knYWOtmycQuDtw+yef3mKkWYrVbLV5IkNa9aX8m8FZic8fj0KvqavmK5Ydb26e9nX+GUVOc2r9/MY/se446X3kF7vn3RWVg7C52059u5c8ednN53uuEKrlbLV5IkNaeazi4bEdcA3zFj05WU0pdmPL/k2WUrE/9cAX4ypfTbM7b/KHAM6EopXZ6rrbPLSvVvZGyEwycPc+zUMc6MnKHQViDXlqM0VWJyapKerh76tvex58Y9TTHpTavlK0mSaivL2WXrcgmTaStcwiSXUto1Y9sngA0uYSI1j+JUkaFLQ4wXx2nPt9O9oZt8W77WYVVNq+UrSZLWXpZFZl2+S4mIXqAb+NbKplsj4huBoZTSYGWf3cARYGtK6a8q+70bOBERh4CPA6+tPF69huFLqrJ8W56erp5ah7FmWi1fSZLU2OqyyAT+DfBjM76/q/L1d4C3Vv7dBuR4dmIfUkqfi4jXA+8BfgL4MvCWlNKnqhyvJEmSJIk6v112rXi7rCRJkqRWluXtsrWeXVaSJEmS1ETq9XZZSQ3ACWkkSZI0m+8GJS3LhdELHDl5hKOnjnL24tnnLK0xUZp4ZmmNvTftdWkNSZKkFuSYTByTKS3FRGmCgRMDHHz4IEEwVhybd9+OfAeJxP4d++nf2c+63Lo1jFSSJEnL5ZhMSWvq/OXzbLtnG4ceOcR4cXzBAhNgrDjGeHGcQ48cYts92zh/+fwaRSpJkqRas8iUtKDzl8/Te28v5y6eY3RydFltRydHOXfxHL339lpoSpIktQiLTEnzmihNsOu+XYyMjVBKpRX1UUolRsZG2HXfLiZLkxlHKEmSpHpjkSlpXgMnBhi+MrziAnNaKZUYvjLMwIMDGUUmSZKkemWRKWlOF0YvcPDhg8u+RXY+o5Oj3P3Q3YyMjWTSnyRJkuqTRaakOR05eYQgMu0zCA6fPJxpn5IkSaovFpmS5nT01NFFZ5FdrrHiGMdOHcu0T0mSJNWXfK0DkFR/ilNFzl48W5W+z4ycoThVJN+28tNPcarI0KUhxovjtOfb6d7Qvar+6v11JUmSGonvjiQ9z9ClIQptBSZKE5n3XWgrMHRpiJ6unmW1uzB6gSMnj3D01FHOXjxLoa1Ari1HaarERGmCnq4e+rb3sfemvXR1dGUWb61eV5IkqVFFSqnWMdRcb29vGhwcrHUYUt147G8f42VHXsbXn/565n2/4KoX8Gd7/oxtL9q2pP0nShMMnBjg4MMHCWLBW3g78h0kEvt37Kd/Zz/rcutWHGetXleSJKkWIuLRlFJvFn05JlPS87Tn2ylNrW7ZkvmUpkq059uXtO/5y+fZds82Dj1yiPHi+KJjRMeKY4wXxzn0yCG23bON85fPryjGWr2uJElSM7DIlPQ83Ru6mZyarErfk1OTdG/oXnS/85fP03tvL+cunlv2Miqjk6Ocu3iO3nt7l13w1ep1JUmSmoVFpqTnybfl2bpxa1X67unqWXSynInSBLvu28XI2AiltLIrqqVUYmRshF337WKytLSCuVavK0mS1EwsMiXNqW97Hx35jkz77Mh30Le9b9H9Bk4MMHxleMWF3rRSKjF8ZZiBBweWtH+tXleSJKmZOPEPTvwjzWVkbIRNBzcxXhzPrM/2fDvD+4cXnIX1wugFXvyrL26Z15UkSaoHTvwjqeq6OrrYv2M/nYXOTPrrLHRy4OYDixZcR04eIYhMXnNaEBw+ebguX1eSJKnZWGRKmlf/zn42XbOJXORW1U8ucmy6ZhP9t/Yvuu/RU0cXnc11ucaKYxw7dawuX1eSJKnZWGRKmte63DqO7z5OV0fXigvNXOTo6uji+O7jFHKFBfctThU5e/Hsil5nMWdGzlCcKtbV60qSJDUji0xJC9q8fjODtw+yZeOWZd8621noZMvGLQzePsjm9ZsX3X/o0hCFtoUL0ZUqtBUYujRUV68rNa0LF2rbXpJUUxaZkha1ef1mHtv3GHe89A7a8+2LzjrbWeikPd/OnTvu5PS+00sqMAHGi+Pk2lZ3a+58cm25eSf1qdXrSk3prrvgu74LnnhiZe2feKLc/q67soxKkrSGFl6sTpIq1uXW8d5XvpcD33uAwycPc+zUMc6MnKHQViDXlqM0VWJyapKerh76tvex58Y9y55VtT3fTmlqdcuHzKc0VaI9315Xrys1nbvugoHK0j233QYPPADXXbf09k88UW735JPP9mOxKUkNxyVMcAkTaaWKU0WGLg0xXhynPd9O94Zu8m0r/+yqOFXk6l+6monSRIZRlq3LreOpn3tqzvhq9bpSU5lZYE679tqlF5ozC8yZ+vstNCVpDbiEiRpKcarImZEzPPa3jzkJSpPJt+Xp6eph24u20dPVs+pCKt+WZ+vGrRlF91wLxVer15WaxoUL8B//4/O3P/lkuXBc7NbZ+QpMKPfrGE1JaigWmaqKC6MXeP+fvZ8bfvMGrv6lq9n+W9t52ZGXsf23ttP53k5u+M0beP+fvZ+RsZFah6o607e9b9Exn8vVke+gb3tfXb6u1BRe+MLyFctrr33+c4sVmgsVmNNXQl/4wmzjlSRVVd0VmRHxLRHx/oj4HxHx9xHx1xHxOxExx/9cc7Z/XUR8PiLGI+ILEfHGasesZ02UJnjnp9/Ji3/1xfSf6Ofxrz3ORGmCpyaf4utPf52nJp9icmqSx7/2OP0n+tl0cBPv/PQ7q3KbohrT3pv2ksj2Nv5EYs+Ne+rydaWmcd11yy80l1JgLmdMpySpLtRdkQl8N/DPgA8BPwC8A3gp8OcR8Q0LNYyIW4CPAQ8ArwE+CXwoIl5V1YgFwPnL59l2zzYOPXKI8eL4ogvbjxXHGC+Oc+iRQ2y7ZxvnL59fo0hVz7o6uti/Y/+yl0uZT2ehkwM3H1h0EqJava7UVJZTaFpgSlLTqruJfyJiA/D3KaXijG3XAV8C3ppS+p0F2t4PFFJKr5ix7Q+BF6SUbpmvnRP/rN75y+fpvbeXkbERSmn5s3TmIkdXR9eS11NUc5soTbDtnm2cu3huRX9P03KRY8vGLZzed5pCbvF1MGv1ulLTWayAvPdeuP12C0xJqiNNPfFPSunSzAKzsu0JYBR40XztIuIq4Dbgo7Oe+jBwc0SszzpWlU2UJth1364VF5gApVRiZGyEXfftYrI0mXGEajTrcus4vvs4XR1d5GJl61dOf3BxfPfxJRd6tXpdqeksdkXz+7/fAlOSmljdFZlziYjvAjqBLyyw21agAHxx1vbHKefp/1hVMnBigOErw6u68gPlQnP4yjADDw4svrOa3ub1mxm8fZAtG7cs+xbWzkInWzZuWdGV8Vq9rtR0Fio052KBKUlNo+6LzIhoA34N+F/ApxbYdWPl66VZ2y/Oel4ZujB6gYMPH2R0cjST/kYnR7n7obuddVZAueB7bN9j3PHSO2jPty86+2tnoZP2fDt37riT0/tOr7jQq9XrSk1nqYWmBaYkNZWaFplRlp/xmOv+tF8GbgZ+NKW0lPsoZw8yjXm2ExF3RUR6cq5bdrQkR04eIZ75EWcjCA6fPJxpn2pc63LreO8r38vw/mEGbhvghm+6gXW5dVxduJoXXPUCri5czbrcOm74phsY2DnA8P5h3vOK96z6VtVava7UdK67rjwGcyH33muBKUlNpKYT/0TETsozwU57MKW0c8bz+4DfAN6cUvrIIn3dAJwGdqaUHpyx/XuAvwD+cUrpv8/V1ol/Vu6G37yBx7/2ePb9ftMNnN53OvN+1RyKU0WGLg0xXhynPd9O94Zu8m35pn1dqaEtNAnQNK9kSlLNZTnxT63fHT0KfM+M769M/yMifgT4deCnFyswK84Ck8D1wIMztl8PTAHzrAKtlSpOFTl78WxV+j4zcobiVNE38JpTvi1PT1dPy7yu1LCWUmDCs8ubWGhKUlOo6e2yKaUrKaXBGY8vwTNXOH8P+I2U0geW2NfTlK+KvmHWU28EHkopXc4wdAFDl4YotFXn1sBCW4GhS0NV6VuStAaWWmBOm72OpiSpYdXdxD8R8RLg45Rnif1IROyY8dg6Y7/dEVGMiG+b0fzdwM6IOBQROyPifcBrgV9c0yRaxHhxnFzbypZ5WEyuLcd4cbwqfUuSqmyxdTI/8Yn5lzex0JSkhld3RSbwUmA98I+APwMemvF414z92oAcz07sQ0rpc8DrgV3A/cAPAm9JKS00K61WqD3fTmlqdcuWzKc0VaI9316VviVJVbRYgfnAA/B937fwOpoWmpLU0Go68U+9cOKflSlOFbn6l65mojSRed/rcut46ueeckymJDWSpRSYM8dcLnd/SVLVZDnxTz1eyVSDyLfl2bpx6+I7rkBPV48FpiQ1kpUUjAuto+kVTUlqWBaZWpW+7X2LLlS/XB35Dvq292XapySpii5cWPkVyaUUmhcuZBuvJKmqLDK1Kntv2ksi21uuE4k9N+7JtE9JUhW98IXw4z/+/O1LveV1oULzx3+83L8kqWFYZGpVujq62L9jP52Fzkz66yx0cuDmA3R1dGXSnyRpjdx1F/T3P/v9csdUzlVo9veX+5UkNRSLTK1a/85+Nl2ziVysbjmTXOTYdM0m+m/tX3xnSVL9mS40Vzppz8xC0wJTkhqWs8vi7LJZOH/5PL339jIyNkIpLX9Zk1zk6OroYvD2QTav31yFCKX6UZwqMnRpiPHiOO35dro3dDvRlZrLhQuru8V1te0lScuW5eyyvqtRJjav38zg7YPsum8Xw1eGGZ0cXXLbzkInm67ZxPHdxy0w1bQujF7gyMkjHD11lLMXz1JoK5Bry1GaKjFRmqCnq4e+7X3svWmvt4ur8a22QLTAlKSG5pVMvJKZpYnSBAMnBjj48EGCYKw4Nu++nYVOptIUB24+QP+t/RRyhTWMVFobyzkmOvIdJBL7d+ynf2c/63Lr1jBSSZLUyrK8kmmRiUVmNYyMjXD45GGOnTrGmZEzz7lqMzk1+cxVmz037vGqjZrW+cvnvbovSZIagkVmxiwyq8vxZ2pFjlOWJEmNxDGZaij5tjw9XT21DkNaMxOlCXbdt2vFBSZAKZUYGRth1327OL3vtLeTS5KkhuESJpKUsYETAwxfGV5xgTmtlEoMXxlm4MGBjCKTJEmqPotMScrQhdELHHz44LLGYC5kdHKUux+6m5GxkUz6kyRJqjaLTEnK0JGTRwgi0z6D4PDJw5n2KUmSVC0WmZKUoaOnji64TMlKjBXHOHbqWKZ9SpIkVYtFpiRlpDhV5OzFs1Xp+8zIGYpTxar0LUmSlCWLTEnKyNClIQpt1ZkFttBWYOjSUFX6liRJypJFpiRlZLw4Tq4tV5W+c205xovjVelbkiQpS66TKTWB4lSRoUtDjBfHac+3072hm3ybh/daa8+3U5pa3bIl8ylNlWjPt1elb0mSpCz5LlRqUBdGL3Dk5BGOnjrK2YtnKbQVyLXlKE2VmChN0NPVQ9/2PvbetJeujq5ah9sSujd0Mzk1WZW+J6cm6d7QXZW+JUmSsuTtslKDmShN8M5Pv5MX/+qL6T/Rz+Nfe5yJ0gRPTT7F15/+Ok9NPsXk1CSPf+1x+k/0s+ngJt756XcyUZqodehNL9+WZ+vGrVXpu6erx6vTkiSpIVhkSg3k/OXzbLtnG4ceOcR4cXzRpTLGimOMF8c59Mghtt2zjfOXz69RpK2rb3sfHfmOTPvsyHfQt70v0z4lSZKqxSJTVVecKnJm5AyP/e1jLsOwCucvn6f33l7OXTzH6OTostqOTo5y7uI5eu/ttdCssr037SWRMu0zkdjZvdNjSJIkNQTvvVJVOF4wWxOlCXbdt4uRsRFKaWUTy5RSiZGxEXbdt4vT+05TyFVnqY1W19XRxf4d+zn0yKFlfxgwlyCYKE2w89hOjyFJktQQIqVsP3FvRL29vWlwcLDWYTSFidIEAycGOPjwQYJY8HbOjnwHicT+Hfvp39nPuty6NYy0sbzz0+/MrGjpLHRy5447ec8r3pNBZJrLRGmCbfds49zFcyv+UGApPIYkSVJWIuLRlFJvJn1ZZFpkZuX85fPsum8Xw1eGl1UMdRY62XTNJo7vPs7m9ZurGGFjujB6gRf/6oszXSOxPd/O8P5hr4BV0fTtzau5+rxUHkOSJGm1siwyHZOpTDhesHqOnDxCEJn2GQSHTx7OtE891+b1mxm8fZAtG7fQWeis6mt5DEmSpHpikalVy3q84GSpOusMNqqjp44uOovsco0Vxzh26limfer5Nq/fzGP7HuOOl95Be74981lnZ/IYkiRJ9cIiU6s2cGKA4SvDq74lsJRKDF8ZZuDBgYwia3zFqSJnL56tSt/OUro21uXW8d5Xvpfh/cMM3DbADd90A+ty67i6cDUvuOoFXF24mlzkMrla7TEkSZLqQd2NyYyIdcDvAr3AtwB/DwwCP59SenQJ7V8HvAf4duAcMJBS+shCbRyTuXKOF6yuMyNn2P5b23lq8qnM+766cDWn/vUperp6Mu9bCytOFRm6NFRe63RyjJcffTlPl57OrH+PIUmStFzNPiYzByTgl4HvA34c6AQ+ExFbFmoYEbcAHwMeAF4DfBL4UES8qqoRtzDHC1bXeHGcXFuuKn3n2nKZfjigpcu35enp6mHbi7ZxYugEbZHtqdhjSJIk1VLdFZkppbGU0htTSv8xpfSZlNLHKReb7cAPLdL8XcCfppTenlJ6IKX0DuCPgV+octgty/GC1dWeb6c0VZ2ZSUtTJdrz7VXpW0vnMSRJkppN3RWZ83gKGAfmXQQuIq4CbgM+OuupDwM3R8T66oXXmhwvWH3dG7qZnKrOJC6TU5N0b+iuSt9aGo8hSZLUjOq2yIyyfER8M/A+oAR8aIEmW4EC8MVZ2x+nnOd1VQm0hQ1dGqLQVqhK34W2AkOXhqrSdyPJt+XZunFrVfru6eoh35avSt9aGo8hSZLUjOq2yAR+BpgEvgL8GPDalNJfLbD/xsrXS7O2X5z1/DMi4q6ISE8++eRqY21JjhdcG33b+zJf+qIj30Hf9r5M+9TyeQxJkqRmVNMic8bVyunHzHdbx4DvAX4QeBT4RETcsIRuZ0+XG/NsJ6V0V0oprr322hVEL8cLro29N+0lPf/Pd1USiT037sm0Ty2fx5AkSWpGtb6SeSvlq5XTj09PP5FS+mpKaTCl9N+AHwAuAD+7QF/TVyw3zNo+/f3sK5xaJccLro2uji7279hPZ6Ezk/46C50cuPmAy1vUAY8hSZLUjGpdZD5K+Wrl9ONtc+2UUioCnwcWWsLkLOVC9fpZ268HpoAnVhusnsvxgmunf2c/m67ZRC5Wd2tlLnJsumYT/bf2ZxSZVsNjSJIkNaOaFpkppSuVq5XTjy/NtV9EtAM3AV9eoK+nKa+P+YZZT70ReCildDmruPUsxwuujXW5dRzffZyujq4VF5q5yNHV0cXx3ccp5Koz2YyWz2NIkiQ1m1pfyXyeiHhzRNwXEW+JiJ0R8WbgT4BvAQ7O2G93RBQj4ttmNH83sDMiDlXavg94LfCLa5pEC3G84NrZvH4zg7cPsmXjlmXfOttZ6GTLxi0M3j7I5vWbqxShVsJjSJIkNZu6KzKBLwEvpFxQ3g/8MvAk0JtSOjljvzYgx7MT+5BS+hzwemBXpe0PAm9JKX1qbUJvPY4XXFub12/msX2PccdL76A9377oFbDOQift+Xbu3HEnp/edtsCsQx5DkiSp2URK2X6C3oh6e3vT4OBgrcNoWBOlCbbds41zF89RSiufKTMXObZs3MLpfae9nXMJRsZGOHzyMMdOHePMyBkKbQVybTlKUyUmpybp6eqhb3sfe27cY8FR5zyGJElSrUXEoyml3kz6ssi0yMzC+cvn6b23l5GxkRW9SZ4eL+jtnCtTnCoydGmI8eI47fl2ujd0O+lLg/EYkiRJtWSRmbFWLzKzKlDOXz7Prvt2MXxlmNHJ0SW36yx0sumaTRzffdw3x2ppHkNlfmgiSdLas8jMWCsWmRdGL3Dk5BGOnjrK2Ytnn3Or5URp4plbLffetHdZt1pOlCYYODHAwYcPEgRjxbF59+0sdDKVpjhw8wH6b+339j6J1j2GqnVOkiRJS2ORmbFWKjKX8wa2I99BIrF/x376d/azLrduya/jeEFpdVrlGFqrc5IkSVqYRWbGWqXIrNWteN76Jq1Osx5D3h4sSVL9sMjMWCsUmU4qIqmeeE6SJKm+ZFlk1uM6mcrYRGmCXfftWvGbOYBSKjEyNsKu+3YxWZrMOEJJrcRzkiRJzc0iswUMnBhg+Mrwqtbfg/KbuuErwww8OJBRZJJakeckSZKam7fL0ty3y14YvcCLf/XFjBfHM+uzPd/O8P7hhp5sRFJteE6SJKk+ebusluzIySMEkWmfQXD45OFM+5TUGjwnSZLU/Cwym9zRU0cXXBJgJcaKYxw7dSzTPiW1Bs9JkiQ1P4vMJlacKnL24tmq9H1m5AzFqWJV+pbUnDwnSZLUGiwym9jQpSEKbYWq9F1oKzB0aagqfUtqTp6TJElqDRaZTWy8OE6uLVeVvnNtuUwn7pDU/DwnSZLUGiwym1h7vp3S1OqWCJhPaapEe769Kn1Lak6ekyRJag0WmU2se0M3k1PVWaR8cmqS7g3dVelbUnPynCRJUmuwyGxi+bY8WzdurUrfPV095NvyVelbUnPynCRJUmuwyGxyfdv76Mh3ZNpnR76Dvu19mfYpqTV4TpIkqflZZDa5vTftJZEy7TOR2HPjnkz7lNQaPCdJktT8LDKbXFdHF/t37Kez0JlJf52FTg7cfICujq5M+pPUWjwnSZLU/CwyW0D/zn42XbOJXKxu6YBc5Nh0zSb6b+3PKDJJrchzkiRJzc0iswWsy63j+O7jdHV0rfhNXS5ydHV0cXz3cQq56iym3gyKU0XOjJzhsb99jDMjZyhOFWsdklR3PCdJktTcnIqvRWxev5nB2wfZdd8uhq8MMzo5uuS2nYVONl2zieO7j7N5/eYqRtmYLoxe4MjJIxw9dZSzF89SaCuQa8tRmioxUZqgp6uHvu197L1pr7f0SRWekyRJal6RUrYTMDSi3t7eNDg4WOsw1sREaYKBEwMcfPggQTBWHJt3385CJ1NpigM3H6D/1n6vFsyynJ9lR76DRGL/jv307+xnXW7dGkYq1S/PSZIk1YeIeDSl1JtJXxaZrVVkThsZG+HwycMcO3WMMyNnnnP1bXJq8pmrb3tu3OPVtzmcv3zeKzBShjwnSZJUWxaZGWvFInOm4lSRoUtDjBfHac+3072h20XNF3D+8nl67+1lZGyEUiotu/30WLLB2wctNKU5eE6SJGntZVlk+r+2yLfl6enqqXUYDWGiNMGu+3atuMAEKKUSI2Mj7LpvF6f3nfaWP2kWz0mSJDU2Z5eVlmHgxADDV4ZXXGBOK6USw1eGGXhwIKPIJEmSpPpQ90VmRByKiBQRH1ji/q+LiM9HxHhEfCEi3ljtGNUaLoxe4ODDB5c1BnMho5Oj3P3Q3YyMjWTSnyRJklQP6rrIjIgbgD3A15e4/y3Ax4AHgNcAnwQ+FBGvqlqQahlHTh4hiEz7DILDJw9n2qckSZJUS3VdZAL/Afg14OIS938X8KcppbenlB5IKb0D+GPgF6oVoFrH0VNHF1xeYSXGimMcO3Us0z4lSZKkWqrbIjMiXg+8BPiVJe5/FXAb8NFZT30YuDki1mcboVpJcarI2Ytnq9L3mZEzFKeKVelbkiRJWmt1WWRGRAdwN/CzKaWnlthsK1C+hsMuAAAX50lEQVQAvjhr++OU87wuuwjVaoYuDVFoq84ssIW2AkOXhqrStyRJkrTW6rLIBP4d8BXgd5fRZmPl66VZ2y/Oev4ZEXFXRKQnn3xy+RGqpYwXx8m15arSd64tx3hxvCp9S5IkSWutpkVmlOVnPHIR8Q+AnwLuSCmlFXQ7u03Ms52U0l0ppbj22mtX8DJqJe35dkpTq1u2ZD6lqRLt+faq9C1JkiSttXyNX/9WyjPBTnsQ+N/AHwFfjIgNle1twFWV7y/PU3xOX7HcMGv79Pezr3BKS9a9oZvJqcmq9D05NUn3hu6q9C1JkiSttVrfLvso8D0zHm8DvgP4YcpF4/TjW4F/U/n3pnn6OgtMAtfP2n49MAU8kXHsaiH5tjxbN26tSt89XT3k22r9eY8kSZKUjZoWmSmlKymlwRmPLwH/ivIssTMf/5vyrLG3AX83T19PU74q+oZZT70ReCildLlKaahF9G3voyPfkWmfHfkO+rb3ZdqnJEmSVEu1vpL5PJVi88TMBzAO/HXl+6cBImJ3RBQj4ttmNH83sDMiDkXEzoh4H/Ba4BfXPBE1nb037SU9f2jvqiQSe27ck2mfkiRJUi3VXZG5DG1Ajmcn9iGl9Dng9cAu4H7gB4G3pJQ+VZMI1VS6OrrYv2M/nYXOTPrrLHRy4OYDdHV0ZdKfJEmSVA9iZRO4Npfe3t40ODhY6zDUACZKE2y7ZxvnLp6jlFY+22wucmzZuIXT+05TyFVn/U1JkiRpqSLi0ZRSbxZ9NfKVTGnNrcut4/ju43R1dJGLla2bmYscXR1dHN993AJTkiRJTcciU1qmzes3M3j7IFs2bln2rbOdhU62bNzC4O2DbF6/uUoRSpIkSbVjkSmtwOb1m3ls32Pc8dI7aM+3LzrrbGehk/Z8O3fuuJPT+05bYEqSJKlpOSYTx2RqdUbGRjh88jDHTh3jzMgZCm0Fcm05SlMlJqcm6enqoW97H3tu3OMkP5IkSapLWY7JtMjEIlPZKU4VGbo0xHhxnPZ8O90busm35WsdliRJkrSgLItM3/1KGcq35enp6ql1GJIkSVLNOCZTkiRJkpQZi0xJkiRJUmYsMiVJkiRJmbHIlCRJkiRlxiJTkiRJkpQZi0xJkiRJUmYsMiVJkiRJmbHIlCRJkiRlxiJTkiRJkpQZi0xJkiRJUmYsMiVJkiRJmbHIlCRJkiRlxiJTkiRJkpQZi0xJkiRJUmYsMiVJkiRJmbHIlCRJkiRlxiJTkiRJkpQZi0xJkiRJUmYsMiVJkiRJmbHIlCRJkiRlxiJTkiRJkpQZi0xJkiRJUmbqssiMiKGISLMeX11i29dFxOcjYjwivhARb6x2vJIkSZKksnytA1jA7wO/PuP7icUaRMQtwMeAe4C3A68FPhQRF1NKn6pKlJIkSZKkZ9RzkfmVlNLDy2zzLuBPU0pvr3z/QET8Q+AXAItMSZIkSaqyurxddiUi4irgNuCjs576MHBzRKxf+6gkSZIkqbXUc5G5JyImIuJyRPxBRHzbIvtvBQrAF2dtf5xyntdVI0hJkiRJ0rPq9XbZ/wI8DPwN8BKgH/hsRHxnSunyPG02Vr5emrX94qznJUmSJElVUtMrmVGWn/HIAaSU/m1K6UMppc+mlO4F/m/gWqBvCd2m2S8zz3Yi4q6ISE8++eRq0pAkSZIkVdT6dtlbgckZj0/PtVNK6THgS8BNC/Q1fcVyw6zt09/PvsJJSumulFJce+21y4lZkiRJkjSPWt8u+yjwPTO+v7LI/s+7GjnDWcqF6vXAgzO2Xw9MAU+sJEBJkiRJ0tLV9EpmSulKSmlwxuNLc+0XEduA76BclM7X19PAA8AbZj31RuChBcZySpIkSZIyUusrmc8TEd8H/EvgE8CTlK9E/jxwHjg2Y7/dwBFga0rpryqb3w2ciIhDwMeB11Yer16r+CVJkiSpldVdkQn8NfAi4BDl8ZQXgD8Gfi6l9PUZ+7UBOZ6d2IeU0uci4vXAe4CfAL4MvCWl9Kk1il2SJEmSWlqktNAwx9bQ29ubBgcHax2GJEmSJNVERDyaUurNoq9azy4rSZIkSWoiFpmSJEmSpMxYZEqSJEmSMmORKUmSJEnKjEWmJEmSJCkzFpmSJEmSpMxYZEqSJEmSMmORKUmSJEnKjEWmJEmSJCkzFpmSJEmSpMxYZEqSJEmSMmORKUmSJEnKjEWmJEmSJCkzFpmSJEmSpMxYZEqSJEmSMmORKUmSJEnKjEWmJEmSJCkzFpmSJEmSpMxYZEqSJEmSMmORKUmSJEnKjEWmJEmSJCkzFpmSJEmSpMxYZEqSJEmSMmORKUmSJEnKjEWmJEmSJCkzFpmSJEmSpMxYZEqSJEmSMmORKUmSJEnKjEWmJEmSJCkzdVtkRsR3RsQnIuJyRFyJiL+IiO9eQrvXRcTnI2I8Ir4QEW9ci3glSZIkSXVaZEbEduDPgUvAG4E3AP8N6Fik3S3Ax4AHgNcAnwQ+FBGvqmrAkiRJkiQAIqVU6xieJyIeBs6llN6yzHb3A4WU0itmbPtD4AUppVvma9fb25sGBwdXHK8kSZIkNbKIeDSl1JtFX3V3JTMibgBeCvz6MttdBdwGfHTWUx8Gbo6I9dlEKEmSJEmaT90VmZQLTICNEfE/IqIYEWcjYu8i7bYCBeCLs7Y/TjnP6zKOU5IkSZI0S77WAczhmytf7wPeB/x34PXAByPiKymlP5yn3cbK10uztl+c9fwzIuIuoB+YjIj/uZqgG8y1wJO1DmINtVK+rZQrmG+za6V8WylXMN9mZ77Nq5VyhdbL9yVZdVTTMZkREUBuxqYE/CzwHuDfp5R+dsa+n6E83vLl8/T1MuBzwPaU0v+Ysf3bgSeAV6WU/mSetimlFKvNp1GYb/NqpVzBfJtdK+XbSrmC+TY7821erZQrmO9q1Pp22VuByRmPTwMjlecemLXvZ4AbFuhr+orlhlnbp7+ffYVzpoFFI20u5tu8WilXMN9m10r5tlKuYL7NznybVyvlCua7YrW+knkN8B0zNl0BvoVygfnqlNL9M/Z9F/D2lNI3zdPXVZX2P5lS+u0Z238UOAZ0pZQuZ56EJEmSJOkZdbeESUSsA74KfDCl9NMztp8AiimlXQu0vR/IzdwnIj4BbFhoCRNJkiRJUjbqbuKflNJERPwi8L6IuER54p8fAf4J5dtrAYiI3cARYGtK6a8qm98NnIiIQ8DHgddWHq9ewxQkSZIkqWXVekzmnFJKhyhPAPTjwCeBlwGvTyl9dsZubZQnDYoZ7T5HeSbaXcD9wA8Cb0kpfSoivjMiPhERlyPiSkT8RUR892KxRMTrIuLzETEeEV+IiDdmlmiVRMRQRKRZj68usW3D5TtTRByq5PuBJe7fMPlGxLqI+GhEnIuIsYj4u4j4o6X8HVfaN0yuABHxLRHx/spSRn8fEX8dEb8TEdcusX1D5QsQEfsi4pMRcaHyd7xzGW0bJt+IuCEiPh0RoxHxZET8YkTkltBufUQcjYiLlXP570XEC9ci5pWKiJ6I+O3K33GpclfOUto1Yq5viIj/GhHDlWP20Yh48xLaNVyuABHx+oj488rxOh4RX4qIn6/ckbVQu4bMd7aI2FT5PaeI+IZF9m24nCPirXO8l0oR8a8XaddwuU6LiHxE/GxE/K+IeDoi/iYifnUJ7Rou54g4Mc/vN0XEzQu0a7hcASLiTRHxl5Vjdjgi7lvK+6lV5ZtSavoHsJ3yeM3fpXxV89XAu4BbFml3C1AE/gNwG/B+YIryTLU1z2uBuIeA3wN2zHjctIR2DZnvjPhvAL4OXAY+0Gz5Ah3ARyh/+PIK4IeAByv5bmmmXCsxfz9whvIHTrcBb6K8Du4Q8A3Nlm8l7oeBh4Dfpzzb9s4ltmuYfCkvJ/UkcBz4p8C/Bp4C3rOEtn8MfJny3S3/jPLM4Z+tdU6LxPw64K+B/4/yus0nltiuEXOd/tv955Vz1Acqf8c/2Wy5VuJ+G/DeSsy3AT8DjAG/0Yz5zpHH71Me3pSWcE5uuJyBt1Zyu43nvp96UbPlOiP2/1Q5P7+N8t2D/xL4pSW0a7icKb9n3DHr8Sng74B8k+X6g5W/5d8AXln5vQ4Bfwm0Vet3W/PE1+iH+zDw+ytodz/wmVnb/hD4XK1zWiTuIZZQZDVLvjNiPU75lukl5d/o+Vbi/QbgaWB/s+VKeWbo/Kxt11VOlD/WbPlWYmyrfN3G8orMhskX+HeUZwN/wYxtPw2Mztw2R7ubKz+TfzJj2z+ubNtV67wW+51W/v0HLKHIbOBcv3GObb8PfLnZcl0gn/dSns0+mjlf4OWUVwP4KRYpMhs1Z54tMhcsoJsh10qcr6a80sMNy2zXsDnPymNd5W/6/222XIEPA4/O2jZdeL6kWvnW5e2yWYqIG4CXAr++zHZXUf706qOznvowcHNErM8mwvrQ6PlGxOspLyD7K0vcv6HzneEpYJzyyXFOjZprSulSSqk4a9sTlIuRF83XrlHzBUgpTS23TQPm+xrg/pTS12ds+zDlK/W3zt3kmXb/O6X0p9MbUkp/QfkT1tdUI9AsrOR3SuPm+rU5Np9kgeOVBs11ARdY4HxME+RbubX914FfBOb6nc/W8DkvQyPnuofyh5VfWGa7Rs55pldTvtPmQwvs06i5Fijf9TbT9NKOC62Juap8m77IpFxgAmysjIkpRsTZiNi7SLutlH8pX5y1/XHKP7frMo4za3siYqJy//QfRMS3LbJ/w+YbER3A3cDPppSeWmKzRs43KuMmvhl4H1Bi4ZNiw+Y6W0R8F9AJLPSfYNPku0SNlu/1zIo1pXSe8ocH1y+nXcXji7RrRM2U6/ey8PHa8LlGRC4iOiPiFuDtlK+EpHl2b/h8Kd/i3g785hL3b/Scz1beO34pIt62yL6NnOtLgSci4jci4utRHjP//y9h3F4j5zzTm4Bh4LML7NOouR4BXh4RuyPiBRFxHfAe4IFFPlRYVb6tUGR+c+XrfZTHKf5TyvcXfzAiXrtAu42Vr5dmbb846/l69F+A/4fyfdfvoHy5+7OLXNFo5Hz/HfAVymNul6qR8/0Zyre0fAX4MeC16dkZlufSyLk+IyLagF8D/hflcRPzaYp8l6HR8t3I82OFcrwLxbrSdo2oKXKNiFdSHpO6UDHSDLk+VXl8lvI4+XcssG9D51uZ8OPdlIdoTC6xWaPm/BXK83f8KPADwCPAb0XEnQu0adRcofx++a2U5zF5E9AHfDfwnyNioatdjZwzABHRSfl3/JEFPiCCBs01pfRJyr/beylf0fwS5clTf3iRpqvKt+6WMFmNykEwc4bCxLOF9AdTSu+r/PuBiHgJ5eLkDxfpdvYfW8yzfc3NlW9KqZRS+rcztn02Iv4cOEX5hHFokW4bKl9gM+UxIa9Y5MQwn7rMd77fbeXfxyiPP/0WYB/wiYj4J0u4xaUuc4VF8532y5Q/MLl1iW9uGj3f5arbfOcwV0wxz/Ys2jWihs41Iropj8f8LymlY4vs3tC5Ur5a20l5rNIvUJ5cY98C+zdyvu8FHkkpLfbeabaGyzmldD/l8e7T/qgyPOHnI+LXFrgVvuFyrYjK43UppQsAEfEVyh+cvAL49AJtGzXnaT9AeY6Lhe4Km9ZwuUbEbcBvUf6g/o+A/wu4i/IHCLsWef+x4nyb7UrmrZSv8Ew/Pk15EC/AA7P2/QzlmaXmM30VYMOs7dPfz1XZr7W58n2elNJjlD+1uGmBvho131+hfMB8MSI2RMQGyn/XV1W+n+/Tt3rPd97fbUrpqymlwZTSf6N8YrxAeQbW+dR7rrDI33JE7KN8deDHUkqPLNJXw+e7TI2Q70wXeX6sAOtZONb52m1YpF0jauhcI6KL8nn5POVZDBfS0LkCpJT+MqX0uZTSQcq3y/5ERGydZ/eGzTci/iHlcXsDM/6/7aw8vb4ydGUuDZvzHP4A6AK653m+kXO9CHx+usCs+BwwweLvlxs152lvAs6klAYX2a9Rc70b+K8ppZ9JKZ1IKX2E8goFOynfbTKfVeXbVFcygUeB75nx/RXKV3vmEpSn+J/PWcpv/q6n/CnOtOsr7Z5YeZiZmSvfhSz0qUOj5vsR4B/x/Ev+/6by+Fbgb+boq97zXdLvNqVUjIjPA1sW6Kvec4UF8o2IH6E8ycRPV06Mi2nofFegEfKd6YvMGssREd8KXM3cYz9mtnv5HNuvBz6eWXT1oWFzrdx29gnKk9983xLGyTdsrvP4y8rXf0D52JytkfP9dsrjvx+a47m/AQ4D/2qO5xo55/nM936qkXN9HLhqju2LvV9u5JypDCV7DeU5LhbTqLlez6yrtCmlL0XEGOV5HeazunxrPa1utR88OyXx+2ZtPwEcX6Tt/bP3ofyfZ90tC7BIHtsor6H39mbLF+il/EnMzMdXKRefO4GrminfOXJoB84B/6nZfreVGHdSnj3315bZriHznRHrSpYwaYh8KQ9TGAGumbHtp1j6Eia3zNjWS51PHT8rh+UuYdJQuVL+4PqTlNeZu26JbRoy1wXyeVsl9q3Nli/wjXP8f/srldhfA3xHs+U8Ry4frvx9z7m2YCPnWjkPP8WMpYgqv+Pn5NNMOVdifSuLLOXR6LlS/gDhQ7O2vaQS9xuqlW/NE1+jH+4dlC/3/xzliX9+i/KnMi+fsc9uyoXYt83YNr3A+aHKgfY+6nSB8xkxfx/lTyv+BeVlDX6C8mxZ53juunRNke88P4MhZq2T2Qz5Am+mPIHVWyrxvpnyRBNjwI3NlGsl5pdQvh3jFOUxTzMXTN46Y7+myLcSdy/weuDOykm8v/J9b7PkS3mygK8AfwLsAm4H/h54z6z9zgCHZ23748q57Icp3+rzJep/EezOyu/w9ZSvAJ2e8X1nk+V6b+Xv9u08f5Hzq5op1xlx/xTlAutVwEDlb/nDM/Zpmnzn+Rm8lVlrSTZLzsDHKE+09xrg+4H/VMn1J5st10rcL6B8i/tDlIfivAX4a+BPZu3XNDnPiP3UPM81Ra7Av6X8nuBuyv/v/otK3F8Grq5WvjVPfA1/wPsrP8wJ4PPAD896fvpE2T1r+w8Bj1Fe8P6LwJtqncsieX4X5fFdf0f5FrqvUp4o5tpmzHeen8EQzy8yGz5fymNqP1n5nT5dyfMjwD9stlxn5THX41iz5VuJ+Vgr5Et5fM9nKH9A8hXKs1XmZu0zNDPvyrYNwFHKHz58nfLEMt+4VnGvMNfuBf6Ou5ss16FWybUS97srx9zfV2L/S+AngcKsn0lT5DvPz2D6fDSzyGyKnIFfovyGerRyrnoU+NFZ+zRFrjNi76E8IeZTlMfjHQM2NmvOlK/OT1JeAm+u55siV8q3PP8E8D8rv9thyu8ft1Qz36h0IEmSJEnSqjXb7LKSJEmSpBqyyJQkSZIkZcYiU5IkSZKUGYtMSZIkSVJmLDIlSZIkSZmxyJQkSZIkZcYiU5IkSZKUGYtMSZLqRETsjYjfjohHImI0IlJEvKfWcUmStBz5WgcgSZKecTewHrgIPAlsrW04kiQtn1cyJUmqH28CulNKXYBXMCVJDckiU5KkKomIj1duef3JOZ57d+W5D05vSyn9cUrpr9Y2SkmSsmWRKUlS9ewBzgPvj4gbpzdGxCuBnwO+ALy9RrFJklQVFpmSJFVJSmkEeDOQAz4SEd8QES8Cfhd4GvjnKaXRWsYoSVLWLDIlSaqilNKfA+8Cvh34bcoF5jcDb08pna5lbJIkVYOzy0qSVH3/HtgJvKXy/YdSSh+cf3dJkhqXVzIlSaqylFIC/vOMTYdqFYskSdVmkSlJUpVFxLcDH6C8/uUU8MGIaK9tVJIkVYdFpiRJVRQRVwEfAa6mvA7mLwPfiVczJUlNyiJTkqTq+gBwI/C+lNKngH7gz4C3RcQ/r2lkkiRVQZSHiUiSpKxFxA9RHov5CHBLSqlY2f6twCnKE/DdmFI6V9n+r4BbKs17gJcB/xM4Wdn2xZTSr6xdBpIkLZ9FpiRJVRARmykXkm2UC8kvz3r+dcDHgf9OuQCdiIhjwI8t0O2DKaWd1YlYkqRsWGRKkiRJkjLjmExJkiRJUmYsMiVJkiRJmbHIlCRJkiRlxiJTkiRJkpQZi0xJkiRJUmYsMiVJkiRJmbHIlCRJkiRlxiJTkiRJkpQZi0xJkiRJUmYsMiVJkiRJmfk/XZcR0ThrBhUAAAAASUVORK5CYII=\n",
"text/plain": [
"<Figure size 1080x720 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"centers = [[-2, 2], [2, -2]]\n",
"plot_points(centers, figure_title='k-means Initialization')"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"#### Run *k*-means (4-iterations only)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"button": false,
"collapsed": false,
"deletable": true,
"jupyter": {
"outputs_hidden": false
},
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"outputs": [],
"source": [
"number_of_iterations = 4\n",
"for i in range(number_of_iterations):\n",
" input('Iteration {} - Press Enter to update the members of each cluster'.format(i + 1))\n",
" colors, class_of_points = assign_members(x1, x2, centers)\n",
" title = 'Iteration {} - Cluster Assignment'.format(i + 1)\n",
" plot_points(centers, colors, figure_title=title)\n",
" input('Iteration {} - Press Enter to update the centers'.format(i + 1))\n",
" centers = update_centers(x1, x2, class_of_points)\n",
" title = 'Iteration {} - Centroid Update'.format(i + 1)\n",
" plot_points(centers, colors, figure_title=title)"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Now, we have visually observed how <em>k</em>-means works, let's look at an example with many more datapoints. For this example, we will use the <strong>random</strong> library to generate thousands of datapoints."
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"### Generating the Data"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"First, we need to set up a random seed. We use the Numpy's **random.seed()** function, and we will set the seed to 0. In other words, **random.seed(0)**."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"button": false,
"collapsed": true,
"deletable": true,
"jupyter": {
"outputs_hidden": true
},
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"outputs": [],
"source": [
"np.random.seed(0)"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Next we will be making *random clusters* of points by using the **make_blobs** class. The **make_blobs** class can take in many inputs, but we will use these specific ones.\n",
"\n",
"<b> <u> Input </u> </b>\n",
"<ul>\n",
" <li> <b>n_samples</b>: The total number of points equally divided among clusters. </li>\n",
" <ul> <li> Value will be: 5000 </li> </ul>\n",
" <li> <b>centers</b>: The number of centers to generate, or the fixed center locations. </li>\n",
" <ul> <li> Value will be: [[4, 4], [-2, -1], [2, -3],[1,1]] </li> </ul>\n",
" <li> <b>cluster_std</b>: The standard deviation of the clusters. </li>\n",
" <ul> <li> Value will be: 0.9 </li> </ul>\n",
"</ul>\n",
"\n",
"<b> <u> Output </u> </b>\n",
"<ul>\n",
" <li> <b>X</b>: Array of shape [n_samples, n_features]. (Feature Matrix)</li>\n",
" <ul> <li> The generated samples. </li> </ul> \n",
" <li> <b>y</b>: Array of shape [n_samples]. (Response Vector)</li>\n",
" <ul> <li> The integer labels for cluster membership of each sample. </li> </ul>\n",
"</ul>\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"button": false,
"collapsed": true,
"deletable": true,
"jupyter": {
"outputs_hidden": true
},
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"outputs": [],
"source": [
"X, y = make_blobs(n_samples=5000, centers=[[4, 4], [-2, -1], [2, -3], [1, 1]], cluster_std=0.9)"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Display the scatter plot of the randomly generated data."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"button": false,
"collapsed": false,
"deletable": true,
"jupyter": {
"outputs_hidden": false
},
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"outputs": [],
"source": [
"plt.figure(figsize=(15, 10))\n",
"plt.scatter(X[:, 0], X[:, 1], marker='.')"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"### Setting up *k*-means"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Now that we have our random data, let's set up our *k*-means clustering."
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"The KMeans class has many parameters that can be used, but we will use these three:\n",
"<ul>\n",
" <li> <strong>init</strong>: Initialization method of the centroids. </li>\n",
" <ul>\n",
" <li> Value will be: \"k-means++\". k-means++ selects initial cluster centers for <em>k</em>-means clustering in a smart way to speed up convergence.</li>\n",
" </ul>\n",
" <li> <strong>n_clusters</strong>: The number of clusters to form as well as the number of centroids to generate. </li>\n",
" <ul> <li> Value will be: 4 (since we have 4 centers)</li> </ul>\n",
" <li> <strong>n_init</strong>: Number of times the <em>k</em>-means algorithm will be run with different centroid seeds. The final results will be the best output of n_init consecutive runs in terms of inertia. </li>\n",
" <ul> <li> Value will be: 12 </li> </ul>\n",
"</ul>\n",
"\n",
"Initialize KMeans with these parameters, where the output parameter is called **k_means**."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"button": false,
"collapsed": true,
"deletable": true,
"jupyter": {
"outputs_hidden": true
},
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"outputs": [],
"source": [
"k_means = KMeans(init=\"k-means++\", n_clusters=4, n_init=12)"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Now let's fit the KMeans model with the feature matrix we created above, <b> X </b>."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"button": false,
"collapsed": false,
"deletable": true,
"jupyter": {
"outputs_hidden": false
},
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"outputs": [],
"source": [
"k_means.fit(X)"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Now let's grab the labels for each point in the model using KMeans **.labels\\_** attribute and save it as **k_means_labels**."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"button": false,
"collapsed": false,
"deletable": true,
"jupyter": {
"outputs_hidden": false
},
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"outputs": [],
"source": [
"k_means_labels = k_means.labels_\n",
"k_means_labels"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"We will also get the coordinates of the cluster centers using KMeans **.cluster\\_centers\\_** and save it as **k_means_cluster_centers**."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"button": false,
"collapsed": false,
"deletable": true,
"jupyter": {
"outputs_hidden": false
},
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"outputs": [],
"source": [
"k_means_cluster_centers = k_means.cluster_centers_\n",
"k_means_cluster_centers"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"### Visualizing the Resulting Clusters"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"So now that we have the random data generated and the KMeans model initialized, let's plot them and see what the clusters look like."
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Please read through the code and comments to understand how to plot the model."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"button": false,
"collapsed": false,
"deletable": true,
"jupyter": {
"outputs_hidden": false
},
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"outputs": [],
"source": [
"# initialize the plot with the specified dimensions.\n",
"fig = plt.figure(figsize=(15, 10))\n",
"\n",
"# colors uses a color map, which will produce an array of colors based on\n",
"# the number of labels. We use set(k_means_labels) to get the\n",
"# unique labels.\n",
"colors = plt.cm.Spectral(np.linspace(0, 1, len(set(k_means_labels))))\n",
"\n",
"# create a plot\n",
"ax = fig.add_subplot(1, 1, 1)\n",
"\n",
"# loop through the data and plot the datapoints and centroids.\n",
"# k will range from 0-3, which will match the number of clusters in the dataset.\n",
"for k, col in zip(range(len([[4,4], [-2, -1], [2, -3], [1, 1]])), colors):\n",
"\n",
" # create a list of all datapoints, where the datapoitns that are \n",
" # in the cluster (ex. cluster 0) are labeled as true, else they are\n",
" # labeled as false.\n",
" my_members = (k_means_labels == k)\n",
" \n",
" # define the centroid, or cluster center.\n",
" cluster_center = k_means_cluster_centers[k]\n",
" \n",
" # plot the datapoints with color col.\n",
" ax.plot(X[my_members, 0], X[my_members, 1], 'w', markerfacecolor=col, marker='.')\n",
" \n",
" # plot the centroids with specified color, but with a darker outline\n",
" ax.plot(cluster_center[0], cluster_center[1], 'o', markerfacecolor=col, markeredgecolor='k', markersize=6)\n",
"\n",
"# title of the plot\n",
"ax.set_title('KMeans')\n",
"\n",
"# remove x-axis ticks\n",
"ax.set_xticks(())\n",
"\n",
"# remove y-axis ticks\n",
"ax.set_yticks(())\n",
"\n",
"# show the plot\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"<a id='item2'></a>"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"## 2. Using *k*-means for Customer Segmentation"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Imagine that you have a customer dataset, and you are interested in exploring the behavior of your customers using their historical data.\n",
"\n",
"Customer segmentation is the practice of partitioning a customer base into groups of individuals that have similar characteristics. It is a significant strategy as a business can target these specific groups of customers and effectively allocate marketing resources. For example, one group might contain customers who are high-profit and low-risk, that is, more likely to purchase products, or subscribe to a service. A business task is to retain those customers. Another group might include customers from non-profit organizations, and so on."
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"### Downloading Data"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Let's download the data and save it as a CSV file called **customer_segmentation.csv**"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"button": false,
"collapsed": false,
"deletable": true,
"jupyter": {
"outputs_hidden": false
},
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"outputs": [],
"source": [
"!wget -q -O 'customer_segmentation.csv' https://cocl.us/customer_dataset\n",
"print('Data downloaded!')"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Now that the data is downloaded, let's read it into a *pandas* dataframe."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"button": false,
"collapsed": false,
"deletable": true,
"jupyter": {
"outputs_hidden": false
},
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"outputs": [],
"source": [
"customers_df = pd.read_csv('customer_segmentation.csv')\n",
"customers_df.head()"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"### Pre-processing"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"As you can see, **Address** in this dataset is a categorical variable. k-means algorithm isn't directly applicable to categorical variables because Euclidean distance function isn't really meaningful for discrete variables. So, lets drop this feature and run clustering."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"button": false,
"collapsed": false,
"deletable": true,
"jupyter": {
"outputs_hidden": false
},
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"outputs": [],
"source": [
"df = customers_df.drop('Address', axis=1)\n",
"df.head()"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Now let's normalize the dataset. But why do we need normalization in the first place? Normalization is a statistical method that helps mathematical-based algorithms interpret features with different magnitudes and distributions equally. We use **StandardScaler()** to normalize our dataset."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"button": false,
"collapsed": false,
"deletable": true,
"jupyter": {
"outputs_hidden": false
},
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"outputs": [],
"source": [
"from sklearn.preprocessing import StandardScaler\n",
"\n",
"X = df.values[:,1:]\n",
"X = np.nan_to_num(X)\n",
"cluster_dataset = StandardScaler().fit_transform(X)\n",
"cluster_dataset"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"### Modeling"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Let's run our model and group our customers into three clusters."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"num_clusters = 3\n",
"\n",
"k_means = KMeans(init=\"k-means++\", n_clusters=num_clusters, n_init=12)\n",
"k_means.fit(cluster_dataset)\n",
"labels = k_means.labels_\n",
"\n",
"print(labels)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h2 id=\"insights\">Insights</h2>"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Note that each row in our dataset represents a customer, and therefore, each row is assigned a label."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"button": false,
"collapsed": false,
"deletable": true,
"jupyter": {
"outputs_hidden": false
},
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"outputs": [],
"source": [
"df[\"Labels\"] = labels\n",
"df.head(5)"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"We can easily check the centroid values by averaging the features in each cluster."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"button": false,
"collapsed": false,
"deletable": true,
"jupyter": {
"outputs_hidden": false
},
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"outputs": [],
"source": [
"df.groupby('Labels').mean()"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"<em>k</em>-means will partition your customers into three groups since we specified the algorithm to generate 3 clusters. The customers in each cluster are similar to each other in terms of the features included in the dataset.\n",
"\n",
"Now we can create a profile for each group, considering the common characteristics of each cluster. \n",
"For example, the 3 clusters can be:\n",
"\n",
"- OLDER, HIGH INCOME, AND INDEBTED\n",
"- MIDDLE AGED, MIDDLE INCOME, AND FINANCIALLY RESPONSIBLE\n",
"- YOUNG, LOW INCOME, AND INDEBTED"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"However, you can devise your own profiles based on the means above and come up with labels that you think best describe each cluster."
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"I hope that you are able to see the power of *k*-means here. This clustering algorithm provided us with insight into the dataset and lead us to group the data into three clusters. Perhaps the same results would have been achieved but using multiple tests and experiments."
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"### Thank you for completing this lab!\n",
"\n",
"This notebook was created by [Saeed Aghabozorgi](https://ca.linkedin.com/in/saeedaghabozorgi) and [Alex Aklson](https://www.linkedin.com/in/aklson/). We hope you found this lab interesting and educational. Feel free to contact us if you have any questions!"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"This notebook is part of a course on **Coursera** called *Applied Data Science Capstone*. If you accessed this notebook outside the course, you can take this course online by clicking [here](http://cocl.us/DP0701EN_Coursera_Week3_LAB1)."
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"<hr>\n",
"\n",
"Copyright &copy; 2018 [Cognitive Class](https://cognitiveclass.ai/?utm_source=bducopyrightlink&utm_medium=dswb&utm_campaign=bdu). This notebook and its source code are released under the terms of the [MIT License](https://bigdatauniversity.com/mit-license/)."
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python",
"language": "python",
"name": "conda-env-python-py"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.10"
},
"widgets": {
"state": {},
"version": "1.1.2"
}
},
"nbformat": 4,
"nbformat_minor": 4
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment