Files
udacity/python/Unsupervised Learning/Hierarchical and Density Based Clustering/Hierarchical Clustering Lab.ipynb

493 lines
77 KiB
Plaintext

{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Hierarchical Clustering Lab\n",
"In this notebook, we will be using sklearn to conduct hierarchical clustering on the [Iris dataset](https://archive.ics.uci.edu/ml/datasets/iris) which contains 4 dimensions/attributes and 150 samples. Each sample is labeled as one of the three type of Iris flowers.\n",
"\n",
"In this exercise, we'll ignore the labeling and cluster based on the attributes, then we'll compare the results of different hierarchical clustering techniques with the original labels to see which one does a better job in this scenario. We'll then proceed to visualize the resulting cluster hierarchies.\n",
"\n",
"## 1. Importing the Iris dataset\n"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"from sklearn import datasets\n",
"\n",
"iris = datasets.load_iris()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"A look at the first 10 samples in the dataset"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([[ 5.1, 3.5, 1.4, 0.2],\n",
" [ 4.9, 3. , 1.4, 0.2],\n",
" [ 4.7, 3.2, 1.3, 0.2],\n",
" [ 4.6, 3.1, 1.5, 0.2],\n",
" [ 5. , 3.6, 1.4, 0.2],\n",
" [ 5.4, 3.9, 1.7, 0.4],\n",
" [ 4.6, 3.4, 1.4, 0.3],\n",
" [ 5. , 3.4, 1.5, 0.2],\n",
" [ 4.4, 2.9, 1.4, 0.2],\n",
" [ 4.9, 3.1, 1.5, 0.1]])"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"iris.data[:10]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"```iris.target``` contains the labels that indicate which type of Iris flower each sample is"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
" 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
" 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n",
" 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n",
" 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,\n",
" 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,\n",
" 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2])"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"iris.target"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 2. Clustering\n",
"Let's now use sklearn's [```AgglomerativeClustering```](http://scikit-learn.org/stable/modules/generated/sklearn.cluster.AgglomerativeClustering.html) to conduct the heirarchical clustering"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"from sklearn.cluster import AgglomerativeClustering\n",
"\n",
"# Hierarchical clustering\n",
"# Ward is the default linkage algorithm, so we'll start with that\n",
"ward = AgglomerativeClustering(n_clusters=3)\n",
"ward_pred = ward.fit_predict(iris.data)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's also try complete and average linkages\n",
"\n",
"**Exercise**:\n",
"* Conduct hierarchical clustering with complete linkage, store the predicted labels in the variable ```complete_pred```\n",
"* Conduct hierarchical clustering with average linkage, store the predicted labels in the variable ```avg_pred```\n",
"\n",
"Note: look at the documentation of [```AgglomerativeClustering```](http://scikit-learn.org/stable/modules/generated/sklearn.cluster.AgglomerativeClustering.html) to find the appropriate value to pass as the ```linkage``` value"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [],
"source": [
"# Hierarchical clustering using complete linkage\n",
"# TODO: Create an instance of AgglomerativeClustering with the appropriate parameters\n",
"complete = AgglomerativeClustering(n_clusters=3, linkage='complete')\n",
"# Fit & predict\n",
"# TODO: Make AgglomerativeClustering fit the dataset and predict the cluster labels\n",
"complete_pred = complete.fit_predict(iris.data)\n",
"\n",
"# Hierarchical clustering using average linkage\n",
"# TODO: Create an instance of AgglomerativeClustering with the appropriate parameters\n",
"avg = AgglomerativeClustering(n_clusters=3, linkage='average')\n",
"# Fit & predict\n",
"# TODO: Make AgglomerativeClustering fit the dataset and predict the cluster labels\n",
"avg_pred = avg.fit_predict(iris.data)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"To determine which clustering result better matches the original labels of the samples, we can use ```adjusted_rand_score``` which is an *external cluster validation index* which results in a score between -1 and 1, where 1 means two clusterings are identical of how they grouped the samples in a dataset (regardless of what label is assigned to each cluster).\n",
"\n",
"Cluster validation indices are discussed later in the course."
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [],
"source": [
"from sklearn.metrics import adjusted_rand_score\n",
"\n",
"ward_ar_score = adjusted_rand_score(iris.target, ward_pred)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Exercise**:\n",
"* Calculate the Adjusted Rand score of the clusters resulting from complete linkage and average linkage"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [],
"source": [
"# TODO: Calculated the adjusted Rand score for the complete linkage clustering labels\n",
"complete_ar_score = adjusted_rand_score(iris.target, complete_pred)\n",
"\n",
"# TODO: Calculated the adjusted Rand score for the average linkage clustering labels\n",
"avg_ar_score = adjusted_rand_score(iris.target, avg_pred)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Which algorithm results in the higher Adjusted Rand Score?"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Scores: \n",
"Ward: 0.731198556771 \n",
"Complete: 0.642251251836 \n",
"Average: 0.759198707107\n"
]
}
],
"source": [
"print( \"Scores: \\nWard:\", ward_ar_score,\"\\nComplete: \", complete_ar_score, \"\\nAverage: \", avg_ar_score)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 3. The Effect of Normalization on Clustering\n",
"\n",
"Can we improve on this clustering result?\n",
"\n",
"Let's take another look at the dataset"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([[ 5.1, 3.5, 1.4, 0.2],\n",
" [ 4.9, 3. , 1.4, 0.2],\n",
" [ 4.7, 3.2, 1.3, 0.2],\n",
" [ 4.6, 3.1, 1.5, 0.2],\n",
" [ 5. , 3.6, 1.4, 0.2],\n",
" [ 5.4, 3.9, 1.7, 0.4],\n",
" [ 4.6, 3.4, 1.4, 0.3],\n",
" [ 5. , 3.4, 1.5, 0.2],\n",
" [ 4.4, 2.9, 1.4, 0.2],\n",
" [ 4.9, 3.1, 1.5, 0.1],\n",
" [ 5.4, 3.7, 1.5, 0.2],\n",
" [ 4.8, 3.4, 1.6, 0.2],\n",
" [ 4.8, 3. , 1.4, 0.1],\n",
" [ 4.3, 3. , 1.1, 0.1],\n",
" [ 5.8, 4. , 1.2, 0.2]])"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"iris.data[:15]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Looking at this, we can see that the forth column has smaller values than the rest of the columns, and so its variance counts for less in the clustering process (since clustering is based on distance). Let us [normalize](https://en.wikipedia.org/wiki/Feature_scaling) the dataset so that each dimension lies between 0 and 1, so they have equal weight in the clustering process.\n",
"\n",
"This is done by subtracting the minimum from each column then dividing the difference by the range.\n",
"\n",
"sklearn provides us with a useful utility called ```preprocessing.normalize()``` that can do that for us"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([[ 0.80377277, 0.55160877, 0.22064351, 0.0315205 ],\n",
" [ 0.82813287, 0.50702013, 0.23660939, 0.03380134],\n",
" [ 0.80533308, 0.54831188, 0.2227517 , 0.03426949],\n",
" [ 0.80003025, 0.53915082, 0.26087943, 0.03478392],\n",
" [ 0.790965 , 0.5694948 , 0.2214702 , 0.0316386 ],\n",
" [ 0.78417499, 0.5663486 , 0.2468699 , 0.05808704],\n",
" [ 0.78010936, 0.57660257, 0.23742459, 0.0508767 ],\n",
" [ 0.80218492, 0.54548574, 0.24065548, 0.0320874 ],\n",
" [ 0.80642366, 0.5315065 , 0.25658935, 0.03665562],\n",
" [ 0.81803119, 0.51752994, 0.25041771, 0.01669451]])"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from sklearn import preprocessing\n",
"\n",
"normalized_X = preprocessing.normalize(iris.data)\n",
"normalized_X[:10]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now all the columns are in the range between 0 and 1. Would clustering the dataset after this transformation lead to a better clustering? (one that better matches the original labels of the samples)"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Scores: \n",
"Ward: 0.885697031028 \n",
"Complete: 0.644447235392 \n",
"Average: 0.558371443754\n"
]
}
],
"source": [
"ward = AgglomerativeClustering(n_clusters=3)\n",
"ward_pred = ward.fit_predict(normalized_X)\n",
"\n",
"complete = AgglomerativeClustering(n_clusters=3, linkage=\"complete\")\n",
"complete_pred = complete.fit_predict(normalized_X)\n",
"\n",
"avg = AgglomerativeClustering(n_clusters=3, linkage=\"average\")\n",
"avg_pred = avg.fit_predict(normalized_X)\n",
"\n",
"\n",
"ward_ar_score = adjusted_rand_score(iris.target, ward_pred)\n",
"complete_ar_score = adjusted_rand_score(iris.target, complete_pred)\n",
"avg_ar_score = adjusted_rand_score(iris.target, avg_pred)\n",
"\n",
"print( \"Scores: \\nWard:\", ward_ar_score,\"\\nComplete: \", complete_ar_score, \"\\nAverage: \", avg_ar_score)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 4. Dendrogram visualization with scipy\n",
"\n",
"Let's visualize the highest scoring clustering result. \n",
"\n",
"To do that, we'll need to use Scipy's [```linkage```](https://docs.scipy.org/doc/scipy/reference/generated/scipy.cluster.hierarchy.linkage.html) function to perform the clusteirng again so we can obtain the linkage matrix it will later use to visualize the hierarchy"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [],
"source": [
"# Import scipy's linkage function to conduct the clustering\n",
"from scipy.cluster.hierarchy import linkage\n",
"\n",
"# Specify the linkage type. Scipy accepts 'ward', 'complete', 'average', as well as other values\n",
"# Pick the one that resulted in the highest Adjusted Rand Score\n",
"linkage_type = 'ward'\n",
"\n",
"linkage_matrix = linkage(normalized_X, linkage_type)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Plot using scipy's [dendrogram](https://docs.scipy.org/doc/scipy-0.14.0/reference/generated/scipy.cluster.hierarchy.dendrogram.html) function"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {
"scrolled": false
},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAABPQAAAP1CAYAAADmQrFEAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4wLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvpW3flQAAIABJREFUeJzs3UGopXd5x/HfY2aogmKguWBIMs6iWSltIkOquAnWhQbRRS2ooFVaBsRSBVe6iOiuUCxIwBBQjMWIoiKpxEVKFXVh5CZMojYusikGA5maNjHVCpF/F3Olw82d3DPOGccf9/OBw7znvM8951l/5z3nnbVWAAAAAIAOL7rSCwAAAAAAmxP0AAAAAKCIoAcAAAAARQQ9AAAAACgi6AEAAABAEUEPAAAAAIoIegAAAABQRNADAAAAgCKCHgAAAAAUEfQAAAAAoMixK/XB11xzzTp58uSV+ngAAAAA+IPy4IMP/udaa+ewuSsW9E6ePJnd3d0r9fEAAAAA8AdlZv5jkzlfuQUAAACAIoIeAAAAABQR9AAAAACgiKAHAAAAAEUEPQAAAAAoIugBAAAAQBFBDwAAAACKCHoAAAAAUETQAwAAAIAigh4AAAAAFBH0AAAAAKCIoAcAAAAARQQ9AAAAACgi6AEAAABAEUEPAAAAAIoIegAAAABQRNADAAAAgCKCHgAAAAAUEfQAAAAAoIigBwAAAABFBD0AAAAAKCLoAQAAAEARQQ8AAAAAigh6AAAAAFBE0AMAAACAIoIeAAAAABQR9AAAAACgiKAHAAAAAEUEPQAAAAAoIugBAAAAQBFBDwAAAACKCHoAAAAAUETQAwAAAIAigh4AAAAAFBH0AAAAAKCIoAcAAAAARQQ9AAAAACgi6AEAAABAkUOD3sy8eGZ+MDMPz8yPZ+bjB8y8d2bOzsyZvcffXp51AQAAAOBoO7bBzK+TvGGt9ezMHE/yvZn55lrr+/vmvrTW+rvtrwgAAAAA/NahQW+ttZI8u/f0+N5jXc6lAAAAAICDbfQbejNz1cycSfJkkvvXWg8cMPaXM/PIzHxlZm7Y6pYAAAAAQJINg95a6zdrrZuSXJ/klpl59b6Rf0lycq31p0n+NcndB73PzJyemd2Z2T179uyl7A0AAAAAR9Kc+0btRfzBzMeS/M9a6x8vcP6qJE+ttV7+Qu9z6tSptbu7e1GfDWzfXXcl99xzpbcAANjcu96VnD59pbcAgO2bmQfXWqcOm9vkLrc7M3P13vFLkrwxyU/2zVx73tO3Jnn04tYFrpR77knOnLnSWwAAbObMGf8ZCQCb3OX22iR3711596IkX15rfWNmPpFkd611b5K/n5m3JnkuyVNJ3nu5Fga276abkm9/+0pvAQBwuFtvvdIbAMCVt8ldbh9JcvMBr99+3vFHknxku6sBAAAAAPttdFMMAAAAAOAPg6AHAAAAAEUEPQAAAAAoIugBAAAAQBFBDwAAAACKCHoAAAAAUETQAwAAAIAigh4AAAAAFBH0AAAAAKCIoAcAAAAARQQ9AAAAACgi6AEAAABAEUEPAAAAAIoIegAAAABQRNADAAAAgCKCHgAAAAAUEfQAAAAAoIigBwAAAABFBD0AAAAAKCLoAQAAAEARQQ8AAAAAigh6AAAAAFBE0AMAAACAIoIeAAAAABQR9AAAAACgiKAHAAAAAEUEPQAAAAAoIugBAAAAQBFBDwAAAACKCHoAAAAAUETQAwAAAIAigh4AAAAAFBH0AAAAAKCIoAcAAAAARQQ9AAAAACgi6AEAAABAEUEPAAAAAIoIegAAAABQRNADAAAAgCKCHgAAAAAUEfQAAAAAoIigBwAAAABFBD0AAAAAKCLoAQAAAEARQQ8AAAAAigh6AAAAAFBE0AMAAACAIoIeAAAAABQR9AAAAACgiKAHAAAAAEUEPQAAAAAoIugBAAAAQBFBDwAAAACKCHoAAAAAUETQAwAAAIAigh4AAAAAFBH0AAAAAKCIoAcAAAAARQQ9AAAAACgi6AEAAABAEUEPAAAAAIoIegAAAABQRNADAAAAgCKCHgAAAAAUEfQAAAAAoIigBwAAAABFBD0AAAAAKCLoAQAAAEARQQ8AAAAAigh6AAAAAFBE0AMAAACAIoIeAAAAABQR9AAAAACgiKAHAAAAAEUEPQAAAAAoIugBAAAAQBFBDwAAAACKCHoAAAAAUETQAwAAAIAigh4AAAAAFBH0AAAAAKCIoAcAAAAARQQ9AAAAACgi6AEAAABAEUEPAAAAAIoIegAAAABQRNADAAAAgCKCHgAAAAAUEfQAAAAAoIigBwAAAABFBD0AAAAAKCLoAQAAAEARQQ8AAAAAigh6AAAAAFBE0AMAAACAIoIeAAAAABQR9AAAAACgiKAHAAAAAEUEPQAAAAAoIugBAAAAQBFBDwAAAACKCHoAAAAAUETQAwAAAIAigh4AAAAAFBH0AAAAAKCIoAcAAAAARQQ9AAAAACgi6AEAAABAEUEPAAAAAIoIegAAAABQRNADAAAAgCKCHgAAAAAUEfQAAAAAoIigBwAAAABFBD0AAAAAKCLoAQAAAEARQQ8AAAAAigh6AAAAAFBE0AMAAACAIoIeAAAAABQR9AAAAACgiKAHAAAAAEUEPQAAAAAoIugBAAAAQBFBDwAAAACKHBr0ZubFM/ODmXl4Zn48Mx8/YOaPZuZLM/PYzDwwMycvx7IAAAAAcNRtcoXer5O8Ya31Z0luSvKmmXntvpm/SfJfa60/SfJPSf5hu2sCAAAAAMkGQW+d8+ze0+N7j7Vv7G1J7t47/kqSv5iZ2dqWAAAAAECSDX9Db2aumpkzSZ5Mcv9a64F9I9cl+WmSrLWeS/J0kj/e5qIAAAAAwIZBb631m7XWTUmuT3LLzLx638hBV+Ptv4ovM3N6ZnZnZvfs2bMXvy0AAAAAHHEXdZfbtdZ/J/l2kjftO/V4khuSZGaOJXl5kqcO+Pu71lqn1lqndnZ2fqeFAQAAAOAo2+Qutzszc/Xe8UuSvDHJT/aN3Zvkr/eO357k39Zaz7tCDwAAAAC4NMc2mLk2yd0zc1XOBcAvr7W+MTOfSLK71ro3yWeS/PPMPJZzV+a947JtDAAAAABH2KFBb631SJKbD3j99vOO/zfJX213NQAAAABgv4v6DT0AAAAA4MoS9AAAAACgiKAHAAAAAEUEPQAAAAAoIugBAAAAQBFBDwAAAACKCHoAAAAAUETQAwAAAIAigh4AAAAAFBH0AAAAAKCIoAcAAAAARQQ9AAAAACgi6AEAAABAEUEPAAAAAIoIegAAAABQRNADAAAAgCKCHgAAAAAUEfQAAAAAoIigBwAAAABFBD0AAAAAKCLoAQAAAEARQQ8AAAAAigh6AAAAAFBE0AMAAACAIoIeAAAAABQR9AAAAACgiKAHAAAAAEUEPQAAAAAoIugBAAAAQBFBDwAAAACKCHoAAAAAUETQAwAAAIAigh4AAAAAFBH0AAAAAKCIoAcAAAAARQQ9AAAAACgi6AEAAABAEUEPAAAAAIoIegAAAABQRNADAAAAgCKCHgAAAAAUEfQAAAAAoIigBwAAAABFBD0AAAAAKCLoAQAAAEARQQ8AAAAAigh6AAAAAFBE0AMAAACAIoIeAAAAABQR9AAAAACgiKAHAAAAAEUEPQAAAAAoIugBAAAAQBFBDwAAAACKCHoAAAAAUETQAwAAAIAigh4AAAAAFBH0AAAAAKCIoAcAAAAARQQ9AAAAACgi6AEAAABAEUEPAAAAAIoIegAAAABQRNADAAAAgCKCHgAAAAAUEfQAAAAAoIigBwAAAABFBD0AAAAAKCLoAQAAAEARQQ8AAAAAigh6AAAAAFBE0AMAAACAIoIeAAAAABQR9AAAAACgiKAHAAAAAEUEPQAAAAAoIugBAAAAQBFBDwAAAACKCHoAAAAAUETQAwAAAIAigh4AAAAAFBH0AAAAAKCIoAcAAAAARQQ9AAAAACgi6AEAAABAEUEPAAAAAIoIegAAAABQRNADAAAAgCKCHgAAAAAUEfQAAAAAoIigBwAAAABFBD0AAAAAKCLoAQAAAEARQQ8AAAAAigh6AAAAAFBE0AMAAACAIoIeAAAAABQR9AAAAACgiKAHAAAAAEUEPQAAAAAoIugBAAAAQBFBDwAAAACKCHoAAAAAUETQAwAAAIAigh4AAAAAFBH0AAAAAKCIoAcAAAAARQQ9AAAAACgi6AEAAABAEUEPAAAAAIoIegAAAABQRNADAAAAgCKCHgAAAAAUEfQAAAAAoIigBwAAAABFBD0AAAAAKCLoAQAAAEARQQ8AAAAAigh6AAAAAFBE0AMAAACAIoIeAAAAABQR9AAAAACgiKAHAAAAAEUEPQAAAAAocmjQm5kbZuZbM/PozPx4Zj54wMytM/P0zJzZe9x+edYFAAAAgKPt2AYzzyX58FrroZl5WZIHZ+b+tda/75v77lrrLdtfEQAAAAD4rUOv0FtrPbHWemjv+BdJHk1y3eVeDAAAAAB4vov6Db2ZOZnk5iQPHHD6dTPz8Mx8c2ZetYXdAAAAAIB9NvnKbZJkZl6a5KtJPrTWembf6YeSvHKt9ezM3Jbk60luPOA9Tic5nSQnTpz4nZcGAAAAgKNqoyv0ZuZ4zsW8L6y1vrb//FrrmbXWs3vH9yU5PjPXHDB311rr1Frr1M7OziWuDgAAAABHzyZ3uZ0kn0ny6FrrkxeYecXeXGbmlr33/fk2FwUAAAAANvvK7euTvDvJD2fmzN5rH01yIknWWncmeXuS98/Mc0l+leQda611GfYFAAAAgCPt0KC31vpekjlk5o4kd2xrKQAAAADgYBd1l1sAAAAA4MoS9AAAAACgiKAHAAAAAEUEPQAAAAAoIugBAAAAQBFBDwAAAACKCHoAAAAAUETQAwAAAIAigh4AAAAAFBH0AAAAAKCIoAcAAAAARQQ9AAAAACgi6AEAAABAEUEPAAAAAIoIegAAAABQRNADAAAAgCKCHgAAAAAUEfQAAAAAoIigBwAAAABFBD0AAAAAKCLoAQAAAEARQQ8AAAAAigh6AAAAAFBE0AMAAACAIoIeAAAAABQR9AAAAACgiKAHAAAAAEUEPQAAAAAoIugBAAAAQBFBDwAAAACKCHoAAAAAUETQAwAAAIAigh4AAAAAFBH0AAAAAKCIoAcAAAAARQQ9AAAAACgi6AEAAABAEUEPAAAAAIoIegAAAABQRNADAAAAgCKCHgAAAAAUEfQAAAAAoIigBwAAAABFBD0AAAAAKCLoAQAAAEARQQ8AAAAAigh6AAAAAFBE0AMAAACAIoIeAAAAABQR9AAAAACgiKAHAAAAAEUEPQAAAAAoIugBAAAAQBFBDwAAAACKCHoAAAAAUETQAwAAAIAigh4AAAAAFBH0AAAAAKCIoAcAAAAARQQ9AAAAACgi6AEAAABAEUEPAAAAAIoIegAAAABQRNADAAAAgCKCHgAAAAAUEfQAAAAAoIigBwAAAABFBD0AAAAAKCLoAQAAAEARQQ8AAAAAigh6AAAAAFBE0AMAAACAIoIeAAAAABQR9AAAAACgiKAHAAAAAEUEPQAAAAAoIugBAAAAQBFBDwAAAACKCHoAAAAAUETQAwAAAIAigh4AAAAAFBH0AAAAAKCIoAcAAAAARQQ9AAAAACgi6AEAAABAEUEPAAAAAIoIegAAAABQRNADAAAAgCKCHgAAAAAUEfQAAAAAoIigBwAAAABFBD0AAAAAKCLoAQAAAEARQQ8AAAAAigh6AAAAAFBE0AMAAACAIoIeAAAAABQR9AAAAACgiKAHAAAAAEUEPQAAAAAoIugBAAAAQBFBDwAAAACKCHoAAAAAUETQAwAAAIAigh4AAAAAFBH0AAAAAKCIoAcAAAAARQQ9AAAAACgi6AEAAABAEUEPAAAAAIoIegAAAABQRNADAAAAgCKCHgAAAAAUEfQAAAAAoIigBwAAAABFBD0AAAAAKCLoAQAAAEARQQ8AAAAAigh6AAAAAFBE0AMAAACAIoIeAAAAABQR9AAAAACgiKAHAAAAAEUEPQAAAAAoIugBAAAAQJFDg97M3DAz35qZR2fmxzPzwQNmZmY+NTOPzcwjM/Oay7MuAAAAABxtxzaYeS7Jh9daD83My5I8ODP3r7X+/byZNye5ce/x50k+vfcvAAAAALBFh16ht9Z6Yq310N7xL5I8muS6fWNvS/L5dc73k1w9M9dufVsAAAAAOOIu6jf0ZuZkkpuTPLDv1HVJfnre88fz/OgHAAAAAFyijYPezLw0yVeTfGit9cz+0wf8yTrgPU7PzO7M7J49e/biNgUAAAAANgt6M3M852LeF9ZaXztg5PEkN5z3/PokP9s/tNa6a611aq11amdn53fZFwAAAACOtE3ucjtJPpPk0bXWJy8wdm+S9+zd7fa1SZ5eaz2xxT0BAAAAgGx2l9vXJ3l3kh/OzJm91z6a5ESSrLXuTHJfktuSPJbkl0net/1VAQAAAIBDg95a63s5+Dfyzp9ZST6wraUAAAAAgINd1F1uAQAAAIArS9ADAAAAgCKCHgAAAAAUEfQAAAAAoIigBwAAAABFBD0AAAAAKCLoAQAAAEARQQ8AAAAAigh6AAAAAFBE0AMAAACAIoIeAAAAABQR9AAAAACgiKAHAAAAAEUEPQAAAAAoIugBAAAAQBFBDwAAAACKCHoAAAAAUETQAwAAAIAigh4AAAAAFBH0AAAAAKCIoAcAAAAARQQ9AAAAACgi6AEAAABAEUEPAAAAAIoIegAAAABQRNADAAAAgCKCHgAAAAAUEfQAAAAAoIigBwAAAABFBD0AAAAAKCLoAQAAAEARQQ8AAAAAigh6AAAAAFBE0AMAAACAIoIeAAAAABQR9AAAAACgiKAHAAAAAEUEPQAAAAAoIugBAAAAQBFBDwAAAACKCHoAAAAAUETQAwAAAIAigh4AAAAAFBH0AAAAAKCIoAcAAAAARQQ9AAAAACgi6AEAAABAEUEPAAAAAIoIegAAAABQRNADAAAAgCKCHgAAAAAUEfQAAAAAoIigBwAAAABFBD0AAAAAKCLoAQAAAEARQQ8AAAAAigh6AAAAAFBE0AMAAACAIoIeAAAAABQR9AAAAACgiKAHAAAAAEUEPQAAAAAoIugBAAAAQBFBDwAAAACKCHoAAAAAUETQAwAAAIAigh4AAAAAFBH0AAAAAKCIoAcAAAAARQQ9AAAAACgi6AEAAABAEUEPAAAAAIoIegAAAABQRNADAAAAgCKCHgAAAAAUEfQAAAAAoIigBwAAAABFBD0AAAAAKCLoAQAAAEARQQ8AAAAAigh6AAAAAFBE0AMAAACAIoIeAAAAABQR9AAAAACgiKAHAAAAAEUEPQAAAAAoIugBAAAAQBFBDwAAAACKCHoAAAAAUETQAwAAAIAigh4AAAAAFBH0AAAAAKCIoAcAAAAARQQ9AAAAACgi6AEAAABAEUEPAAAAAIoIegAAAABQRNADAAAAgCKCHgAAAAAUEfQAAAAAoIigBwAAAABFBD0AAAAAKCLoAQAAAEARQQ8AAAAAigh6AAAAAFBE0AMAAACAIoIeAAAAABQR9AAAAACgiKAHAAAAAEUEPQAAAAAoIugBAAAAQBFBDwAAAACKCHoAAAAAUETQAwAAAIAigh4AAAAAFBH0AAAAAKCIoAcAAAAARQQ9AAAAACgi6AEAAABAEUEPAAAAAIoIegAAAABQRNADAAAAgCKCHgAAAAAUEfQAAAAAoMihQW9mPjszT87Mjy5w/taZeXpmzuw9bt/+mgAAAABAkhzbYOZzSe5I8vkXmPnuWustW9kIAAAAALigQ6/QW2t9J8lTv4ddAAAAAIBDbOs39F43Mw/PzDdn5lVbek8AAAAAYJ9NvnJ7mIeSvHKt9ezM3Jbk60luPGhwZk4nOZ0kJ06c2MJHAwAAAMDRcslX6K21nllrPbt3fF+S4zNzzQVm71prnVprndrZ2bnUjwYAAACAI+eSg97MvGJmZu/4lr33/Pmlvi8AAAAA8HyHfuV2Zr6Y5NYk18zM40k+luR4kqy17kzy9iTvn5nnkvwqyTvWWuuybQwAAAAAR9ihQW+t9c5Dzt+R5I6tbQQAAAAAXNC27nILAAAAAPweCHoAAAAAUETQAwAAAIAigh4AAAAAFBH0AAAAAKCIoAcAAAAARQQ9AAAAACgi6AEAAABAEUEPAAAAAIoIegAAAABQRNADAAAAgCKCHgAAAAAUEfQAAAAAoIigBwAAAABFBD0AAAAAKCLoAQAAAEARQQ8AAAAAigh6AAAAAFBE0AMAAACAIoIeAAAAABQR9AAAAACgiKAHAAAAAEUEPQAAAAAoIugBAAAAQBFBDwAAAACKCHoAAAAAUETQAwAAAIAigh4AAAAAFBH0AAAAAKCIoAcAAAAARQQ9AAAAACgi6AEAAABAEUEPAAAAAIoIegAAAABQRNADAAAAgCKCHgAAAAAUEfQAAAAAoIigBwAAAABFBD0AAAAAKCLoAQAAAEARQQ8AAAAAigh6AAAAAFBE0AMAAACAIoIeAAAAABQR9AAAAACgiKAHAAAAAEUEPQAAAAAoIugBAAAAQBFBDwAAAACKCHoAAAAAUETQAwAAAIAigh4AAAAAFBH0AAAAAKCIoAcAAAAARQQ9AAAAACgi6AEAAABAEUEPAAAAAIoIegAAAABQRNADAAAAgCKCHgAAAAAUEfQAAAAAoIigBwAAAABFBD0AAAAAKCLoAQAAAEARQQ8AAAAAigh6AAAAAFBE0AMAAACAIoIeAAAAABQR9AAAAACgiKAHAAAAAEUEPQAAAAAoIugBAAAAQBFBDwAAAACKCHoAAAAAUETQAwAAAIAigh4AAAAAFBH0AAAAAKCIoAcAAAAARQQ9AAAAACgi6AEAAABAEUEPAAAAAIoIegAAAABQRNADAAAAgCKCHgAAAAAUEfQAAAAAoIigBwAAAABFBD0AAAAAKCLoAQAAAEARQQ8AAAAAigh6AAAAAFBE0AMAAACAIoIeAAAAABQR9AAAAACgiKAHAAAAAEUEPQAAAAAoIugBAAAAQBFBDwAAAACKCHoAAAAAUETQAwAAAIAigh4AAAAAFBH0AAAAAKCIoAcAAAAARQQ9AAAAACgi6AEAAABAEUEPAAAAAIoIegAAAABQRNADAAAAgCKCHgAAAAAUEfQAAAAAoIigBwAAAABFBD0AAAAAKCLoAQAAAEARQQ8AAAAAigh6AAAAAFBE0AMAAACAIoIeAAAAABQR9AAAAACgiKAHAAAAAEUEPQAAAAAoIugBAAAAQBFBDwAAAACKCHoAAAAAUETQAwAAAIAigh4AAAAAFDk06M3MZ2fmyZn50QXOz8x8amYem5lHZuY1218TAAAAAEg2u0Lvc0ne9ALn35zkxr3H6SSfvvS1AAAAAICDHBr01lrfSfLUC4y8Lcnn1znfT3L1zFy7rQUBAAAAgP+3jd/Quy7JT897/vjeawAAAADAlm0j6M0Br60DB2dOz8zuzOyePXt2Cx8NAAAAAEfLNoLe40luOO/59Ul+dtDgWuuutdaptdapnZ2dLXw0AAAAABwt2wh69yZ5z97dbl+b5Om11hNbeF8AAAAAYJ9jhw3MzBeT3Jrkmpl5PMnHkhxPkrXWnUnuS3JbkseS/DLJ+y7XsgAAAABw1B0a9NZa7zzk/Eryga1tBAAAAABc0Da+cgsAAAAA/J4IegAAAABQRNADAAAAgCKCHgAA/F979x5t21XQB/g3gQBCID5GTHipoVKGVvQINGorctuqqFCwKgJp1djiRSqx9IGiRbGoBZX6qOLjWhVfV9oCbWJBqRZvBsXKAORAABUjiqSQiEQioSFIMvvH2sd77r5r77X32c+5z/eNccY95669155rrblevzXn3AAADRHoAQAAAEBDBHoAAAAA0BCBHgAAAAA0RKAHAAAAAA0R6AEAAABAQwR6AAAAANAQgR4AAAAANESgBwAAAAANEegBAAAAQEMEegAAAADQEIEeAAAAADREoAcAAAAADRHoAQAAAEBDBHoAAAAA0BCBHgAAAAA0RKAHAAAAAA0R6AEAAABAQwR6AAAAANAQgR4AAAAANESgBwAAAAANEegBAAAAQEMEegAAAADQEIEeAAAAADREoAcAAAAADRHoAQAAAEBDBHoAAAAA0BCBHgAAAAA0RKAHAAAAAA0R6AEAAABAQwR6AAAAANAQgR4AAAAANESgBwAAAAANEegBAAAAQEMEegAAAADQEIEeAAAAADREoAcAAAAADRHoAQAAAEBDBHoAAAAA0BCBHgAAAAA0RKAHAAAAAA0R6AEAAABAQwR6AAAAANAQgR4AAAAANESgBwAAAAANEegBAAAAQEMEegAAAADQEIEeAAAAADREoAcAAAAADRHoAQAAAEBDBHoAAAAA0BCBHgAAAAA0RKAHAAAAAA0R6AEAAABAQwR6AAAAANAQgR4AAAAANESgBwAAAAANEegBAAAAQEMEegAAAADQEIEeAAAAADREoAcAAAAADRHoAQAAAEBDBHoAAAAA0BCBHgAAAAA0RKAHAAAAAA0R6AEAAABAQwR6AAAAANAQgR4AAAAANESgBwAAAAANEegBAAAAQEMEegAAAADQEIEeAAAAADREoAcAAAAADRHoAQAAAEBDBHoAAAAA0BCBHgAAAAA0RKAHAAAAAA0R6AEAAABAQwR6AAAAANAQgR4AAAAANESgBwAAAAANEegBAAAAQEPutukCAAAwwalTyenTmy4FbJf9H+7+PfHMzZYDts0VVyQnT266FMCaCPQAALbV6dPJ/n6yt7fpksDWOLMnyIPz7O93/wr04NgQ6AEAbLO9veTMmU2XAoBtduLEpksArJkx9AAAAACgIQI9AAAAAGiIQA8AAAAAGiLQAwAAAICGCPQAAAAAoCECPQAAAABoiEAPAAAAABoi0AMAAACAhgj0AAAAAKAhAj0AAAAAaIhADwAAAAAaItADAAAAgIYI9AAAAACgIQI9AAAAAGiIQA8AAAAAGiLQAwAAAICGCPQAAAAAoCECPQAAAABoiEAPAAAAABoi0AMAAACAhgj0AAAAAKAhAj0AAAAAaIhADwAAAAD93YgcAAAgAElEQVQaItADAAAAgIYI9AAAAACgIQI9AAAAAGiIQA8AAAAAGiLQAwAAAICGCPQAAAAAoCECPQAAAABoiEAPAAAAABoi0AMAAACAhgj0AAAAAKAhAj0AAAAAaIhADwAAAAAaItADAAAAgIYI9AAAAACgITMFeqWULyml/EEp5fpSyrN7pl9ZSnlfKWV/9PPU5RcVAAAAALjb0AtKKXdN8qIkX5TkhiSvL6VcU2t9+9hL/3Ot9RkrKCMAAAAAMDJLC73Lk1xfa31nrfUjSV6S5AmrLRYAAAAA0GeWQO8BSd596O8bRv837itLKW8ppby0lPKgpZQOAAAAADjHLIFe6fm/Ovb3ryb5lFrrZyb5zSQ/3zujUk6WUt5QSnnD+973vvlKCgAAAADMFOjdkORwi7sHJnnP4RfUWt9fa7199OdPJ3lE34xqradqrY+stT7y4osvPkp5AQAAAOBYmyXQe32Sh5RSLiul3D3Jk5Ncc/gFpZT7Hfrz8Ul+b3lFBAAAAAAODH7Lba31o6WUZyR5VZK7JvnZWuvbSinPS/KGWus1Sb65lPL4JB9NcnOSK1dYZgAAAAA4tgYDvSSptb4yySvH/u87D/3+bUm+bblFAwAAAADGzdLlFgAAAADYEgI9AAAAAGiIQA8AAAAAGiLQAwAAAICGCPQAAAAAoCECPQAAAABoiEAPAAAAABoi0AMAAACAhgj0AAAAAKAhAj0AAAAAaIhADwAAAAAaItADAAAAgIYI9AAAAACgIQI9AAAAAGiIQA8AAAAAGiLQAwAAAICGCPQAAAAAoCECPQAAAABoiEAPAAAAABoi0AMAAACAhgj0AAAAAKAhAj0AAAAAaIhADwAAAAAaItADAAAAgIYI9AAAAACgIQI9AAAAAGiIQA8AAAAAGiLQAwAAAICGCPQAAAAAoCECPQAAAABoiEAPAAAAABoi0AMAAACAhgj0AAAAAKAhAj0AAAAAaIhADwAAAAAaItADAAAAgIYI9AAAAACgIQI9AAAAAGiIQA8AAAAAGiLQAwAAAICGCPQAAAAAoCECPQAAAABoiEAPAAAAABoi0AMAAACAhgj0AAAAAKAhAj0AAAAAaIhADwAAAAAaItADAAAAgIbcbdMFAAAAYMucOpWcPr3pUjCr/f3u3xMnNloMZnTFFcnJk5suBY3TQg8AAIBznT59NiRi++3tdT9sv/19YTlLoYUeAAAA59vbS86c2XQpYLdoRcmSaKEHAAAAAA0R6AEAAABAQ3S5BQAWZ/D01TDI+eoYkBwAaJgWegDA4gyevhoGOV8NA5IDAI3TQg8AWA6Dp9MKLR4BgMYJ9GjaqTeeyunrPGFfxP6NP5wkOfHiZ264JG274mFX5OQjdN0CAABg9QR6NO30daezf+N+9i7VHemo9p4tyFvU/o1dN0OBHgAAAOsg0KN5e5fu5cyVZzZdDI6xEy8+sekiAAAAcIz4UgwAAAAAaIhADwAAAAAaItADAAAAgIYI9AAAAACgIQI9AAAAAGiIQA8AAAAAGiLQAwAAAICGCPQAAAAAoCECPQAAAABoiEAPAAAAABoi0AMAAACAhgj0AAAAAKAhAj0AAAAAaMjdNl0AAAAadOpUcvr0pktxNPv73b8nTmy0GEd2xRXJyZObLgUAsEFa6AEAML/Tp88GY63Z2+t+WrS/326QCgAsjRZ6AAAczd5ecubMpktxvLTaqhAAWCot9AAAAACgIQI9AAAAAGiILrcAAADA8bXOL3raxBcz+TKlnaSFHgAAAHB8rfOLntb9xUy+TGlnaaEHNO3UG0/l9HWbPUHt39id/E+8+MTGynDFw67IyUd46gYAAEeyq1/05MuUdpYWekDTTl93+q8DtU3Zu3Qve5eu8SnbmP0b9zceagIAALA+WugBzdu7dC9nrjyz6WJszCZbBgIAALB+Ar1jZhu6Jy7TNnR1XAXdJwEAAIBJdLk9Zrahe+Iybbqr4yroPgkAAABMo4XeMXTcuyduu11rbQgAcCycOrVb3yR58I2fuzag/hVXJCf1hAHap4UeAADAok6fPhuC7YK9ve5nl+zv71boChxrWugBAAAsw95ecubMpkvBJLvW2hA41rTQAwAAAICGaKEHAJu2C+Mu7cpYS8ZWAgCgAVroAcCm7cK4S7sw1pKxlQAAaIQWegCwDYy7tHmtty4EWIVdaEV+YFdakydalANa6AEAADDBLrQiP7ALrckTLcqBJFroAQAAMI1W5NtlF1oYAgvTQg8AAAAAGqKFHgAALGpd44ytawww43MBwFYT6AFsyKk3nsrp6xa/+du/sbu5O/HiEwvP64qHXZGTj3ADBzC3g3HGVj0+1zrG/zoIDQV6ALC1BHoAG3L6utPZv3E/e5cudnO26PsPHASDAj2AI9qVccaMzwUAW0+gB7BBe5fu5cyVZzZdjCTLaeEHAADMaZXDNqx6qAZDNGyMQA+OYFldJfsss/vkJLpVAgAAbIlVDtuwyqEaDNGwUQI9OIJldZXss4p5HqZbJQAAwJZpcdgGQzRslEBvAatspbUq62j9tWzb2ppsm7pKzqOlbQ8cU+v6ttBx6/r20D66qwDshnWcw9Z5vnJ+gq11l00XoGUHrbRasnfp3spbgC3T/o37zYWmACzooNvJuu3trecbRMft728mwARg+dZxDlvX+cr5CbaaFnoLarWVViu0JgM4plrsdnJUuqsA7JZdOYc5P8FWE+gBa7Xsruqr6Ea+rd28AQAAINHlFlizZXdVX3Y3ct28AQAA2HZa6AFrt81d1XXzBqBZyxqMf9kD7htUHwCWTqAH7KSjdu1dtAuv7rqNO27fruomG3bLwWD8iw6Wv8zB9g+Ob441ALBUAj1gJx107Z23O+4i3XcPwkCBXsOWdTM8r019s2riJht2zbYNxm9QfYD1W9dD6nU+lPYg+jwCPTZqqBXVrK2ltIqiz7q79uquuyO27WZ4VdxkAwDspnU9pF7XQ2kPonsJ9NiooVZUs7SW0iqK42jZ3xac+MZgYGTWp/rzPpX3ZB0A1meXHlJ7EN1LoMfGLdqKSqsojqOjdimeZpnzSoTt0KxZn+rP81Tek3UAgKUS6AE0apu/LTgRtkPTpj3VP+q4PPv78z1h16Jv+xxl2x91fKVNb/91LeumlxOOg1n251n3X/ssW6TpQG8VXc7msYruafPQlQ0AWLujjMsz7xg7WvRtp3Vs+2Q7tv+u1PNlDIy/rEHvBSFsyiz78yz77zYcm+CQpgO9VXQ5m8emPjfRlQ1gZvPczOzSmGBDyz3Lsm7z8rFZqx6Xx1g522sdYzJty/bfhXq+jIHxlzHofYtByCKtkZPta5V6nFrY9lnG/rwtx6Zdsapr9G2sfyvSdKCXbH+Xs1XRlY1pprVeHWpZquUnO2eem5ldGhNsaLmHlnXbl2/bLNIKZhmtX47RxSswp20YGL/FIOSoYei2tko9Ti1sFzXpnD7tfO08PL9VXKPvQv2bQ/OBHsdLX1DVF1Ad91BqWuvVaS1LtfxkZ63iZqaFm5NFlruF5dsmi7SCWbT1yzG7eAVYm3WFoes65x6nFraLmHROn3S+dh4+umXXyV2of3MQ6NGUvqBqPKASSnWmtV4dasG3jNZ7kz5jWgvB1oLY8WXctXB50XFKlzHOaMvrj2NoU61gjtnFKwCs3DzndOdhNkSgR3OGulnPGx4cJbQ4SlCxTcHEpBZ8y2y9N+9ntBjEji/jroXLi45Tuug4oxtdf8v8NrRENwzYBZsel3JZxyXHI5Zh3mEGdmksNliG8X2obx9R/xmwlYHerAHLPKHKNoUpBxZp/bJoy5dtXB+bcpTQYt6gYhuDnXnHnzxKXZvnM1odF3LaMra6TIdtcpzSja6/ZX0bWqIbRuLGj/XUgVVv/02PS7mM45Lj0W6atn+tasyveYcZOK5jse2iRR9urONc3UJYNr4Pje8jQ/V/0w+Z2ApbGejNGrAcnv7eD743N33opt7X3XL7Ldm/cX9qeLaJgGuR1i+LtHzZxnBp01YdWuxCsLNsi3ZXHQrEfflHO7a2e/ayuk+20g1jlRe/bvxYdR1Y1/bf9LiUix6XWjkeMZ9p+9cqx/zahW8BZn6LPNxY17F60bBsXabtQ0P1f9MPmdgKWxnoJUdrPXTTh246UtC1yYBrE61fhEvLNUtLy9Zak67jy0cW7a46FIjvypd/bG3YtUTHoXt2E1Z98bsrN37r/ua7XepmuUgdmHU9bPs6OO5mbak5awvNVrbpOo4b8+5fmw7LtuHYtowWTvOWYVe+PXVafZtlva6j9d4iYVkrNv2QadXmbd2fbGcL/xXa2kDvKI4ajgm4WMQsLS3Hp01qUTqtNek6Q5p1ffnIot1Vj8M+f1zCrua7Zx+1u1OyXRcRx+Hid1Hr/uY73Sw7LbZEaKHL15BlL8OsLTVnaaHZUr32jZnn24Zj26LHlaOU4TjUhaO0GE3aXNZttgtdcudt3Z9sbwv/FdmpQO+4mncsvqOOv9daq591WnWL0k2ENMv+8pFN2JXWbc2HXcfB0MXre9979oLhsFtu6f5/0gXXpi+k6Lfub77TzbIzz3rou5EZbxWy7jH3trXL1zSrWIZ56/PQA5NdbdG07vq6CdtwbNtEGY7Dt6cetQXfulrvHQctPgjrs8xzxiRDLfz7bEl93IpAb9GxtI67ecfim/a6bW85tgzbUt+ENKt3HFq3rXIswlnC/3XsK2vZZ5fRCmWoddtNN02+eHrve7vph/WFfVty8TDRqrsS7UpLSFZvGUHUOo4LLVhkGWZZh8n09bjqFk1HOW4lyz2mtBD+Lro/LKMubLrV66TgdZllWPZ6HirrLPNctnn36WQ79oEW7XqX3D7HbNzmmQK9UsqXJPmRJHdN8p9qrS8Ym36PJL+Q5BFJ3p/kSbXWP5m1EIuOpTWLRW5atyWwGmpt1GfesrfQcmxRi9a3dYQL2xI67oJpwemksQJbWs+rHItw6Diwrv1/HeeItdxMLRL4zVKGTd/oJKu/8W6hJeQ2bIdNl2EdN72zWDRMayFk2XZD6zCZbT2usnXbtoQLqw5/Fz0uLLo/LKMuLPtbQRddB0cpw5Blr+fDtqlb71Fa8B2HVqvrtqsPSlc9Zm9ytj72PZQ/XI5JlrT+BgO9Uspdk7woyRcluSHJ60sp19Ra337oZf8syV/UWj+1lPLkJN+X5EnzFGTRsbSGHPWmdZk3rIuGNOtqbbTrAUiyWH1bR7iwlgCDnVnPx2EswlWfI7oPWfHN1CKfP0sZtiV8WHVXokWD0XHLXi/ruOFMVnvjvahl3PRuOpQ8sOnjwi5Y9Ng2ZBn1faiMu9AldtXraZbtuIy6sMxvBV1FXVl1N+BlrOdtr8/rCE4XtYxz9TZYxYPSbV/mcX3b8pZbkosuOvt/l1yS3O9+Z/8+vL5uuim59dbkwgtn/8wl1t9ZWuhdnuT6Wus7k6SU8pIkT0hyONB7QpLvGv3+0iQ/Vkoptda6cAmXaN6g6sD+jft56I8+9LyuqOM3/0NB1jLCg02HbS20bluHdYQLawkwsJ7ZLdsePqwjpNmGb3pc5Q1nsp4b70XtSkDdum0JRldt1fV9V+rjpo8L28A6aKM+ryM4XcSyztXbYJlDxmxiuJh1tD6+3/2GjxsbCtFnCfQekOTdh/6+IcnnTHpNrfWjpZRbknxCkj+fu0Qbcvq607n2Xdfm0Z/86HP+/yCw2r9xP7fcfksuusdFfW/Pte+6NslwS55VhgfjyzAets1axiGLtm5bRxmB5Zm0Xx8O5Me7/o/v20dpAcgOOn06ufba5NGjc+34RdO13TlgpRd+4zcBfRd+R+2msSzbfiOzLm68z13Oo9TVbdjndoX6yC5Rnxd3XM7VQ3XlHe84e44Zt45zzDLOc+t4KLSic3EZakRXSnliksfUWp86+vtrklxea73q0GveNnrNDaO//2j0mvePzetkkoNSPjTJH8xdYgAAAADYTZ9ca7146EWztNC7IcmDDv39wCTvmfCaG0opd0tyUZKbx2dUaz2V5NQMnwkAAAAA9LjLDK95fZKHlFIuK6XcPcmTk1wz9pprknzd6PevSvLqbRs/DwAAAAB2wWALvdGYeM9I8qokd03ys7XWt5VSnpfkDbXWa5L8TJJfLKVcn65l3pNXWWgAAAAAOK4Gx9ADAAAAALbHLF1uAQAAAIAtIdADAAAAgIYI9AAAAACgIYNfirHrSilPSfLAJD+R5PNqrb8xNv3KJJ84+vOmWuvPr7eEw0opP5Xk6iSvqrXesenybKtSysPT1fkvT/J7tdZfnPP9Xz369e8meW2t9b8suYgppXzZ6NfPSXJLrfUHl/0ZJKWUr0lSklyU5LZa638am/6cJLcmuTDJ7bXWH1h/Kc8pz2Nqra/aZBnGlVKemuTy0Z9X11pfscnyAAAAHCcbDfRKKS9J8ltJXlZr/fMjzuOqJB+T5LYkH1Nr/f45Z/GQJD+Y5FuS3D3Jb4xNv6TW+n2jz/qWo5RxUaWU/5zk1Zm8nt6e5P1Jvr2UUmqtz9tAGYbefyLJPZN8Qbpg9EfmfP/Buj8I0+bdzkny6CQX1lq/vZTynQOf98Ra638d++8HJ7kuyQeS/E7Pe65K8vFJfjpdOPyyI5Txs5LckuT5Sb593jcPlWGG6ScyZTuVUr55NH3i/jb0mlnmMcfy9m2nWVya5BNqrc8upTy3Z/qHkjy41vrNfdNLKd+apGZCfRyaPssylFJ+Jcmb0gWPfyfdN43PPI8ZtuVQXRja5y+ptZ4spTw7yUOTnBfozbCeppZxWUopF9Zab50y/WOTpNb6gaNMX6QMpZSSbr//aK31rUed/2hen5Dk5jrh265KKfdN8sHx6YfKkCRvnjA9SR6e5B211g9OKUPvZ6xLKeX+tdb3DLymLFK+UsoFtda/WuD9U7fTMkyr86P6fMfAdhzaZyZu5xnnP3GfKqV8XLrz7GckeVet9S8nzWeaUsq9a60f6vn/e9Va/99R5jnHZw9eD8yyntZhHfVx1aYtw9B6XsbxfTSfhY59Mxy/p+6T67DKZZxnf1jg2u/I9X3Wa/xpyzF0XTV0T7uke6GZTLlmWfgafuD4fyJLui5c5fXIEo8bRz7XrsOi56lF1tMycqKx+R35uDFlnieyYH2d555xkk230Ps/Sa5J8pRSysW11nNCltFB4x7pbmhvq7X+aM887p7kzlrrj5ZSvmN8YinlB5LcnuTDSe5Vax0PSd5ca721lPJdSb67Z/6/PTqA3jkq7/j8p5Zxhs9PKeXfJPmb6VoLXVNr/eXxMmTKekryllrr65K8rpRyXjfqoTKUUr4/yUemlXFUhqsnlWGGZfgHSTIK0/5tTxmfkm4df3q6b18eX8Y/TfLedK2leneWGeZxZ5I/Hv3+hp73vzLJmZwNUM7Z6WutLyilPCrJB2qtf9pThPukq0PfkuSyJOMByVD5km4df0W6QO+8FoCllH+dLjyZtJ6nlmE0/XlJvnXC9KnbKckFmbK/zfiaqdOH1lMp5dfSHeB7t9MMdTFJXpuzoWxfiPKuJNeXUk7mbJ0Znz6tPh5M/3Ct9T/2LONBXUu6A3jfCeYna63Xjl7/mUeYx9C2HKorQ8edt46C8Zdl8rlkaD0NHReGjq9D05+f5C+S/N1SSu9JsnStMd/T/VourbV+75zTD1pwlyRX1Fp/aM4yvDDJHyR5eCnlnRPK+Ph0rUU/I8lHaq3fNTb9aUnuSHdRcVmSfz02/SfS7VO/l+4h1r8Y+4jvTfKbo2X4niTj2+JfJvlokncm+Sejv8fLOPUzRnXlPumO5Q+otT57bPpz09Wj/5LkkbXWn5vz/aeSXJ8J67mUctCatCT56oytoxnL8B/S3dD9dinl4bXWp89ZxqHt9GtJXpPklbXW/fHyzfKaofpWSvnu0TI+uJRyptb6E3O+f2g7T53/6DVT96l0x6V7J3l5kpNJrhp7/9B2+ifpjv/3Gc3/mWPzf3kp5XXpHpi8oi+cnWGfm7qtR++ddj0wtB1+KN2DpVcn+Yzx88jQcWfGZRiqj0PHtqH5T91Oo9cM1edF96mh9TxUF2cp49A+MXSeGlqGoX1y6nYYvWboumrqteUMy7hoXZvluHFw7Zf0XPPMUF8XPf5O3adnXI6h66qp97Q5ey806dpy6H5vluPG0DXL0DX80HYY2ueGrl1nOS4M1dehfXroHDN0XTh4v7eEc+3QMgxth1mOz0PHz6n5wQzraeh+bSgnmuXYN/XeftFrzyx4HzMydK80aNNj6L2m1vre0cK9tmf6x6drPfeDST5uwjx+vdb6wtHvv9sz/S8Ozee85a21Xj36985a63kbotb6mlrr99daX1hrfc1AGT9+yuf/UN/nj1yU5JlJ9nO2e+9hFyZ5VLod+rzwodb6W4d+v/MIZfjADGW8b5KvSfJzSf73hOnTluEPk/xJ6Z4+lZ7pnzp63y+lq/jnqLW+JMmfJflgKeUxE8o4NI8fqbX+0uj3V/a8/zXpEvIfT09ro9H7XtN3Ahx5Z5KvSnL/JDdMKd8vpjtp983/7bXW76m1/sta63kBcpKPzfT1fEO6G+4PpSe0TPInSf5NkhcleWPP9DfkbEjU595J/qyU8owkN054zcckeXcp5UfSrZO+eZRSyoXpaemYge2Y5NmjffL7kvRtx6H9KbXW3z7YV2rPU9Za68trrb9aaz1Va/2FnlmUdC0+7yilfFHfR6Q7cTy/nO2qfdi16Q7gD0x3gddXxmsP/f6Wnpf8TrptcFuS/9Ez/a1J/mC0Hfqe7L12dNx7QfpDzYuSHCzbeQF2rfXqWuvzaq1vq7W+uW8Z0tXzT0tyZ+m66I57e5K/HNWFvmPP0PF1aPqZdCHPb/UFZSP3SneT8OrR7/NO/6kkXzL6eeQRynCXJO8evabv+J0kj0ny8NHF0od7pl+S5AHpgsE+N6fblw5Cu3ElXR25c8L0u6fbL+83pYxDn/HBJNeNzvd9La5ur7V+R5LPS/KlE97/1invP5Xkpkx+uvn0dDdy98yE4+8MZXh3uifFP51u/+0r47RlHNpOv54u4L2slDKppf3Qa85ken27R5JfSBdmfcwR3n9zuvU3aTsPzT8Z3qduS7df3Jb+bTW0nR6bLgR7QbqL5HG/Vmt9brpt+KwJZRza54bq49enOya8MP3n2qH1dGOt9Tnprq36lnHouDPLMgzVx6HPGJr/0HZKhuvz0HoeWoah9TxUF2cp49Cx7+My/Tx1sAy/P+Hzz6TbJ189YZ8c2g7JudeffddVQ9eWQ/v9rHVt0jLeI8nPZ/px4znprp0+Nv3Xt4fr6yOmlGHa8fcHMnk7/1W6/eC+6b/GT4br2xOSfHaSH+8LeZK8LslrSin/Pt31+rh3pAtQnj16cDFu6H5vaB0lw/XtsUneXkq5a/qvX4eOG0P73AeS3F5K+d4Jy5AMn2sP6utvpL++Dm3roWPX0DIM3cckw+t5lmWYdlz6yUzf1rMcn4fq80F+0JuxZHg9DWUH/zvJg9Jde/5hz/RZjn13S3eP88Kc/zA7me3ac1pde1KS3xntD7/VM33oPiVJ/n6Sh6Ub6ulINt1C71mllGldyu5Id7H1bek2RJ/njM1jPIgp6dLhN6VrmbRsv5zkGaPfb+6Zftd0B+WvSPK/Jszj1nQV+m+kO1iPuyNdQHNz+gOQIXdL8kdJ/tXo33Fn0p0gHp8u1Opzl3TjDB50Tf6fY9M/muQbR5/VVyEvyfQuju9Kl4A/JT07bTm3++ET0t/98FSSJyZ5XHoCiBlckORHc3YZ5/Up6brk3pzuwmTcO9KFsm9M8n1HmH/SBTffOJr/P+yZPrSePzXndjEf9+QkbyqlPDJnx0c77LYknz5l/klXF25Nd6Dvq08l59al8W7u16dbT08e/T7u2WP7/E+NTf9/Sb4p3YXrpJPUog531X9gzl+Gy5K8Jd1xq2+fLenW0c1JfuWIZTi8LfouDC/L2S7iv9Qz/RtLKZ+Ts+tx/KnRLNt6yFB9HB/yYNwd6Y5b90x3HB93Z7rj7337ptdaXzV6SvkFU8r4wnThbEn/eWZo+jNrre9KklLKr04pw6MmfP5z062HX0//RVvSHds+Mvq9L7z9/nTh64XpP8/9TLr98pNy/v6SdDdKnzn6/Of0LMMLSikPS3d8/5kJZTz4jE8elXfcy+rZls3j+0syOqbXWk+VUvrCspfWWt89+n38/JNa6xtKKW9N/3Er6bbTLUlSSul7gJh022BaGV5cz3YbeWnP9PskqaOn0rf3TD/YTgctpce9stb6kST/bfTT5xXTXjNDnf+JdF2nfyw914Az1Neh7Xww/xf1zX9kaJ/67nT7/sVJ+lqpDNWVbxy9P+mu0cb9yuj9b0p3XdHnVM5uw759bmp9TLf87093/dq3Xw+tp/86KuN/L6X0nQenHndmXIah48bQZxyef9/0oe2UDNTnDB83hpZhan1PV/9OHPr9KGUcOr4+ejT9w0lO90z/3XR15AfTf+14+ei99yilPKueP6bvjUn+anTcmXQOeXWSv5fuuuT5PdN/Pd19yKemv1fC7emuq786yft6pv9xki8uXUvpvgd8N6c7l39tkr7rlevTPaB9dbrQrs8XZPqwOb+Zbp+7fEIZku648HnpfyB9W7r9Mel6y/S99zFTPj/pbv4fl+56pm9M86szfYikv53py3gwdND9J0z/wnT3ml+R/v3lFUk+f/T7pGFcHpTumvBRpZTr6/njI//1MqSrb+P3tkPHjQ8c+uy+nnF3pmvV9m+nrOf3J/nzUsq/S7fOx92ULrj98XR1atx9090nXDjh/ReUbkzzB6QLm8b9frpz5LcmeXHP9Aelq/Nfnv5jQtLlAxcmeVop5S49jUXelS7IelH6jzt3ptvee+nW6bg3pQuQLkz//nDnaH9N+o87SfcQ8+HpzsV9D8euTVcH3pruWrRi9koAAAdrSURBVHbch9Otg3tPKOPnpjvu/Hz6j89D+/x70jUK+Hc5e4087hU5t76O73MXlFKemW49Xdfz/vsk+bRSyuenWx/jXpTkzw/NfzzkfkW6LOs7krxgQhnfluT16Y6h39lzXBi06RZ6P3mopU3fRdtfpVu5P5zJlW1oHnekq9QvyeSwahHPy9mn/l/YM/0u6Q4oD8moWWaPkm5nuyE9N/ejp8x/me5LEo4SVN2W5OJa63enaz027qp06fAnpeve0me/dn38vyv9J6nbknzilM94bc6OCdfXGuiSJA8aVeIH9Ewf2s5JV0/ule5E+sUTXjPNmweWcaoZttNl6eriD6c/YJnFM9MFj1+T5Mt6pg+t56FlHFrPQ/M/vB4mdU0eqksHIc8F6ULuect4QbqL+JMT3r8MU9fj0DpYwj6dnLst3jZvGbKEbT1nGY9SHw8eJEyqC7clud+U405qrX9Wa31pKeWJE8r4j9OFWb+T7jg47qnpugRcmeQbeqY/vpTy3FLK/dPdMJ2jdEM2XJnka0v/OKxXpjs3PCvdBWbfMry51vp7oz8/recl3zD6/wcmeVrP9K9KF5A/K93T9XHflO6m+Av7yjDqMvClo9f0lnE0369P99DooT3LcLgOfkrP+x9VSvmWUevfz+qZ/pTR9KvTs51GZbwqyeeOWoKP+7pSyrNG2+DpPdOT5DGHPqOvDF97aB6TnuQ+uNb6Pel5Gl1r/XDtWv6+PD3nqFrrXz/MmlJfv2xUxqv66tNo2Z+erlvwV/a8/4npbtp/OT3n+9H7r0xy/77511rfWWv909r1WDivLtZa/7jW+rLajbfTd02UdPvcQ9Kd6/v2qSuT/PN04cGTeqZ//qF97sKe6V+X5Omj8v+jnulPPtiOE+pK0t1IPGn0GefV5yRffuj9fceNt9RaXzc6Nn1Pz/THpesmdJ8J73/cobp23nHl4IZ5ZNK15aPTHZ+uSv/1wjen6xL29ek/bjzp0P7Q18L6S0bzvzo9x5VRYHrgvhPK+JUHnzHh+PiEQ9v6k3qmPzXdDefr0l/fHpfu3PH16anvtdaba9ci/+UT3p8kX3pQhgn71GPTHV8/O/3H16vThU33SvfQetzD0gUAl6drGT/u1nTXx73HldH0+4+mT7qvuzxdSHKv9Id+lye5a631n06Y/sF09xHPm/AZ96i1fnG6Xhl9LZIuqrU+ON34c5f0TL94NP36dOFBn6nD5qSrY5+cLrC8z4Rl+MTRMvStx4trrSdHy9C3zw99fnJ2W036jKHjwtBnDE0/qGufkq5b8rhLDi3jpPV8yage/Ez618PQMjz+0Lm877hxQa31byb52QllmGU9PyDdMj4//ceWe6c7Nzw2/fXx1kw5V6cL4A/mf88Jn39hupZvfXXtbaOy3zNdr6k+nzWax8PT3wvx4tF2+M0Jy3DhoTJ+bM/0oWW8YKC+H3zGRemGYelbz5cn+XujffeynukfTHLZlDK8Il0g/E/TnbfHzbI/3JFuHUxqCTlUXw+vp75j2x2H1tN5Y/LOMP/PT7eu753JD1yG5jFooy306kCXsjo8ZtlS5rGgqeNcZRRelMlj9M26nK/J0QPJofHChpbhnK7JOX98pcHPqLX+9qHf+waSHXr/UPfDZIblmGaGZZxlHhO305Lq4tRlHFrPQ8s4w/40tB0Ppk1bD0Preeq4ljPUhaFxMRc2S10Z2mcX3Kdn2hYD22Ep23qRMs6wHoeOn1OPG2VgvMWRobEED49Z0ze2xazvnzQ2xseP3l8yoS7NsByzjrtz1DIMljHDY4gOLcPBuDw/tsFlGBrHZGge78qUsTeH1sGM9XVojNJF6/PQuMTLWIah+jq0noeWceX1eWgZ6vBQKAstw5LqylBdGNrnpu4vM5ZxaJ8bWk/3HZi+UH2esQxD9XnqONcZGDs5Z48rT8vkMX2njfmbLB4UDX3G0Ji6i07P4fpR+4fNWXQ9Ti3DDJ8/+BlDx4Whz5ihDEN1bZaxj4fWw9Cx7WB/mHQuX8Z6HtrWi9aFRec/tB1mmcfQtlppfZ/xMxY9bkxdT0vY52epr4seF4bmPxhQzzCPQaW2+6VWADBRKeWz6mh8v1LK02qt53V9KKU8+lBIflXtGbC2lPJp6brp/N9a66uW/P6H5GzrmTsnvH/qcpRS/lat9W2j3x9bz+8is1AZZizj1PXQwjIs+hlDZlgHs9TXqetpCfVxaP7rWIahbTlU19ZRnwfr6zRLWIaF1/Po/yfWhUWnz1LGGeYxtJ4W2k7LOEcsWhdgl9gfYP0EegDspHLu2Jt/p9b6hHlfs6bpB2O0bLKME8uwRWXchmWYOo9pFl3GZcxj09PnmMfQttyGujB1OadZ9TpYxjJsUV1ouoxwnNgfYANqrX78+PHjx8/O/SR59KHfP/Mor9n09G0owy6UcR3LMPSzDWXc9PRtKMMu1AXruZ0y+vFznH7sD378rP9HCz0AAAAAaMimv+UWAAAAAJiDQA8AAAAAGiLQAwAAAICGCPQAAAAAoCECPQAAAABoyP8H7F8YzNLfCWwAAAAASUVORK5CYII=\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7fe693486fd0>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"from scipy.cluster.hierarchy import dendrogram\n",
"import matplotlib.pyplot as plt\n",
"plt.figure(figsize=(22,18))\n",
"\n",
"# plot using 'dendrogram()'\n",
"dendrogram(linkage_matrix)\n",
"\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 5. Visualization with Seaborn's ```clustermap``` \n",
"\n",
"The [seaborn](http://seaborn.pydata.org/index.html) plotting library for python can plot a [clustermap](http://seaborn.pydata.org/generated/seaborn.clustermap.html), which is a detailed dendrogram which also visualizes the dataset in more detail. It conducts the clustering as well, so we only need to pass it the dataset and the linkage type we want, and it will use scipy internally to conduct the clustering"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {
"scrolled": false
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7fe68cc13080>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"import seaborn as sns\n",
"\n",
"sns.clustermap(normalized_X, figsize=(12,18), method=linkage_type, cmap='viridis')\n",
"\n",
"# Expand figsize to a value like (18, 50) if you want the sample labels to be readable\n",
"# Draw back is that you'll need more scrolling to observe the dendrogram\n",
"\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Looking at the colors of the dimensions can you observe how they differ between the three type of flowers? You should at least be able to notice how one is vastly different from the two others (in the top third of the image)."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
}
],
"metadata": {
"anaconda-cloud": {},
"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.6.3"
}
},
"nbformat": 4,
"nbformat_minor": 1
}