handson-ml/09_unsupervised_learning.ipynb

7007 lines
3.7 MiB
Plaintext
Raw Normal View History

2016-09-27 23:31:21 +02:00
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
2016-09-27 23:31:21 +02:00
"source": [
"**Chapter 9 Unsupervised Learning**"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"_This notebook contains all the sample code and solutions to the exercises in chapter 9._"
2016-09-27 23:31:21 +02:00
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<table align=\"left\">\n",
" <td>\n",
" <a href=\"https://colab.research.google.com/github/ageron/handson-ml3/blob/main/09_unsupervised_learning.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>\n",
" </td>\n",
2021-05-25 21:31:19 +02:00
" <td>\n",
" <a target=\"_blank\" href=\"https://kaggle.com/kernels/welcome?src=https://github.com/ageron/handson-ml3/blob/main/09_unsupervised_learning.ipynb\"><img src=\"https://kaggle.com/static/images/open-in-kaggle.svg\" /></a>\n",
2021-05-25 21:31:19 +02:00
" </td>\n",
"</table>"
]
},
2016-09-27 23:31:21 +02:00
{
"cell_type": "markdown",
"metadata": {
"tags": []
},
2016-09-27 23:31:21 +02:00
"source": [
"# Setup"
]
},
{
"cell_type": "markdown",
"metadata": {},
2016-09-27 23:31:21 +02:00
"source": [
2022-02-19 11:03:20 +01:00
"This project requires Python 3.7 or above:"
2016-09-27 23:31:21 +02:00
]
},
{
"cell_type": "code",
"execution_count": 1,
2018-03-15 18:51:08 +01:00
"metadata": {},
2016-09-27 23:31:21 +02:00
"outputs": [],
"source": [
"import sys\n",
"\n",
2022-02-19 11:03:20 +01:00
"assert sys.version_info >= (3, 7)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"It also requires Scikit-Learn ≥ 1.0.1:"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"from packaging import version\n",
"import sklearn\n",
2016-09-27 23:31:21 +02:00
"\n",
"assert version.parse(sklearn.__version__) >= version.parse(\"1.0.1\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"As we did in previous chapters, let's define the default font sizes to make the figures prettier:"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"import matplotlib.pyplot as plt\n",
2016-09-27 23:31:21 +02:00
"\n",
"plt.rc('font', size=14)\n",
"plt.rc('axes', labelsize=14, titlesize=14)\n",
"plt.rc('legend', fontsize=14)\n",
"plt.rc('xtick', labelsize=10)\n",
"plt.rc('ytick', labelsize=10)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"And let's create the `images/unsupervised_learning` folder (if it doesn't already exist), and define the `save_fig()` function which is used through this notebook to save the figures in high-res for the book:"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"from pathlib import Path\n",
"\n",
"IMAGES_PATH = Path() / \"images\" / \"unsupervised_learning\"\n",
"IMAGES_PATH.mkdir(parents=True, exist_ok=True)\n",
2016-09-27 23:31:21 +02:00
"\n",
"def save_fig(fig_id, tight_layout=True, fig_extension=\"png\", resolution=300):\n",
" path = IMAGES_PATH / f\"{fig_id}.{fig_extension}\"\n",
2016-09-27 23:31:21 +02:00
" if tight_layout:\n",
" plt.tight_layout()\n",
" plt.savefig(path, format=fig_extension, dpi=resolution)"
2016-09-27 23:31:21 +02:00
]
},
{
"cell_type": "markdown",
"metadata": {},
2016-09-27 23:31:21 +02:00
"source": [
"First, let's import a few common modules, ensure MatplotLib plots figures inline and prepare a function to save the figures."
2016-09-27 23:31:21 +02:00
]
},
{
"cell_type": "markdown",
"metadata": {},
2016-09-27 23:31:21 +02:00
"source": [
"# Clustering"
2016-09-27 23:31:21 +02:00
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Introduction Classification _vs_ Clustering**"
]
},
2016-09-27 23:31:21 +02:00
{
"cell_type": "code",
"execution_count": 5,
2018-03-15 18:51:08 +01:00
"metadata": {},
2022-02-19 10:24:54 +01:00
"outputs": [
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 648x252 with 2 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
2016-09-27 23:31:21 +02:00
"source": [
"# extra code this cell generates and saves Figure 91\n",
"\n",
"import matplotlib.pyplot as plt\n",
"from sklearn.datasets import load_iris\n",
"\n",
2019-01-15 05:36:29 +01:00
"data = load_iris()\n",
"X = data.data\n",
"y = data.target\n",
"data.target_names\n",
"\n",
2019-01-15 05:36:29 +01:00
"plt.figure(figsize=(9, 3.5))\n",
"\n",
"plt.subplot(121)\n",
"plt.plot(X[y==0, 2], X[y==0, 3], \"yo\", label=\"Iris setosa\")\n",
"plt.plot(X[y==1, 2], X[y==1, 3], \"bs\", label=\"Iris versicolor\")\n",
"plt.plot(X[y==2, 2], X[y==2, 3], \"g^\", label=\"Iris virginica\")\n",
"plt.xlabel(\"Petal length\")\n",
"plt.ylabel(\"Petal width\")\n",
"plt.grid()\n",
"plt.legend()\n",
2019-01-15 05:36:29 +01:00
"\n",
"plt.subplot(122)\n",
"plt.scatter(X[:, 2], X[:, 3], c=\"k\", marker=\".\")\n",
"plt.xlabel(\"Petal length\")\n",
2019-01-15 05:36:29 +01:00
"plt.tick_params(labelleft=False)\n",
"plt.gca().set_axisbelow(True)\n",
"plt.grid()\n",
"\n",
"save_fig(\"classification_vs_clustering_plot\")\n",
2019-01-15 05:36:29 +01:00
"plt.show()"
2016-09-27 23:31:21 +02:00
]
},
{
2019-01-15 05:36:29 +01:00
"cell_type": "markdown",
"metadata": {},
2016-09-27 23:31:21 +02:00
"source": [
"**Note**: the next cell shows how a Gaussian mixture model (explained later in this chapter) can actually separate these clusters pretty well using all 4 features: petal length & width, and sepal length & width. This code maps each cluster to a class. Instead of hard coding the mapping, the code picks the most common class for each cluster using the `scipy.stats.mode()` function:"
2016-09-27 23:31:21 +02:00
]
},
{
"cell_type": "code",
2019-01-15 05:36:29 +01:00
"execution_count": 6,
2018-03-15 18:51:08 +01:00
"metadata": {},
2022-02-19 10:24:54 +01:00
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAYYAAAEKCAYAAAAW8vJGAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAAsTAAALEwEAmpwYAAAyjklEQVR4nO3de3xV5Zno8d/DNUDCxQESQSFkBEKHDwJmrFovgcKgxcr0jFIsTqUdRRQqOnLqTJ0esVbp6XDq0QEVjgqUilbUOg5ytKIGrIdeQggqYihXFULQyiXhlttz/tg7Ye+dvbPXvq299s7z/XzWx+y13rXW85KYJ2ut91mvqCrGGGNMi07pDsAYY4y3WGIwxhgTxBKDMcaYIJYYjDHGBLHEYIwxJkiXdAeQqP79+2thYWFc+544cYJevXolN6A0sv54Vzb1BbKrP9nUF3Deny1btnyhqgPCbcv4xFBYWEh5eXlc+5aVlVFaWprcgNLI+uNd2dQXyK7+ZFNfwHl/RGR/pG12K8kYY0wQSwzGGGOCWGIwxhgTxBKDMcaYIJYYjDHGBHFtVJKInA/8EigAmoHlqvpoSJtS4D+Bvf5VL6vqTxI57/Hjxzl8+DANDQ1ttvXp04cdO3YkcnhPybb+9O7dm+PHj9O7d+90h2I8rLq2mhkvzeDX1/+agtyCmPedXzmfN0reCNo3kWNmAzeHqzYC96hqhYjkAVtE5E1V/Sik3buqem0yTnj8+HFqamoYPHgwPXr0QESCttfW1pKXl5eMU3lCNvVHVfnLX/5CTU0NgCUHE9GDmx7kd5/8jgc3PsjSqUtj3veDYx+02TeRY2YD124lqWq1qlb4v64FdgCDU3nOw4cPM3jwYHr27NkmKRhvExG6d+/O4MGDOXz4cLrDMR5VXVvNisoVNGszKypXcKjuUMz7Khq0byLHzBZpKXATkUJgHPCHMJsvFZFtwEFggapuD7P/bGA2QH5+PmVlZWHP06dPHxobG6mtrQ27vampKeK2TJSN/VFVamtrI36PM0VdXV3G9yGQV/rzyM5HaGxqBKChqYE5z83hruF3JbRvIsf0gmR8b8TtiXpEJBfYCDykqi+HbOsNNKtqnYh8A3hUVYe3d7ySkhKNVPm8Y8cORo0aFXHfbLr1Atnbn2jfx0zQUatrU6m6tpqix4o43Xi6dV2PLj3YM39P1OcCkfbd/E+bueTpS+I6plfEUPm8RVVLwm1zdVSSiHQFXgKeDU0KAKp6XFXr/F+vB7qKSH83YzTGZIYHNz1IszYHrWvSJh7c+GDc+858eWbcx8wmriUG8d3kfxrYoaq/iNCmwN8OEbnYH99f3IrRGJM5Nn+2mfqm+qB19U31/L/P/l/c++4+sjvuY2YTN58xfA34R+ADEan0r/sRMARAVZ8ErgduF5FG4BQwQ21S6ogKCwuZN28eCxYsSHcoxrhu621bk7KvF26LeY2bo5J+p6qiqmNUdax/Wa+qT/qTAqq6RFX/RlUvVNVLVLVjpekANTU1zJ8/n7/+679uHZ1zzTXXsH79+pSdc9asWVx7bVJGCkc0f/58SkpKyMnJId7XpRvvqa6t5qqVV6V8BE9ldSV9f9aX92veT+l5OjqrfHagpuZZNm8upKysE5s3F1JT82xKz7dv3z7Gjx/PG2+8waJFi3j//ffZsGEDU6dOZc6cOSk9dzI0NjYS6UKvubmZm2++me9+97suR2VSKXDcfyrd9JubOHbmGN956TspPU9HZ4khipqaZ6mqms2ZM/sB5cyZ/VRVzU5pcrjjjjtQVcrLy5k+fTojR45k1KhRzJs3j23btkXcr3fv3rz44otB6woLC1m8eHHr52XLljFixAhycnIYMGAAU6ZMobGxkYULF7Jq1Spee+01RAQRaR3yduDAAWbMmEG/fv3o168fU6dO5c9//nPrMRcuXMjo0aNZuXJl6xXOiRMnwsb4H//xH/zgBz9gxIgRCfwLGS9xa9x/ZXUl2z/3jV7f/vl2u2pIIUsMUezZcx/NzSeD1jU3n2TPnvtScr4vv/yS119/nXnz5pGbm9tme79+/eI+dnl5OXPnzuX++++nqqqKDRs2cPXVVwOwYMECpk+fzqRJk6iurqa6uprLLruMkydPMmHCBHJycti4cSObN2/m3HPPZdKkSZw8efbfZe/evaxZs4a1a9eybds2cnJy4o7TZJbAET6pHMFz029uCvpsVw2pk/EzuKXamTOfxLQ+Ubt27UJVUzJu/5NPPqFXr15cd9115OXlMXToUC688EIAcnNz6dGjB927d6eg4Ox47V/96leoKitWrGitHl+2bBkDBw5k3bp1TJ8+HYD6+npWr15Nfn5+0uM23tVytdAykqe+qZ4VlSv48VU/Tuq4/8CrhRYtVw1j8sck7TzGx64YoujefUhM6xOVykFYkydPZujQoQwbNoyZM2eyatWqqJXSW7ZsYe/eveTl5ZGbm0tubi59+vThyJEj7N69u7XdeeedZ0mhA0qkliAWoVcLLeyqITUsMURRVPQQnTr1DFrXqVNPiooeSsn5hg8fjojE9ZZUEWmTWALfKpuXl0dFRQUvvPACQ4YMYdGiRRQXF3Pw4MGIx2xubmbs2LFUVlYGLTt37uS2225rbZdNk6kb5xKpJYjF7iO7Y1pvEmO3kqLIz58J+J41nDnzCd27D6Go6KHW9cl2zjnnMGXKFJYsWcKdd97Z5jnD0aNH6du3b9h9+/fvT3V1devnmpqaoM8AXbp0YeLEiUycOJEHHnig9ZbQ7Nmz6datG01NTUHtx48fz3PPPUf//v0jntd0XInUEsTi1H2nXDmP8bErBgfy82dy6aX7KC1t5tJL96UsKbR4/PHHUVVKSkpYu3YtVVVVfPzxxzzxxBOMGRP5fuqVV17J0qVLKS8vZ+vWrcyaNSvoIfC6det49NFH2bp1K/v372fNmjXU1ta2Ps8oLCzkww8/pKqqii+++IKGhgZmzpxJfn4+06ZNY+PGjezdu5dNmzZxzz33BI1McmrXrl1UVlZy8OBB6uvrW69A6uvro+9sjHGFJQYPGjZsGBUVFUyePJl7772XMWPGMHHiRF599VWWLVsWcb+HH36YoqIiSktLuf7667nlllsYOHBg6/a+ffvyyiuvMGnSJIqLi1m8eDFPPfUUV1xxBQC33noro0aNoqSkhAEDBvDee+/Rs2dPNm3aRFFRETfccAPFxcXcfPPNHDlyJK4RUrfccgvjxo3jkUceobq6mnHjxjFu3Lh2b2cZ7wtX4JbIukTPnUi7ZMTkhpTGqKoZvVx00UUayUcffRRxm6rq8ePH292eabK1P9G+j5ngnXfeSXcISRXan9vX3a6dHuikd6y7IynrYuF0/0jtwn1vEo3JDbH0JxygXCP8XrUrBmNMQsIVuCWyLtFzJ9Iu1rbpkuoYLTEYYxISrsAtkXWJnjuRdrG2TZdUx2iJwRgTt3AFbs9sfYYVW0PWVT7DM1ufidoulr9+IxXXhe7vtF2sbdPFjRgtMRhj4hauwK2+qZ765ra1DQ1NDVHbxfLXr9PiuliK8Nwq2EuEGzFaHYMxJm7hCtyaaYaQAv7QX2SR2sVSHOe0uC6WIjy3CvYS4UaMlhiMMXFzq8AtkXPHEmM6++OUGzHarSRjTMZIRc2Cl3glbksMxpiM4XRCILcmDko2r8RticEYkxFSUbPgJV6K2xJDBgudnc2YbJaKmgUv8VLclhg8qqamhvnz57dOlTl48GCuueYa1q9fn7Jzzpo1i2uvvTZlx9+2bRs33ngj559/Pj169GDkyJH8+7//O83NbUesGBMoFTULXuK1uC0xRFFQACJtl4LkTU7Vxr59+xg/fjxvvPEGixYt4v3332fDhg1MnTqVOXPmpO7ESdLY2Bh2wqEtW7YwYMAAVq9ezfbt23nggQf4yU9+ws9+9rM0RGkySSpqFrzEa3FbYoiipia29clwxx13oKqUl5czffp0Ro4cyahRo5g3bx7btm2LuF/v3r158cUXg9aF3m5atmwZI0aMICcnhwEDBjBlyhQaGxtZuHAhq1at4rXXXkNEEBHKysoAOHDgADNmzKB
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
2016-09-27 23:31:21 +02:00
"source": [
"# extra code\n",
"\n",
"import numpy as np\n",
"from scipy import stats\n",
"from sklearn.mixture import GaussianMixture\n",
"\n",
"y_pred = GaussianMixture(n_components=3, random_state=42).fit(X).predict(X)\n",
"\n",
"mapping = {}\n",
"for class_id in np.unique(y):\n",
" mode, _ = stats.mode(y_pred[y==class_id])\n",
" mapping[mode] = class_id\n",
"\n",
"y_pred = np.array([mapping[cluster_id] for cluster_id in y_pred])\n",
"\n",
2019-01-15 05:36:29 +01:00
"plt.plot(X[y_pred==0, 2], X[y_pred==0, 3], \"yo\", label=\"Cluster 1\")\n",
"plt.plot(X[y_pred==1, 2], X[y_pred==1, 3], \"bs\", label=\"Cluster 2\")\n",
"plt.plot(X[y_pred==2, 2], X[y_pred==2, 3], \"g^\", label=\"Cluster 3\")\n",
"plt.xlabel(\"Petal length\")\n",
"plt.ylabel(\"Petal width\")\n",
"plt.legend(loc=\"upper left\")\n",
"plt.grid()\n",
2019-01-15 05:36:29 +01:00
"plt.show()"
]
},
{
"cell_type": "markdown",
2018-03-15 18:51:08 +01:00
"metadata": {},
2016-09-27 23:31:21 +02:00
"source": [
"What's the ratio of iris plants we assigned to the right cluster?"
2016-09-27 23:31:21 +02:00
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
2022-02-19 10:24:54 +01:00
"outputs": [
{
"data": {
"text/plain": [
"0.9666666666666667"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
2016-09-27 23:31:21 +02:00
"source": [
"(y_pred==y).sum() / len(y_pred)"
]
},
{
2019-01-15 05:36:29 +01:00
"cell_type": "markdown",
"metadata": {},
"source": [
2019-01-15 05:36:29 +01:00
"## K-Means"
2016-09-27 23:31:21 +02:00
]
},
{
"cell_type": "markdown",
2019-01-15 05:36:29 +01:00
"metadata": {},
2016-09-27 23:31:21 +02:00
"source": [
"**Fit and predict**"
2016-09-27 23:31:21 +02:00
]
},
{
"cell_type": "markdown",
"metadata": {},
2016-09-27 23:31:21 +02:00
"source": [
"Let's train a K-Means clusterer on a dataset if blobs. It will try to find each blob's center and assign each instance to the closest blob:"
2016-09-27 23:31:21 +02:00
]
},
{
"cell_type": "code",
"execution_count": 8,
2018-03-15 18:51:08 +01:00
"metadata": {},
2016-09-27 23:31:21 +02:00
"outputs": [],
"source": [
"from sklearn.cluster import KMeans\n",
"from sklearn.datasets import make_blobs\n",
"\n",
"# extra code the exact arguments of make_blobs() are not important\n",
"blob_centers = np.array([[ 0.2, 2.3], [-1.5 , 2.3], [-2.8, 1.8],\n",
" [-2.8, 2.8], [-2.8, 1.3]])\n",
"blob_std = np.array([0.4, 0.3, 0.1, 0.1, 0.1])\n",
"X, y = make_blobs(n_samples=2000, centers=blob_centers, cluster_std=blob_std,\n",
" random_state=7)\n",
"\n",
"k = 5\n",
"kmeans = KMeans(n_clusters=k, n_init=10, random_state=42)\n",
"y_pred = kmeans.fit_predict(X)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Note: Throughout this notebook, when `n_init` was not set when creating a `KMeans` estimator, I explicitly set it to `n_init=10` to avoid a warning about the fact that the default value for this hyperparameter will change from 10 to `\"auto\"` in Scikit-Learn 1.4."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
2019-01-15 05:36:29 +01:00
"Now let's plot them:"
2016-09-27 23:31:21 +02:00
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
2022-02-19 10:24:54 +01:00
"outputs": [
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 576x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
2016-09-27 23:31:21 +02:00
"source": [
"# extra code this cell generates and saves Figure 92\n",
"\n",
2019-01-15 05:36:29 +01:00
"def plot_clusters(X, y=None):\n",
" plt.scatter(X[:, 0], X[:, 1], c=y, s=1)\n",
" plt.xlabel(\"$x_1$\")\n",
" plt.ylabel(\"$x_2$\", rotation=0)\n",
"\n",
2019-01-15 05:36:29 +01:00
"plt.figure(figsize=(8, 4))\n",
"plot_clusters(X)\n",
"plt.gca().set_axisbelow(True)\n",
"plt.grid()\n",
"save_fig(\"blobs_plot\")\n",
2019-01-15 05:36:29 +01:00
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
2019-01-15 05:36:29 +01:00
"Each instance was assigned to one of the 5 clusters:"
2016-09-27 23:31:21 +02:00
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
2022-02-19 10:24:54 +01:00
"outputs": [
{
"data": {
"text/plain": [
"array([4, 0, 1, ..., 2, 1, 0], dtype=int32)"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
2016-09-27 23:31:21 +02:00
"source": [
2019-01-15 05:36:29 +01:00
"y_pred"
2016-09-27 23:31:21 +02:00
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
2022-02-19 10:24:54 +01:00
"outputs": [
{
"data": {
"text/plain": [
"True"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
2016-09-27 23:31:21 +02:00
"source": [
2019-01-15 05:36:29 +01:00
"y_pred is kmeans.labels_"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
2019-01-15 05:36:29 +01:00
"And the following 5 _centroids_ (i.e., cluster centers) were estimated:"
2016-09-27 23:31:21 +02:00
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
2022-02-19 10:24:54 +01:00
"outputs": [
{
"data": {
"text/plain": [
"array([[-2.80389616, 1.80117999],\n",
" [ 0.20876306, 2.25551336],\n",
" [-2.79290307, 2.79641063],\n",
" [-1.46679593, 2.28585348],\n",
" [-2.80037642, 1.30082566]])"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
2016-09-27 23:31:21 +02:00
"source": [
2019-01-15 05:36:29 +01:00
"kmeans.cluster_centers_"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Note that the `KMeans` instance preserves the labels of the instances it was trained on. Somewhat confusingly, in this context, the _label_ of an instance is the index of the cluster that instance gets assigned to (they are not targets, they are predictions):"
2016-09-27 23:31:21 +02:00
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
2022-02-19 10:24:54 +01:00
"outputs": [
{
"data": {
"text/plain": [
"array([4, 0, 1, ..., 2, 1, 0], dtype=int32)"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
2016-09-27 23:31:21 +02:00
"source": [
2019-01-15 05:36:29 +01:00
"kmeans.labels_"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
2019-01-15 05:36:29 +01:00
"Of course, we can predict the labels of new instances:"
2016-09-27 23:31:21 +02:00
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
2022-02-19 10:24:54 +01:00
"outputs": [
{
"data": {
"text/plain": [
"array([1, 1, 2, 2], dtype=int32)"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
2016-09-27 23:31:21 +02:00
"source": [
"import numpy as np\n",
"\n",
2019-01-15 05:36:29 +01:00
"X_new = np.array([[0, 2], [3, 2], [-3, 3], [-3, 2.5]])\n",
"kmeans.predict(X_new)"
2016-09-27 23:31:21 +02:00
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Decision Boundaries**"
]
},
{
"cell_type": "markdown",
"metadata": {},
2016-09-27 23:31:21 +02:00
"source": [
2019-01-15 05:36:29 +01:00
"Let's plot the model's decision boundaries. This gives us a _Voronoi diagram_:"
2016-09-27 23:31:21 +02:00
]
},
{
"cell_type": "code",
"execution_count": 15,
2018-03-15 18:51:08 +01:00
"metadata": {},
2022-02-19 10:24:54 +01:00
"outputs": [
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 576x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
2016-09-27 23:31:21 +02:00
"source": [
"# extra code this cell generates and saves Figure 93\n",
"\n",
2019-01-15 05:36:29 +01:00
"def plot_data(X):\n",
" plt.plot(X[:, 0], X[:, 1], 'k.', markersize=2)\n",
"\n",
"def plot_centroids(centroids, weights=None, circle_color='w', cross_color='k'):\n",
" if weights is not None:\n",
" centroids = centroids[weights > weights.max() / 10]\n",
" plt.scatter(centroids[:, 0], centroids[:, 1],\n",
" marker='o', s=35, linewidths=8,\n",
2019-01-15 05:36:29 +01:00
" color=circle_color, zorder=10, alpha=0.9)\n",
" plt.scatter(centroids[:, 0], centroids[:, 1],\n",
" marker='x', s=2, linewidths=12,\n",
2019-01-15 05:36:29 +01:00
" color=cross_color, zorder=11, alpha=1)\n",
"\n",
"def plot_decision_boundaries(clusterer, X, resolution=1000, show_centroids=True,\n",
" show_xlabels=True, show_ylabels=True):\n",
" mins = X.min(axis=0) - 0.1\n",
" maxs = X.max(axis=0) + 0.1\n",
" xx, yy = np.meshgrid(np.linspace(mins[0], maxs[0], resolution),\n",
" np.linspace(mins[1], maxs[1], resolution))\n",
" Z = clusterer.predict(np.c_[xx.ravel(), yy.ravel()])\n",
" Z = Z.reshape(xx.shape)\n",
"\n",
2019-01-15 05:36:29 +01:00
" plt.contourf(Z, extent=(mins[0], maxs[0], mins[1], maxs[1]),\n",
" cmap=\"Pastel2\")\n",
" plt.contour(Z, extent=(mins[0], maxs[0], mins[1], maxs[1]),\n",
" linewidths=1, colors='k')\n",
" plot_data(X)\n",
" if show_centroids:\n",
" plot_centroids(clusterer.cluster_centers_)\n",
"\n",
2019-01-15 05:36:29 +01:00
" if show_xlabels:\n",
" plt.xlabel(\"$x_1$\")\n",
2019-01-15 05:36:29 +01:00
" else:\n",
" plt.tick_params(labelbottom=False)\n",
" if show_ylabels:\n",
" plt.ylabel(\"$x_2$\", rotation=0)\n",
2019-01-15 05:36:29 +01:00
" else:\n",
" plt.tick_params(labelleft=False)\n",
"\n",
2019-01-15 05:36:29 +01:00
"plt.figure(figsize=(8, 4))\n",
"plot_decision_boundaries(kmeans, X)\n",
"save_fig(\"voronoi_plot\")\n",
2019-01-15 05:36:29 +01:00
"plt.show()"
2016-09-27 23:31:21 +02:00
]
},
{
2019-01-15 05:36:29 +01:00
"cell_type": "markdown",
2018-03-15 18:51:08 +01:00
"metadata": {},
2016-09-27 23:31:21 +02:00
"source": [
2019-01-15 05:36:29 +01:00
"Not bad! Some of the instances near the edges were probably assigned to the wrong cluster, but overall it looks pretty good."
2016-09-27 23:31:21 +02:00
]
},
{
"cell_type": "markdown",
"metadata": {},
2016-09-27 23:31:21 +02:00
"source": [
"**Hard Clustering _vs_ Soft Clustering**"
2016-09-27 23:31:21 +02:00
]
},
{
2019-01-15 05:36:29 +01:00
"cell_type": "markdown",
"metadata": {},
2016-09-27 23:31:21 +02:00
"source": [
"Rather than arbitrarily choosing the closest cluster for each instance, which is called _hard clustering_, it might be better to measure the distance of each instance to all 5 centroids. This is what the `transform()` method does:"
2016-09-27 23:31:21 +02:00
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
2022-02-19 10:24:54 +01:00
"outputs": [
{
"data": {
"text/plain": [
"array([[2.81, 0.33, 2.9 , 1.49, 2.89],\n",
" [5.81, 2.8 , 5.85, 4.48, 5.84],\n",
" [1.21, 3.29, 0.29, 1.69, 1.71],\n",
" [0.73, 3.22, 0.36, 1.55, 1.22]])"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
],
2016-09-27 23:31:21 +02:00
"source": [
"kmeans.transform(X_new).round(2)"
2016-09-27 23:31:21 +02:00
]
},
{
"cell_type": "markdown",
"metadata": {},
2016-09-27 23:31:21 +02:00
"source": [
2019-01-15 05:36:29 +01:00
"You can verify that this is indeed the Euclidian distance between each instance and each centroid:"
2016-09-27 23:31:21 +02:00
]
},
{
"cell_type": "code",
"execution_count": 17,
2018-03-15 18:51:08 +01:00
"metadata": {},
2022-02-19 10:24:54 +01:00
"outputs": [
{
"data": {
"text/plain": [
"array([[2.81, 0.33, 2.9 , 1.49, 2.89],\n",
" [5.81, 2.8 , 5.85, 4.48, 5.84],\n",
" [1.21, 3.29, 0.29, 1.69, 1.71],\n",
" [0.73, 3.22, 0.36, 1.55, 1.22]])"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
2016-09-27 23:31:21 +02:00
"source": [
"# extra code\n",
"np.linalg.norm(np.tile(X_new, (1, k)).reshape(-1, k, 2)\n",
" - kmeans.cluster_centers_, axis=2).round(2)"
2016-09-27 23:31:21 +02:00
]
},
{
2019-01-15 05:36:29 +01:00
"cell_type": "markdown",
"metadata": {},
2016-09-27 23:31:21 +02:00
"source": [
"### The K-Means Algorithm"
2016-09-27 23:31:21 +02:00
]
},
{
2019-01-15 05:36:29 +01:00
"cell_type": "markdown",
"metadata": {},
2016-09-27 23:31:21 +02:00
"source": [
"The K-Means algorithm is one of the fastest clustering algorithms, and also one of the simplest:\n",
"* First initialize $k$ centroids randomly: e.g., $k$ distinct instances are chosen randomly from the dataset and the centroids are placed at their locations.\n",
2019-01-15 05:36:29 +01:00
"* Repeat until convergence (i.e., until the centroids stop moving):\n",
" * Assign each instance to the closest centroid.\n",
" * Update the centroids to be the mean of the instances that are assigned to them."
2016-09-27 23:31:21 +02:00
]
},
{
2019-01-15 05:36:29 +01:00
"cell_type": "markdown",
"metadata": {},
"source": [
"The `KMeans` class uses an optimized initialization technique by default. To get the original K-Means algorithm (for educational purposes only), you must set `init=\"random\"` and `n_init=1`. More on this later in this chapter."
2019-01-15 05:36:29 +01:00
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's run the K-Means algorithm for 1, 2 and 3 iterations, to see how the centroids move around:"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
2022-02-19 10:24:54 +01:00
"outputs": [
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 720x576 with 6 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
2016-09-27 23:31:21 +02:00
"source": [
"# extra code this cell generates and saves Figure 94\n",
"\n",
"kmeans_iter1 = KMeans(n_clusters=5, init=\"random\", n_init=1, max_iter=1,\n",
" random_state=5)\n",
"kmeans_iter2 = KMeans(n_clusters=5, init=\"random\", n_init=1, max_iter=2,\n",
" random_state=5)\n",
"kmeans_iter3 = KMeans(n_clusters=5, init=\"random\", n_init=1, max_iter=3,\n",
" random_state=5)\n",
2019-01-15 05:36:29 +01:00
"kmeans_iter1.fit(X)\n",
"kmeans_iter2.fit(X)\n",
"kmeans_iter3.fit(X)\n",
"\n",
2019-01-15 05:36:29 +01:00
"plt.figure(figsize=(10, 8))\n",
2016-09-27 23:31:21 +02:00
"\n",
2019-01-15 05:36:29 +01:00
"plt.subplot(321)\n",
"plot_data(X)\n",
"plot_centroids(kmeans_iter1.cluster_centers_, circle_color='r', cross_color='w')\n",
"plt.ylabel(\"$x_2$\", rotation=0)\n",
2019-01-15 05:36:29 +01:00
"plt.tick_params(labelbottom=False)\n",
"plt.title(\"Update the centroids (initially randomly)\")\n",
2016-09-27 23:31:21 +02:00
"\n",
2019-01-15 05:36:29 +01:00
"plt.subplot(322)\n",
"plot_decision_boundaries(kmeans_iter1, X, show_xlabels=False,\n",
" show_ylabels=False)\n",
"plt.title(\"Label the instances\")\n",
2016-09-27 23:31:21 +02:00
"\n",
2019-01-15 05:36:29 +01:00
"plt.subplot(323)\n",
"plot_decision_boundaries(kmeans_iter1, X, show_centroids=False,\n",
" show_xlabels=False)\n",
2019-01-15 05:36:29 +01:00
"plot_centroids(kmeans_iter2.cluster_centers_)\n",
2016-09-27 23:31:21 +02:00
"\n",
2019-01-15 05:36:29 +01:00
"plt.subplot(324)\n",
"plot_decision_boundaries(kmeans_iter2, X, show_xlabels=False,\n",
" show_ylabels=False)\n",
2016-09-27 23:31:21 +02:00
"\n",
2019-01-15 05:36:29 +01:00
"plt.subplot(325)\n",
"plot_decision_boundaries(kmeans_iter2, X, show_centroids=False)\n",
"plot_centroids(kmeans_iter3.cluster_centers_)\n",
2016-09-27 23:31:21 +02:00
"\n",
2019-01-15 05:36:29 +01:00
"plt.subplot(326)\n",
"plot_decision_boundaries(kmeans_iter3, X, show_ylabels=False)\n",
2016-09-27 23:31:21 +02:00
"\n",
"save_fig(\"kmeans_algorithm_plot\")\n",
2016-09-27 23:31:21 +02:00
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
2016-09-27 23:31:21 +02:00
"source": [
"**K-Means Variability**"
2016-09-27 23:31:21 +02:00
]
},
{
2019-01-15 05:36:29 +01:00
"cell_type": "markdown",
2018-03-15 18:51:08 +01:00
"metadata": {},
"source": [
2019-01-15 05:36:29 +01:00
"In the original K-Means algorithm, the centroids are just initialized randomly, and the algorithm simply runs a single iteration to gradually improve the centroids, as we saw above.\n",
"\n",
"However, one major problem with this approach is that if you run K-Means multiple times (or with different random seeds), it can converge to very different solutions, as you can see below:"
]
},
2016-09-27 23:31:21 +02:00
{
"cell_type": "code",
"execution_count": 19,
2018-03-15 18:51:08 +01:00
"metadata": {},
2022-02-19 10:24:54 +01:00
"outputs": [
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 720x230.4 with 2 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
2016-09-27 23:31:21 +02:00
"source": [
"# extra code this cell generates and saves Figure 95\n",
"\n",
"def plot_clusterer_comparison(clusterer1, clusterer2, X, title1=None,\n",
" title2=None):\n",
2019-01-15 05:36:29 +01:00
" clusterer1.fit(X)\n",
" clusterer2.fit(X)\n",
"\n",
" plt.figure(figsize=(10, 3.2))\n",
2016-09-27 23:31:21 +02:00
"\n",
2019-01-15 05:36:29 +01:00
" plt.subplot(121)\n",
" plot_decision_boundaries(clusterer1, X)\n",
" if title1:\n",
" plt.title(title1)\n",
2016-09-27 23:31:21 +02:00
"\n",
2019-01-15 05:36:29 +01:00
" plt.subplot(122)\n",
" plot_decision_boundaries(clusterer2, X, show_ylabels=False)\n",
" if title2:\n",
" plt.title(title2)\n",
"\n",
"kmeans_rnd_init1 = KMeans(n_clusters=5, init=\"random\", n_init=1, random_state=2)\n",
"kmeans_rnd_init2 = KMeans(n_clusters=5, init=\"random\", n_init=1, random_state=9)\n",
2019-01-15 05:36:29 +01:00
"\n",
"plot_clusterer_comparison(kmeans_rnd_init1, kmeans_rnd_init2, X,\n",
" \"Solution 1\",\n",
" \"Solution 2 (with a different random init)\")\n",
2019-01-15 05:36:29 +01:00
"\n",
"save_fig(\"kmeans_variability_plot\")\n",
2019-01-15 05:36:29 +01:00
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
2022-02-19 10:24:54 +01:00
"outputs": [
{
"data": {
"text/plain": [
"KMeans(init=array([[-3, 3],\n",
" [-3, 2],\n",
" [-3, 1],\n",
" [-1, 2],\n",
" [ 0, 2]]),\n",
" n_clusters=5, n_init=1, random_state=42)"
]
},
"execution_count": 20,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"good_init = np.array([[-3, 3], [-3, 2], [-3, 1], [-1, 2], [0, 2]])\n",
"kmeans = KMeans(n_clusters=5, init=good_init, n_init=1, random_state=42)\n",
"kmeans.fit(X)"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
2022-02-19 10:24:54 +01:00
"outputs": [
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 576x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# extra code\n",
"plt.figure(figsize=(8, 4))\n",
"plot_decision_boundaries(kmeans, X)"
]
},
{
2019-01-15 05:36:29 +01:00
"cell_type": "markdown",
"metadata": {},
"source": [
2019-01-15 05:36:29 +01:00
"### Inertia"
2016-09-27 23:31:21 +02:00
]
},
{
2019-01-15 05:36:29 +01:00
"cell_type": "markdown",
2018-03-15 18:51:08 +01:00
"metadata": {},
2016-09-27 23:31:21 +02:00
"source": [
2019-01-15 05:36:29 +01:00
"To select the best model, we will need a way to evaluate a K-Mean model's performance. Unfortunately, clustering is an unsupervised task, so we do not have the targets. But at least we can measure the distance between each instance and its centroid. This is the idea behind the _inertia_ metric:"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
2022-02-19 10:24:54 +01:00
"outputs": [
{
"data": {
"text/plain": [
"211.59853725816836"
]
},
"execution_count": 22,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
2019-01-15 05:36:29 +01:00
"kmeans.inertia_"
2016-09-27 23:31:21 +02:00
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {},
2022-02-19 10:24:54 +01:00
"outputs": [
{
"data": {
"text/plain": [
"219.43539442771404"
]
},
"execution_count": 23,
"metadata": {},
"output_type": "execute_result"
}
],
2016-09-27 23:31:21 +02:00
"source": [
"kmeans_rnd_init1.inertia_ # extra code"
2016-09-27 23:31:21 +02:00
]
},
{
"cell_type": "code",
"execution_count": 24,
2018-03-15 18:51:08 +01:00
"metadata": {},
2022-02-19 10:24:54 +01:00
"outputs": [
{
"data": {
"text/plain": [
"258.64724728961636"
]
},
"execution_count": 24,
"metadata": {},
"output_type": "execute_result"
}
],
2016-09-27 23:31:21 +02:00
"source": [
"kmeans_rnd_init2.inertia_ # extra code"
2016-09-27 23:31:21 +02:00
]
},
{
2019-01-15 05:36:29 +01:00
"cell_type": "markdown",
2018-03-15 18:51:08 +01:00
"metadata": {},
2016-09-27 23:31:21 +02:00
"source": [
"As you can easily verify, inertia is the sum of the squared distances between each training instance and its closest centroid:"
2016-09-27 23:31:21 +02:00
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {},
2022-02-19 10:24:54 +01:00
"outputs": [
{
"data": {
"text/plain": [
"211.59853725816856"
]
},
"execution_count": 25,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# extra code\n",
"X_dist = kmeans.transform(X)\n",
"(X_dist[np.arange(len(X_dist)), kmeans.labels_] ** 2).sum()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The `score()` method returns the negative inertia. Why negative? Well, it is because a predictor's `score()` method must always respect the \"_greater is better_\" rule."
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {},
2022-02-19 10:24:54 +01:00
"outputs": [
{
"data": {
"text/plain": [
"-211.5985372581684"
]
},
"execution_count": 26,
"metadata": {},
"output_type": "execute_result"
}
],
2016-09-27 23:31:21 +02:00
"source": [
"kmeans.score(X)"
]
},
{
"cell_type": "markdown",
2018-03-15 18:51:08 +01:00
"metadata": {},
"source": [
"### Multiple Initializations"
]
},
{
2019-01-15 05:36:29 +01:00
"cell_type": "markdown",
"metadata": {},
"source": [
"So one approach to solve the variability issue is to simply run the K-Means algorithm multiple times with different random initializations, and select the solution that minimizes the inertia."
2019-01-15 05:36:29 +01:00
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"When you set the `n_init` hyperparameter, Scikit-Learn runs the original algorithm `n_init` times, and selects the solution that minimizes the inertia. By default, Scikit-Learn sets `n_init=10`."
]
},
{
"cell_type": "code",
"execution_count": 27,
2018-03-15 18:51:08 +01:00
"metadata": {},
2022-02-19 10:24:54 +01:00
"outputs": [
{
"data": {
"text/plain": [
"KMeans(init='random', n_clusters=5, random_state=2)"
]
},
"execution_count": 27,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# extra code\n",
2019-01-15 05:36:29 +01:00
"kmeans_rnd_10_inits = KMeans(n_clusters=5, init=\"random\", n_init=10,\n",
" random_state=2)\n",
2019-01-15 05:36:29 +01:00
"kmeans_rnd_10_inits.fit(X)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
2019-01-15 05:36:29 +01:00
"As you can see, we end up with the initial model, which is certainly the optimal K-Means solution (at least in terms of inertia, and assuming $k=5$)."
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {},
2022-02-19 10:24:54 +01:00
"outputs": [
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 576x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# extra code\n",
2019-01-15 05:36:29 +01:00
"plt.figure(figsize=(8, 4))\n",
"plot_decision_boundaries(kmeans_rnd_10_inits, X)\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {},
2022-02-19 10:24:54 +01:00
"outputs": [
{
"data": {
"text/plain": [
"211.5985372581684"
]
},
"execution_count": 29,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"kmeans_rnd_10_inits.inertia_"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Centroid initialization methods"
]
},
{
2019-01-15 05:36:29 +01:00
"cell_type": "markdown",
"metadata": {},
"source": [
2019-01-15 05:36:29 +01:00
"Instead of initializing the centroids entirely randomly, it is preferable to initialize them using the following algorithm, proposed in a [2006 paper](https://goo.gl/eNUPw6) by David Arthur and Sergei Vassilvitskii:\n",
"* Take one centroid $c_1$, chosen uniformly at random from the dataset.\n",
"* Take a new center $c_i$, choosing an instance $\\mathbf{x}_i$ with probability: $D(\\mathbf{x}_i)^2$ / $\\sum\\limits_{j=1}^{m}{D(\\mathbf{x}_j)}^2$ where $D(\\mathbf{x}_i)$ is the distance between the instance $\\mathbf{x}_i$ and the closest centroid that was already chosen. This probability distribution ensures that instances that are further away from already chosen centroids are much more likely be selected as centroids.\n",
"* Repeat the previous step until all $k$ centroids have been chosen."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
2019-01-15 05:36:29 +01:00
"The rest of the K-Means++ algorithm is just regular K-Means. With this initialization, the K-Means algorithm is much less likely to converge to a suboptimal solution, so it is possible to reduce `n_init` considerably. Most of the time, this largely compensates for the additional complexity of the initialization process."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
2019-01-15 05:36:29 +01:00
"To set the initialization to K-Means++, simply set `init=\"k-means++\"` (this is actually the default):"
2016-09-27 23:31:21 +02:00
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
2019-01-15 05:36:29 +01:00
"### Accelerated K-Means"
2016-09-27 23:31:21 +02:00
]
},
{
2019-01-15 05:36:29 +01:00
"cell_type": "markdown",
2018-03-15 18:51:08 +01:00
"metadata": {},
2016-09-27 23:31:21 +02:00
"source": [
"The K-Means algorithm can sometimes be accelerated by avoiding many unnecessary distance calculations: this is achieved by exploiting the triangle inequality (given three points A, B and C, the distance AC is always such that AC ≤ AB + BC) and by keeping track of lower and upper bounds for distances between instances and centroids (see this [2003 paper](https://www.aaai.org/Papers/ICML/2003/ICML03-022.pdf) by Charles Elkan for more details)."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"For Elkan's variant of K-Means, use `algorithm=\"elkan\"`. For regular KMeans, use `algorithm=\"full\"`. The default is `\"auto\"`, which uses the full algorithm since Scikit-Learn 1.1 (it used Elkan's algorithm before that)."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
2019-01-15 05:36:29 +01:00
"### Mini-Batch K-Means"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
2019-01-15 05:36:29 +01:00
"Scikit-Learn also implements a variant of the K-Means algorithm that supports mini-batches (see [this paper](http://www.eecs.tufts.edu/~dsculley/papers/fastkmeans.pdf)):"
2016-09-27 23:31:21 +02:00
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {},
2022-02-19 10:24:54 +01:00
"outputs": [
{
"data": {
"text/plain": [
"MiniBatchKMeans(n_clusters=5, random_state=42)"
]
},
"execution_count": 30,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from sklearn.cluster import MiniBatchKMeans\n",
"\n",
"minibatch_kmeans = MiniBatchKMeans(n_clusters=5, n_init=3, random_state=42)\n",
2019-01-15 05:36:29 +01:00
"minibatch_kmeans.fit(X)"
2016-09-27 23:31:21 +02:00
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Note: Throughout this notebook, when `n_init` was not set when creating a `MiniBatchKMeans` estimator, I explicitly set it to `n_init=3` to avoid a warning about the fact that the default value for this hyperparameter will change from 3 to `\"auto\"` in Scikit-Learn 1.4."
]
},
2016-09-27 23:31:21 +02:00
{
"cell_type": "code",
"execution_count": 31,
"metadata": {},
2022-02-19 10:24:54 +01:00
"outputs": [
{
"data": {
"text/plain": [
"211.65239850433204"
]
},
"execution_count": 31,
"metadata": {},
"output_type": "execute_result"
}
],
2016-09-27 23:31:21 +02:00
"source": [
2019-01-15 05:36:29 +01:00
"minibatch_kmeans.inertia_"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Using `MiniBatchKMeans` along with `memmap`** (not in the book)"
2016-09-27 23:31:21 +02:00
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"If the dataset does not fit in memory, the simplest option is to use the `memmap` class, just like we did for incremental PCA in the previous chapter. First let's load MNIST:"
]
},
2016-09-27 23:31:21 +02:00
{
"cell_type": "code",
"execution_count": 32,
2019-01-15 05:36:29 +01:00
"metadata": {},
"outputs": [],
"source": [
"from sklearn.datasets import fetch_openml\n",
"\n",
"mnist = fetch_openml('mnist_784', as_frame=False, parser=\"auto\")"
2016-09-27 23:31:21 +02:00
]
},
{
"cell_type": "markdown",
"metadata": {},
2016-09-27 23:31:21 +02:00
"source": [
"Let's split the dataset:"
2016-09-27 23:31:21 +02:00
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {},
2016-09-27 23:31:21 +02:00
"outputs": [],
"source": [
"X_train, y_train = mnist.data[:60000], mnist.target[:60000]\n",
"X_test, y_test = mnist.data[60000:], mnist.target[60000:]"
2019-01-15 05:36:29 +01:00
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Next, let's write the training set to a `memmap`:"
2016-09-27 23:31:21 +02:00
]
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {},
2016-09-27 23:31:21 +02:00
"outputs": [],
"source": [
"filename = \"my_mnist.mmap\"\n",
"X_memmap = np.memmap(filename, dtype='float32', mode='write',\n",
" shape=X_train.shape)\n",
"X_memmap[:] = X_train\n",
"X_memmap.flush()"
2016-09-27 23:31:21 +02:00
]
},
{
"cell_type": "code",
"execution_count": 35,
"metadata": {},
2022-02-19 10:24:54 +01:00
"outputs": [
{
"data": {
"text/plain": [
"MiniBatchKMeans(batch_size=10, n_clusters=10, random_state=42)"
]
},
"execution_count": 35,
"metadata": {},
"output_type": "execute_result"
}
],
2016-09-27 23:31:21 +02:00
"source": [
"from sklearn.cluster import MiniBatchKMeans\n",
2016-09-27 23:31:21 +02:00
"\n",
"minibatch_kmeans = MiniBatchKMeans(n_clusters=10, batch_size=10,\n",
" n_init=3, random_state=42)\n",
"minibatch_kmeans.fit(X_memmap)"
2016-09-27 23:31:21 +02:00
]
},
{
"cell_type": "markdown",
"metadata": {},
2016-09-27 23:31:21 +02:00
"source": [
"Let's plot the inertia ratio and the training time ratio between Mini-batch K-Means and regular K-Means:"
2016-09-27 23:31:21 +02:00
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {},
2022-02-19 10:24:54 +01:00
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"100/100"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 720x288 with 2 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
2016-09-27 23:31:21 +02:00
"source": [
"# extra code this cell generates and saves Figure 96\n",
"\n",
"from timeit import timeit\n",
"\n",
"max_k = 100\n",
"times = np.empty((max_k, 2))\n",
"inertias = np.empty((max_k, 2))\n",
"for k in range(1, max_k + 1):\n",
" kmeans_ = KMeans(n_clusters=k, algorithm=\"lloyd\", n_init=10, random_state=42)\n",
" minibatch_kmeans = MiniBatchKMeans(n_clusters=k, n_init=10, random_state=42)\n",
" print(f\"\\r{k}/{max_k}\", end=\"\") # \\r returns to the start of line\n",
" times[k - 1, 0] = timeit(\"kmeans_.fit(X)\", number=10, globals=globals())\n",
" times[k - 1, 1] = timeit(\"minibatch_kmeans.fit(X)\", number=10,\n",
" globals=globals())\n",
" inertias[k - 1, 0] = kmeans_.inertia_\n",
" inertias[k - 1, 1] = minibatch_kmeans.inertia_\n",
"\n",
"plt.figure(figsize=(10, 4))\n",
2019-01-15 05:36:29 +01:00
"\n",
"plt.subplot(121)\n",
"plt.plot(range(1, max_k + 1), inertias[:, 0], \"r--\", label=\"K-Means\")\n",
"plt.plot(range(1, max_k + 1), inertias[:, 1], \"b.-\", label=\"Mini-batch K-Means\")\n",
"plt.xlabel(\"$k$\")\n",
"plt.title(\"Inertia\")\n",
"plt.legend()\n",
"plt.axis([1, max_k, 0, 100])\n",
"plt.grid()\n",
2019-01-15 05:36:29 +01:00
"\n",
"plt.subplot(122)\n",
"plt.plot(range(1, max_k + 1), times[:, 0], \"r--\", label=\"K-Means\")\n",
"plt.plot(range(1, max_k + 1), times[:, 1], \"b.-\", label=\"Mini-batch K-Means\")\n",
"plt.xlabel(\"$k$\")\n",
"plt.title(\"Training time (seconds)\")\n",
"plt.axis([1, max_k, 0, 4])\n",
"plt.grid()\n",
"\n",
"save_fig(\"minibatch_kmeans_vs_kmeans_plot\")\n",
2016-09-27 23:31:21 +02:00
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
2016-09-27 23:31:21 +02:00
"source": [
2019-01-15 05:36:29 +01:00
"### Finding the optimal number of clusters"
2016-09-27 23:31:21 +02:00
]
},
{
2019-01-15 05:36:29 +01:00
"cell_type": "markdown",
"metadata": {},
2016-09-27 23:31:21 +02:00
"source": [
2019-01-15 05:36:29 +01:00
"What if the number of clusters was set to a lower or greater value than 5?"
2016-09-27 23:31:21 +02:00
]
},
{
"cell_type": "code",
"execution_count": 37,
"metadata": {},
2022-02-19 10:24:54 +01:00
"outputs": [
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 720x230.4 with 2 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
2016-09-27 23:31:21 +02:00
"source": [
"# extra code this cell generates and saves Figure 97\n",
"\n",
"kmeans_k3 = KMeans(n_clusters=3, n_init=10, random_state=42)\n",
"kmeans_k8 = KMeans(n_clusters=8, n_init=10, random_state=42)\n",
"\n",
2019-01-15 05:36:29 +01:00
"plot_clusterer_comparison(kmeans_k3, kmeans_k8, X, \"$k=3$\", \"$k=8$\")\n",
"save_fig(\"bad_n_clusters_plot\")\n",
2019-01-15 05:36:29 +01:00
"plt.show()"
2016-09-27 23:31:21 +02:00
]
},
{
2019-01-15 05:36:29 +01:00
"cell_type": "markdown",
"metadata": {},
2016-09-27 23:31:21 +02:00
"source": [
2019-01-15 05:36:29 +01:00
"Ouch, these two models don't look great. What about their inertias?"
2016-09-27 23:31:21 +02:00
]
},
{
"cell_type": "code",
"execution_count": 38,
"metadata": {},
2022-02-19 10:24:54 +01:00
"outputs": [
{
"data": {
"text/plain": [
"653.2167190021554"
]
},
"execution_count": 38,
"metadata": {},
"output_type": "execute_result"
}
],
2016-09-27 23:31:21 +02:00
"source": [
2019-01-15 05:36:29 +01:00
"kmeans_k3.inertia_"
2016-09-27 23:31:21 +02:00
]
},
{
"cell_type": "code",
"execution_count": 39,
"metadata": {},
2022-02-19 10:24:54 +01:00
"outputs": [
{
"data": {
"text/plain": [
"119.11983416102882"
]
},
"execution_count": 39,
"metadata": {},
"output_type": "execute_result"
}
],
2016-09-27 23:31:21 +02:00
"source": [
2019-01-15 05:36:29 +01:00
"kmeans_k8.inertia_"
2016-09-27 23:31:21 +02:00
]
},
{
2019-01-15 05:36:29 +01:00
"cell_type": "markdown",
"metadata": {},
"source": [
2019-01-15 05:36:29 +01:00
"No, we cannot simply take the value of $k$ that minimizes the inertia, since it keeps getting lower as we increase $k$. Indeed, the more clusters there are, the closer each instance will be to its closest centroid, and therefore the lower the inertia will be. However, we can plot the inertia as a function of $k$ and analyze the resulting curve:"
]
},
{
2019-01-15 05:36:29 +01:00
"cell_type": "code",
"execution_count": 40,
"metadata": {},
2022-02-19 10:24:54 +01:00
"outputs": [
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 576x252 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# extra code this cell generates and saves Figure 98\n",
"\n",
"kmeans_per_k = [KMeans(n_clusters=k, n_init=10, random_state=42).fit(X)\n",
2019-01-15 05:36:29 +01:00
" for k in range(1, 10)]\n",
"inertias = [model.inertia_ for model in kmeans_per_k]\n",
"\n",
2019-01-15 05:36:29 +01:00
"plt.figure(figsize=(8, 3.5))\n",
"plt.plot(range(1, 10), inertias, \"bo-\")\n",
"plt.xlabel(\"$k$\")\n",
"plt.ylabel(\"Inertia\")\n",
"plt.annotate(\"\", xy=(4, inertias[3]), xytext=(4.45, 650),\n",
" arrowprops=dict(facecolor='black', shrink=0.1))\n",
"plt.text(4.5, 650, \"Elbow\", horizontalalignment=\"center\")\n",
2019-01-15 05:36:29 +01:00
"plt.axis([1, 8.5, 0, 1300])\n",
"plt.grid()\n",
"save_fig(\"inertia_vs_k_plot\")\n",
2019-01-15 05:36:29 +01:00
"plt.show()"
]
},
{
2019-01-15 05:36:29 +01:00
"cell_type": "markdown",
"metadata": {},
"source": [
2019-01-15 05:36:29 +01:00
"As you can see, there is an elbow at $k=4$, which means that less clusters than that would be bad, and more clusters would not help much and might cut clusters in half. So $k=4$ is a pretty good choice. Of course in this example it is not perfect since it means that the two blobs in the lower left will be considered as just a single cluster, but it's a pretty good clustering nonetheless."
]
},
{
"cell_type": "code",
"execution_count": 41,
"metadata": {},
2022-02-19 10:24:54 +01:00
"outputs": [
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# extra code\n",
"plot_decision_boundaries(kmeans_per_k[4 - 1], X)\n",
2019-01-15 05:36:29 +01:00
"plt.show()"
]
},
{
2019-01-15 05:36:29 +01:00
"cell_type": "markdown",
"metadata": {},
"source": [
"Another approach is to look at the _silhouette score_, which is the mean _silhouette coefficient_ over all the instances. An instance's silhouette coefficient is equal to (_b_ - _a_) / max(_a_, _b_) where _a_ is the mean distance to the other instances in the same cluster (it is the _mean intra-cluster distance_), and _b_ is the _mean nearest-cluster distance_, that is the mean distance to the instances of the next closest cluster (defined as the one that minimizes _b_, excluding the instance's own cluster). The silhouette coefficient can vary between -1 and +1: a coefficient close to +1 means that the instance is well inside its own cluster and far from other clusters, while a coefficient close to 0 means that it is close to a cluster boundary, and finally a coefficient close to -1 means that the instance may have been assigned to the wrong cluster."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
2019-01-15 05:36:29 +01:00
"Let's plot the silhouette score as a function of $k$:"
]
},
{
"cell_type": "code",
"execution_count": 42,
"metadata": {},
"outputs": [],
"source": [
2019-01-15 05:36:29 +01:00
"from sklearn.metrics import silhouette_score"
]
},
{
"cell_type": "code",
"execution_count": 43,
"metadata": {},
2022-02-19 10:24:54 +01:00
"outputs": [
{
"data": {
"text/plain": [
"0.655517642572828"
]
},
"execution_count": 43,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
2019-01-15 05:36:29 +01:00
"silhouette_score(X, kmeans.labels_)"
]
},
{
"cell_type": "code",
"execution_count": 44,
"metadata": {},
2022-02-19 10:24:54 +01:00
"outputs": [
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 576x216 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# extra code this cell generates and saves Figure 99\n",
"\n",
2019-01-15 05:36:29 +01:00
"silhouette_scores = [silhouette_score(X, model.labels_)\n",
" for model in kmeans_per_k[1:]]\n",
"\n",
2019-01-15 05:36:29 +01:00
"plt.figure(figsize=(8, 3))\n",
"plt.plot(range(2, 10), silhouette_scores, \"bo-\")\n",
"plt.xlabel(\"$k$\")\n",
"plt.ylabel(\"Silhouette score\")\n",
2019-01-15 05:36:29 +01:00
"plt.axis([1.8, 8.5, 0.55, 0.7])\n",
"plt.grid()\n",
"save_fig(\"silhouette_score_vs_k_plot\")\n",
2019-01-15 05:36:29 +01:00
"plt.show()"
]
},
{
2019-01-15 05:36:29 +01:00
"cell_type": "markdown",
"metadata": {},
"source": [
2019-01-15 05:36:29 +01:00
"As you can see, this visualization is much richer than the previous one: in particular, although it confirms that $k=4$ is a very good choice, but it also underlines the fact that $k=5$ is quite good as well."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
2019-01-15 05:36:29 +01:00
"An even more informative visualization is given when you plot every instance's silhouette coefficient, sorted by the cluster they are assigned to and by the value of the coefficient. This is called a _silhouette diagram_:"
]
},
{
"cell_type": "code",
"execution_count": 45,
2019-01-15 05:36:29 +01:00
"metadata": {},
2022-02-19 10:24:54 +01:00
"outputs": [
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 792x648 with 4 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
2019-01-15 05:36:29 +01:00
"source": [
"# extra code this cell generates and saves Figure 910\n",
"\n",
2019-01-15 05:36:29 +01:00
"from sklearn.metrics import silhouette_samples\n",
"from matplotlib.ticker import FixedLocator, FixedFormatter\n",
"\n",
"plt.figure(figsize=(11, 9))\n",
"\n",
"for k in (3, 4, 5, 6):\n",
" plt.subplot(2, 2, k - 2)\n",
" \n",
" y_pred = kmeans_per_k[k - 1].labels_\n",
" silhouette_coefficients = silhouette_samples(X, y_pred)\n",
"\n",
" padding = len(X) // 30\n",
" pos = padding\n",
" ticks = []\n",
" for i in range(k):\n",
" coeffs = silhouette_coefficients[y_pred == i]\n",
" coeffs.sort()\n",
"\n",
" color = plt.cm.Spectral(i / k)\n",
2019-01-15 05:36:29 +01:00
" plt.fill_betweenx(np.arange(pos, pos + len(coeffs)), 0, coeffs,\n",
" facecolor=color, edgecolor=color, alpha=0.7)\n",
" ticks.append(pos + len(coeffs) // 2)\n",
" pos += len(coeffs) + padding\n",
"\n",
" plt.gca().yaxis.set_major_locator(FixedLocator(ticks))\n",
" plt.gca().yaxis.set_major_formatter(FixedFormatter(range(k)))\n",
" if k in (3, 5):\n",
" plt.ylabel(\"Cluster\")\n",
" \n",
" if k in (5, 6):\n",
" plt.gca().set_xticks([-0.1, 0, 0.2, 0.4, 0.6, 0.8, 1])\n",
" plt.xlabel(\"Silhouette Coefficient\")\n",
" else:\n",
" plt.tick_params(labelbottom=False)\n",
"\n",
" plt.axvline(x=silhouette_scores[k - 2], color=\"red\", linestyle=\"--\")\n",
" plt.title(f\"$k={k}$\")\n",
2019-01-15 05:36:29 +01:00
"\n",
"save_fig(\"silhouette_analysis_plot\")\n",
2019-01-15 05:36:29 +01:00
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"As you can see, $k=5$ looks like the best option here, as all clusters are roughly the same size, and they all cross the dashed line, which represents the mean silhouette score."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Limits of K-Means"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's generate a more difficult dataset, with elongated blobs and varying densities, and show that K-Means struggles to cluster it correctly:"
]
},
{
"cell_type": "code",
"execution_count": 46,
"metadata": {},
2022-02-19 10:24:54 +01:00
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAsAAAADWCAYAAADfPzRAAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAAsTAAALEwEAmpwYAACdiUlEQVR4nO2dd3gUVduH7wESUsAUeg1FQVDpBjAUASkiIIoQQEAQAviqENBXpSggKp8FCNhoigSUpqBBkc4LJAIrXQlFI8QgSEtRyIYEmO+PzQyzk9mWbLIp5/byCtmdnTmzmXnmd57zFEmWZQQCgUAgEAgEgpJCKU8PQCAQCAQCgUAgKEiEABYIBAKBQCAQlCiEABYIBAKBQCAQlCiEABYIBAKBQCAQlCiEABYIBAKBQCAQlCiEABYIBAKBQCAQlCiEABYUeSRJ+p8kSR95ehwCgUBQFBE2VFASEQJYkCckSfpCkqTvC+hYwyVJumbw1pPApIIYgy0kSXpSkqQtkiRdliTpX0mS9kuS1Ee3TYQkSXskSUqWJClVkqSdkiS1s7PPyZIkydoHkyRJXpIkvStJ0jFJkq5LknRBkqSvJEmq7cQYvSVJelOSpDOSJN2QJOlPSZLG5e3MBQJBXhA21IKTNvQ+SZK+liTpj2zbON1gP2ez39P//4NmmyrZ3/t5SZLSJUnaJEnSPQ7G97CN/d7rti9BUKAIASwoEkiS5GXrPVmWk2VZ/rcgx2NAR2AH8BjQHNgIrJckqb1mm4eB1UAXoDVwCthsZHglSWoDRADHdG/5AS2At7N/Pg7UAjZJklTGwRhXAj2A0UBDoL/B/gUCQTGkmNhQP+AsMBU4Y2M/DwLVNP+3AGRgDYAkSRLwLXAP0Df7WInANkmS/J0Y5326/f/m3OkJCh2yLIv/xf+5/h/4Avhe/zswHvgLSAGWAn6abSTgFSABMAO/AEM079fBYrAGYTGIZuCF7Ne0/0/P3v5/wEeazw8Bfgb+BS4Ba4EaHvhuTMBsO+9LwN/Ai7rXA7K/m876c7Oxn8bZ38cDdrbpBqQBFT19zYj/xf/i/zv/Cxtq97uxaUOBX5XxO9jHFCBV+f6ABtnn3lSzTans8xxlZz8PZ39O2NBi8r/wAAvyg/bA/cAjQDjwBBZjrvAWMBJ4Hot4mwUslCTpMd1+ZgGfZG8TA0QC6dyZeX9g4/jewDSgKdALqIjF+2mT7HCDaw7+b29vHwaUx/LwsoU34GOwzSLga1mWdzh5nLuyf9o7Vl8sD7SJkiSdkyTpN0mS5kuSVM7JYwgEgoJD2FALjmyoXbK9vSOBFbIsp2e/XDb7Z4aynSzLt4EbgM2QNA0HskPPtkuS1Cm3YxN4HkdLpgJBbvgHeE6W5ZvACUmS1mJZ9p+VvcQ0Eegmy/Ke7O3PSJIUisWY/6DZz4eyLH+t/CJJUhogy7L8t72Dy7L8uebXPyRJei57HDVlWT5n42MLyF4is8NfDt5XkSTpeaAmsNzOZm8B17A8mJTPRQB3A0OdPI43MBvYYOfcAOphMe43gH5AIPAhUB14ypljCQSCAkPYUOdsqCO6AnWBJZrXTmIJeXgn295eAyZkH6uanX1dAJ7D4kjwxmKjt0uS9LAsy7vzMEaBhxACWJAfxGcbboXzWGJeweKJ8MESsyprtvHCEtul5UBuDi5JUgss3otmQDCW5UKA2oCh8ZZlORlIzs3xDI7fD3gfGCjLcqKNbcYDY4BHZFn+J/u1hsA7QHtZljOdOE4ZYAUWMdvH/taUwrJ8N1iW5bTsz7+AJQa5iizLF505N4FAUCAIG+rAhjpJBPCzLMtHlBdkWc7K3v9nwFXgFrAN+NHejmRZPoUlb0NhryRJdYCXASGAiyBCAAvygyzd7zJ3Ei6Vn72BPx187rqrB872jmzGYtCGYonrqgjswTJrt/W5ycBkB7t/VONxsbWfflg8FsNkWY6xsc14LN7fR2VZNmneaps91l8tK3cAlAY6SJI0FvCXZflG9j7KYFmSfAB4WJblqw7GfgH4SxG/2ZzI/lkbEAJYICg8CBtqx4Y6gyRJlbEkCT+vf0+W5YNAM0mSAgBvWZYvS5K0H9cnDPuBgbkdo8CzCAEsKGjisSzDh7gQ46qQiUUQ2uNeLMZ6sizLZ8BSXseJfed5+U6SpAHAMuAZ7bKjbpuJwJtAT1mWY3Vvf0tOA7wUS5bxO1jOX8nmXoUlRvBhR8uZ2cQB/SVJKifLslIGqUH2z7x4WAQCQcFSom2oCwzH8j2tsrWBZjXsHqAV8LqLx2iGxbkgKIIIASwoUGRZ/leSpA+AD7ITFHYD5YA2wG1ZlhfZ+fhZwEeSpK7AYSBdk9ig8CcWo/eCJEkfA42AmU6MK0/Ld5IkDcTitXgZ2C1JUtXstzKz940kSf/FUr5sCHBas41ZluU0WZZTsWQra/d7HUiWZfnX7N/LYMnIfhCLB0jW7CdNlmVz9nbR2ec1LPu9r7AY96XZtTMDgXlYku0u5fa8BQJBwVLCbag3lhAQsISBVJUkqRlwTZbl3zX7koBRwCrZoLybJEn9gStYJv8PYLGF38qyvEWzjZUNlSQpEsv3dxyLJ3wIluTifrk9Z4FnEVUgBJ7gdWA6FkN3HNiKxYjYqusIgCzLP2HxMqwELmMpA6Tf5jLwDBbDFI8ljm2i20Zum7FYJpRRWDwCyv/rNNs8jyVOb7Vum3kuHKcmlmW96sBB3X7CNdvVzv4fgGyv7yNYSqz9jMVTswt41oVjCwSCwkFJtaHVsQj3w0B9LHkUh7FOcgNLybJ7gMU2jlUNiMaSEDcfi/AepNvGyoZiEb0fYKmdvgdLUvFjsiyvQ1AkkWRZdryVQCAQCAQCgUBQTBAeYIFAIBAIBAJBiUIIYIFAIBAIBAJBiUIIYIFAIBAIBAJBiUIIYIFAIBAIBAJBiUIIYIFAIBAIBAJBiaJI1AEOCA6UK9es7ulhCDzIrVu3+Cc5lbuCAyld2lEdd/ucS0gkIz2dWrVqUa5cOTeNUCBwPydOnLgiy3KlvO4nMDBQrl5d2NCSzK1bt0hNTSUwMO82tLBw48YN/vjjD7x9ylL7nnqeHo6gEPL7L7ZtaJEQwJVrVmfuDys8PQyBB1m3IJql78yjz7ODeHLsMMcfsMNLvYdx+uhx1q9f76bRCQT5Q6tWrdzSpa969eosX77cHbsSFFGio6OZP38+AwcOZNiwvNnQwkL37t0BmPX1Eho0aexga0FJpHftljZtaJEQwAJBlwG9rX7mhev/5GgMJBAIBMWaPn36WP0sDly9ehVAiF9BrhAxwIIiQUBwEE+OHUZAcFCe9/XXmT/dMCKBLVJTU4mOjiY1NdXTQxEIBNkEBgYybNgwAgMDPT0Ut2A2mwEo6+/j4ZG4n7TkFNYtiCYtOcXTQynWCAEsEAjcSkxMDPPnzycmJsbTQxEIBMWUqVOnAjD8lfEeHon72b5mA0vfmcf2NRs8PZRijQiBEAgEbqU4LrUKBILCxe7duwHoNWKAh0fiftwZ8iewjRDAghJJqVJi8SO/UJZaBQKBID+QZRlZlj09jHxDCfkT5C9CBQhKJLVr1/b0EAQCgUCQC3744QcA7mlxv4dHIijKCAEsEAgEAoGgyDBr1izLz1ULPTwSQVFGCGBBiWLV/CUA3HPPPR4eiUAgEAhyw40bNwAo61P8KkAICg4hgAUlij9+PQnAzJkzPTwSgUAgELjKP//8A4Cv6OIpyCNCAAuKFKI+okAgEOSNolyre8SIEQC8uuBdD49EUNQRAlhQpMhrfcSD2/cAIEmSO4clEAgERYaiXKs7MdHS2bZlhzYeHomgqCPKoAmKFHmtj5iZdROA0qVLu21MAoFAUJQo6rW6SwkHhsANCAEsKFKI+ogCgUCQN4pqre5FixYB0Lm/aBAhyDsiBEIgcIKiHDMnEAgEnsYdNvSLL74A4PlZk90zKEGJxmMCWJKk0pIkHZYk6XtPjUFQMrnrrrtc/kxRjpkTCAQCT+MOG5qZmQlAGS8vdw1LUILxZAjEeOAE4LoaEQjygFcujGdRj5kTCAQCT5JXG3rgwAEAqtau4bYxCUo2HvEAS5J
"text/plain": [
"<Figure size 720x230.4 with 2 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# extra code this cell generates and saves Figure 911\n",
"\n",
"X1, y1 = make_blobs(n_samples=1000, centers=((4, -4), (0, 0)), random_state=42)\n",
"X1 = X1.dot(np.array([[0.374, 0.95], [0.732, 0.598]]))\n",
"X2, y2 = make_blobs(n_samples=250, centers=1, random_state=42)\n",
"X2 = X2 + [6, -8]\n",
"X = np.r_[X1, X2]\n",
"y = np.r_[y1, y2]\n",
"\n",
"kmeans_good = KMeans(n_clusters=3,\n",
" init=np.array([[-1.5, 2.5], [0.5, 0], [4, 0]]),\n",
" n_init=1, random_state=42)\n",
"kmeans_bad = KMeans(n_clusters=3, n_init=10, random_state=42)\n",
2019-01-15 05:36:29 +01:00
"kmeans_good.fit(X)\n",
"kmeans_bad.fit(X)\n",
"\n",
2019-01-15 05:36:29 +01:00
"plt.figure(figsize=(10, 3.2))\n",
"\n",
"plt.subplot(121)\n",
"plot_decision_boundaries(kmeans_good, X)\n",
"plt.title(f\"Inertia = {kmeans_good.inertia_:.1f}\")\n",
2019-01-15 05:36:29 +01:00
"\n",
"plt.subplot(122)\n",
"plot_decision_boundaries(kmeans_bad, X, show_ylabels=False)\n",
"plt.title(f\"Inertia = {kmeans_bad.inertia_:.1f}\")\n",
2019-01-15 05:36:29 +01:00
"\n",
"save_fig(\"bad_kmeans_plot\")\n",
2019-01-15 05:36:29 +01:00
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Using Clustering for Image Segmentation"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Download the ladybug image:"
]
},
{
"cell_type": "code",
"execution_count": 47,
"metadata": {},
"outputs": [],
"source": [
"# extra code downloads the ladybug image\n",
"\n",
"import urllib.request\n",
"\n",
"homl3_root = \"https://github.com/ageron/handson-ml3/raw/main/\"\n",
"filename = \"ladybug.png\"\n",
"filepath = IMAGES_PATH / filename\n",
"if not filepath.is_file():\n",
" print(\"Downloading\", filename)\n",
" url = f\"{homl3_root}/images/unsupervised_learning/{filename}\"\n",
" urllib.request.urlretrieve(url, filepath)"
]
},
{
"cell_type": "code",
"execution_count": 48,
"metadata": {},
2022-02-19 10:24:54 +01:00
"outputs": [
{
"data": {
"text/plain": [
"(533, 800, 3)"
]
},
"execution_count": 48,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import PIL\n",
"\n",
"image = np.asarray(PIL.Image.open(filepath))\n",
2019-01-15 05:36:29 +01:00
"image.shape"
]
},
{
"cell_type": "code",
"execution_count": 49,
"metadata": {},
"outputs": [],
"source": [
2019-01-15 05:36:29 +01:00
"X = image.reshape(-1, 3)\n",
"kmeans = KMeans(n_clusters=8, n_init=10, random_state=42).fit(X)\n",
2019-01-15 05:36:29 +01:00
"segmented_img = kmeans.cluster_centers_[kmeans.labels_]\n",
"segmented_img = segmented_img.reshape(image.shape)"
]
},
{
"cell_type": "code",
"execution_count": 50,
"metadata": {},
2022-02-19 10:24:54 +01:00
"outputs": [
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 720x360 with 6 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# extra code this cell generates and saves Figure 912\n",
"\n",
"segmented_imgs = []\n",
"n_colors = (10, 8, 6, 4, 2)\n",
"for n_clusters in n_colors:\n",
" kmeans = KMeans(n_clusters=n_clusters, n_init=10, random_state=42).fit(X)\n",
" segmented_img = kmeans.cluster_centers_[kmeans.labels_]\n",
" segmented_imgs.append(segmented_img.reshape(image.shape))\n",
"\n",
"plt.figure(figsize=(10, 5))\n",
"plt.subplots_adjust(wspace=0.05, hspace=0.1)\n",
"\n",
"plt.subplot(2, 3, 1)\n",
"plt.imshow(image)\n",
"plt.title(\"Original image\")\n",
"plt.axis('off')\n",
"\n",
"for idx, n_clusters in enumerate(n_colors):\n",
" plt.subplot(2, 3, 2 + idx)\n",
" plt.imshow(segmented_imgs[idx] / 255)\n",
" plt.title(f\"{n_clusters} colors\")\n",
" plt.axis('off')\n",
"\n",
"save_fig('image_segmentation_plot', tight_layout=False)\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Using Clustering for Semi-Supervised Learning"
]
},
{
"cell_type": "markdown",
2020-04-06 09:13:12 +02:00
"metadata": {},
"source": [
"Another use case for clustering is semi-supervised learning, when we have plenty of unlabeled instances and very few labeled instances."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's tackle the _digits dataset_ which is a simple MNIST-like dataset containing 1,797 grayscale 8×8 images representing digits 0 to 9."
]
},
{
"cell_type": "code",
"execution_count": 51,
"metadata": {},
"outputs": [],
"source": [
"from sklearn.datasets import load_digits\n",
"\n",
"X_digits, y_digits = load_digits(return_X_y=True)\n",
"X_train, y_train = X_digits[:1400], y_digits[:1400]\n",
"X_test, y_test = X_digits[1400:], y_digits[1400:]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
2019-01-15 05:36:29 +01:00
"Let's look at the performance of a logistic regression model when we only have 50 labeled instances:"
]
},
{
2019-01-15 05:36:29 +01:00
"cell_type": "code",
"execution_count": 52,
"metadata": {},
2022-02-19 10:24:54 +01:00
"outputs": [
{
"data": {
"text/plain": [
"LogisticRegression(max_iter=10000)"
]
},
"execution_count": 52,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from sklearn.linear_model import LogisticRegression\n",
"\n",
"n_labeled = 50\n",
"log_reg = LogisticRegression(max_iter=10_000)\n",
"log_reg.fit(X_train[:n_labeled], y_train[:n_labeled])"
]
},
{
"cell_type": "code",
"execution_count": 53,
"metadata": {},
2022-02-19 10:24:54 +01:00
"outputs": [
{
"data": {
"text/plain": [
"0.7481108312342569"
]
},
"execution_count": 53,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
2019-01-15 05:36:29 +01:00
"log_reg.score(X_test, y_test)"
]
},
{
"cell_type": "code",
"execution_count": 54,
"metadata": {},
2022-02-19 10:24:54 +01:00
"outputs": [
{
"data": {
"text/plain": [
"0.906801007556675"
]
},
"execution_count": 54,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# extra code measure the accuracy when we use the whole training set\n",
"log_reg_full = LogisticRegression(max_iter=10_000)\n",
"log_reg_full.fit(X_train, y_train)\n",
"log_reg_full.score(X_test, y_test)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"It's much less than earlier of course. Let's see how we can do better. First, let's cluster the training set into 50 clusters, then for each cluster let's find the image closest to the centroid. We will call these images the representative images:"
]
},
{
2019-01-15 05:36:29 +01:00
"cell_type": "code",
"execution_count": 55,
"metadata": {},
2019-01-15 05:36:29 +01:00
"outputs": [],
"source": [
"k = 50\n",
"kmeans = KMeans(n_clusters=k, n_init=10, random_state=42)\n",
2019-01-15 05:36:29 +01:00
"X_digits_dist = kmeans.fit_transform(X_train)\n",
"representative_digit_idx = X_digits_dist.argmin(axis=0)\n",
2019-01-15 05:36:29 +01:00
"X_representative_digits = X_train[representative_digit_idx]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
2019-01-15 05:36:29 +01:00
"Now let's plot these representative images and label them manually:"
]
},
{
"cell_type": "code",
"execution_count": 56,
"metadata": {},
2022-02-19 10:24:54 +01:00
"outputs": [
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 576x144 with 50 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# extra code this cell generates and saves Figure 913\n",
"\n",
2019-01-15 05:36:29 +01:00
"plt.figure(figsize=(8, 2))\n",
"for index, X_representative_digit in enumerate(X_representative_digits):\n",
" plt.subplot(k // 10, 10, index + 1)\n",
" plt.imshow(X_representative_digit.reshape(8, 8), cmap=\"binary\",\n",
" interpolation=\"bilinear\")\n",
2019-01-15 05:36:29 +01:00
" plt.axis('off')\n",
"\n",
"save_fig(\"representative_images_plot\", tight_layout=False)\n",
2019-01-15 05:36:29 +01:00
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 57,
"metadata": {},
"outputs": [],
"source": [
2019-01-15 05:36:29 +01:00
"y_representative_digits = np.array([\n",
" 1, 3, 6, 0, 7, 9, 2, 4, 8, 9,\n",
" 5, 4, 7, 1, 2, 6, 1, 2, 5, 1,\n",
" 4, 1, 3, 3, 8, 8, 2, 5, 6, 9,\n",
" 1, 4, 0, 6, 8, 3, 4, 6, 7, 2,\n",
" 4, 1, 0, 7, 5, 1, 9, 9, 3, 7\n",
"])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
2019-01-15 05:36:29 +01:00
"Now we have a dataset with just 50 labeled instances, but instead of being completely random instances, each of them is a representative image of its cluster. Let's see if the performance is any better:"
]
},
{
2019-01-15 05:36:29 +01:00
"cell_type": "code",
"execution_count": 58,
"metadata": {},
2022-02-19 10:24:54 +01:00
"outputs": [
{
"data": {
"text/plain": [
"0.8488664987405542"
]
},
"execution_count": 58,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"log_reg = LogisticRegression(max_iter=10_000)\n",
2019-01-15 05:36:29 +01:00
"log_reg.fit(X_representative_digits, y_representative_digits)\n",
"log_reg.score(X_test, y_test)"
]
},
{
2019-01-15 05:36:29 +01:00
"cell_type": "markdown",
"metadata": {},
"source": [
"Wow! We jumped from 74.8% accuracy to 84.9%, although we are still only training the model on 50 instances. Since it's often costly and painful to label instances, especially when it has to be done manually by experts, it's a good idea to make them label representative instances rather than just random instances."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
2019-01-15 05:36:29 +01:00
"But perhaps we can go one step further: what if we propagated the labels to all the other instances in the same cluster?"
]
},
{
"cell_type": "code",
"execution_count": 59,
"metadata": {},
"outputs": [],
"source": [
"y_train_propagated = np.empty(len(X_train), dtype=np.int64)\n",
2019-01-15 05:36:29 +01:00
"for i in range(k):\n",
" y_train_propagated[kmeans.labels_ == i] = y_representative_digits[i]"
]
},
{
2019-01-15 05:36:29 +01:00
"cell_type": "code",
"execution_count": 60,
"metadata": {},
2022-02-19 10:24:54 +01:00
"outputs": [
{
"data": {
"text/plain": [
"LogisticRegression(max_iter=10000)"
]
},
"execution_count": 60,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"log_reg = LogisticRegression(max_iter=10_000)\n",
2019-01-15 05:36:29 +01:00
"log_reg.fit(X_train, y_train_propagated)"
]
},
{
"cell_type": "code",
"execution_count": 61,
"metadata": {},
2022-02-19 10:24:54 +01:00
"outputs": [
{
"data": {
"text/plain": [
"0.8942065491183879"
]
},
"execution_count": 61,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
2019-01-15 05:36:29 +01:00
"log_reg.score(X_test, y_test)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We got another significant accuracy boost! Let's see if we can do even better by ignoring the 1% instances that are farthest from their cluster center: this should eliminate some outliers:"
]
},
{
2019-01-15 05:36:29 +01:00
"cell_type": "code",
"execution_count": 62,
"metadata": {},
2019-01-15 05:36:29 +01:00
"outputs": [],
"source": [
"percentile_closest = 99\n",
2019-01-15 05:36:29 +01:00
"\n",
"X_cluster_dist = X_digits_dist[np.arange(len(X_train)), kmeans.labels_]\n",
"for i in range(k):\n",
" in_cluster = (kmeans.labels_ == i)\n",
" cluster_dist = X_cluster_dist[in_cluster]\n",
" cutoff_distance = np.percentile(cluster_dist, percentile_closest)\n",
" above_cutoff = (X_cluster_dist > cutoff_distance)\n",
" X_cluster_dist[in_cluster & above_cutoff] = -1\n",
"\n",
2019-01-15 05:36:29 +01:00
"partially_propagated = (X_cluster_dist != -1)\n",
"X_train_partially_propagated = X_train[partially_propagated]\n",
"y_train_partially_propagated = y_train_propagated[partially_propagated]"
]
},
{
"cell_type": "code",
"execution_count": 63,
"metadata": {},
2022-02-19 10:24:54 +01:00
"outputs": [
{
"data": {
"text/plain": [
"0.9093198992443325"
]
},
"execution_count": 63,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"log_reg = LogisticRegression(max_iter=10_000)\n",
"log_reg.fit(X_train_partially_propagated, y_train_partially_propagated)\n",
2019-01-15 05:36:29 +01:00
"log_reg.score(X_test, y_test)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Wow, another accuracy boost! We have even slightly surpassed the performance we got by training on the fully labeled training set!"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Our propagated labels are actually pretty good: their accuracy is about 97.6%:"
]
},
{
"cell_type": "code",
"execution_count": 64,
"metadata": {},
2022-02-19 10:24:54 +01:00
"outputs": [
{
"data": {
"text/plain": [
"0.9755555555555555"
]
},
"execution_count": 64,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(y_train_partially_propagated == y_train[partially_propagated]).mean()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"You could now do a few iterations of *active learning*:\n",
2019-01-15 05:36:29 +01:00
"1. Manually label the instances that the classifier is least sure about, if possible by picking them in distinct clusters.\n",
"2. Train a new model with these additional labels."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
2019-01-15 05:36:29 +01:00
"## DBSCAN"
]
},
{
2019-01-15 05:36:29 +01:00
"cell_type": "code",
"execution_count": 65,
"metadata": {},
2022-02-19 10:24:54 +01:00
"outputs": [
{
"data": {
"text/plain": [
"DBSCAN(eps=0.05)"
]
},
"execution_count": 65,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from sklearn.cluster import DBSCAN\n",
"from sklearn.datasets import make_moons\n",
"\n",
"X, y = make_moons(n_samples=1000, noise=0.05, random_state=42)\n",
2019-01-15 05:36:29 +01:00
"dbscan = DBSCAN(eps=0.05, min_samples=5)\n",
"dbscan.fit(X)"
]
},
{
"cell_type": "code",
"execution_count": 66,
"metadata": {},
2022-02-19 10:24:54 +01:00
"outputs": [
{
"data": {
"text/plain": [
"array([ 0, 2, -1, -1, 1, 0, 0, 0, 2, 5])"
]
},
"execution_count": 66,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
2019-01-15 05:36:29 +01:00
"dbscan.labels_[:10]"
]
},
{
"cell_type": "code",
"execution_count": 67,
"metadata": {},
2022-02-19 10:24:54 +01:00
"outputs": [
{
"data": {
"text/plain": [
"array([ 0, 4, 5, 6, 7, 8, 10, 11, 12, 13])"
]
},
"execution_count": 67,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
2019-01-15 05:36:29 +01:00
"dbscan.core_sample_indices_[:10]"
]
},
{
2019-01-15 05:36:29 +01:00
"cell_type": "code",
"execution_count": 68,
"metadata": {},
2022-02-19 10:24:54 +01:00
"outputs": [
{
"data": {
"text/plain": [
"array([[-0.02137124, 0.40618608],\n",
" [-0.84192557, 0.53058695],\n",
" [ 0.58930337, -0.32137599],\n",
" ...,\n",
" [ 1.66258462, -0.3079193 ],\n",
" [-0.94355873, 0.3278936 ],\n",
" [ 0.79419406, 0.60777171]])"
]
},
"execution_count": 68,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"dbscan.components_"
]
},
{
"cell_type": "code",
"execution_count": 69,
"metadata": {},
2022-02-19 10:24:54 +01:00
"outputs": [
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 648x230.4 with 2 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# extra code this cell generates and saves Figure 914\n",
"\n",
2019-01-15 05:36:29 +01:00
"def plot_dbscan(dbscan, X, size, show_xlabels=True, show_ylabels=True):\n",
" core_mask = np.zeros_like(dbscan.labels_, dtype=bool)\n",
" core_mask[dbscan.core_sample_indices_] = True\n",
" anomalies_mask = dbscan.labels_ == -1\n",
" non_core_mask = ~(core_mask | anomalies_mask)\n",
"\n",
" cores = dbscan.components_\n",
" anomalies = X[anomalies_mask]\n",
" non_cores = X[non_core_mask]\n",
" \n",
" plt.scatter(cores[:, 0], cores[:, 1],\n",
" c=dbscan.labels_[core_mask], marker='o', s=size, cmap=\"Paired\")\n",
" plt.scatter(cores[:, 0], cores[:, 1], marker='*', s=20,\n",
" c=dbscan.labels_[core_mask])\n",
2019-01-15 05:36:29 +01:00
" plt.scatter(anomalies[:, 0], anomalies[:, 1],\n",
" c=\"r\", marker=\"x\", s=100)\n",
" plt.scatter(non_cores[:, 0], non_cores[:, 1],\n",
" c=dbscan.labels_[non_core_mask], marker=\".\")\n",
2019-01-15 05:36:29 +01:00
" if show_xlabels:\n",
" plt.xlabel(\"$x_1$\")\n",
2019-01-15 05:36:29 +01:00
" else:\n",
" plt.tick_params(labelbottom=False)\n",
" if show_ylabels:\n",
" plt.ylabel(\"$x_2$\", rotation=0)\n",
2019-01-15 05:36:29 +01:00
" else:\n",
" plt.tick_params(labelleft=False)\n",
" plt.title(f\"eps={dbscan.eps:.2f}, min_samples={dbscan.min_samples}\")\n",
" plt.grid()\n",
" plt.gca().set_axisbelow(True)\n",
"\n",
"dbscan2 = DBSCAN(eps=0.2)\n",
"dbscan2.fit(X)\n",
"\n",
2019-01-15 05:36:29 +01:00
"plt.figure(figsize=(9, 3.2))\n",
"\n",
"plt.subplot(121)\n",
"plot_dbscan(dbscan, X, size=100)\n",
"\n",
"plt.subplot(122)\n",
"plot_dbscan(dbscan2, X, size=600, show_ylabels=False)\n",
"\n",
"save_fig(\"dbscan_plot\")\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 70,
2019-01-15 05:36:29 +01:00
"metadata": {},
"outputs": [],
"source": [
"dbscan = dbscan2 # extra code the text says we now use eps=0.2"
]
},
{
2019-01-15 05:36:29 +01:00
"cell_type": "code",
"execution_count": 71,
"metadata": {},
2022-02-19 10:24:54 +01:00
"outputs": [
{
"data": {
"text/plain": [
"KNeighborsClassifier(n_neighbors=50)"
]
},
"execution_count": 71,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from sklearn.neighbors import KNeighborsClassifier\n",
"\n",
2019-01-15 05:36:29 +01:00
"knn = KNeighborsClassifier(n_neighbors=50)\n",
"knn.fit(dbscan.components_, dbscan.labels_[dbscan.core_sample_indices_])"
]
},
{
"cell_type": "code",
"execution_count": 72,
"metadata": {},
2022-02-19 10:24:54 +01:00
"outputs": [
{
"data": {
"text/plain": [
"array([1, 0, 1, 0])"
]
},
"execution_count": 72,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
2019-01-15 05:36:29 +01:00
"X_new = np.array([[-0.5, 0], [0, 0.5], [1, -0.1], [2, 1]])\n",
"knn.predict(X_new)"
]
},
{
2019-01-15 05:36:29 +01:00
"cell_type": "code",
"execution_count": 73,
"metadata": {},
2022-02-19 10:24:54 +01:00
"outputs": [
{
"data": {
"text/plain": [
"array([[0.18, 0.82],\n",
" [1. , 0. ],\n",
" [0.12, 0.88],\n",
" [1. , 0. ]])"
]
},
"execution_count": 73,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
2019-01-15 05:36:29 +01:00
"knn.predict_proba(X_new)"
]
},
{
"cell_type": "code",
"execution_count": 74,
"metadata": {},
2022-02-19 10:24:54 +01:00
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAZkAAADICAYAAAA6AJwoAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAAsTAAALEwEAmpwYAABMNUlEQVR4nO2de3gU1dnAf0duCdYm4A0QDIJIDRUUYgSDrIJYKhKVCvFSEIshWG3ASMXSKqAW8dIYaKvEaMVglWCLEsFS8EJo0LBAJCIoCkokFdHPXKRmIwHO98fmDLOT2WQTNju7yfk9T57sZXbmnd2Z8573eoSUEo1Go9FoWoKTnBZAo9FoNK0XrWQ0Go1G02JoJaPRaDSaFkMrGY1Go9G0GFrJaDQajabF0EpGo9FoNC1Ge6cFCCaxsbGyR48eTouh0WhaIXv27KG2tpZucT350Y9PcVqcsGPPjo/+T0p5uvX1VqVkevTowbJly5wWQ6PRtEISEhIAyPnPKoclCU/GnT2k1O517S7TaDSaRqiqqgKgx2mxzgoSgWglo9FoNI1w5513AnDrH3/vsCSRh1YyGo1G0wiffPIJAJf+fKTDkkQeWsloNBpNIxw7dgxxkh4um4P+1jQajaYBysrKAPhx1xiHJYlMtJLRhA2VlZXk5uZSWVkZEccJlbwaZ8nLywPgtt+lOyzJifG7if343cR+IT+uVjKasCE/P5/FixeTn58f8GeaM9A35zgtuR9NePPKK68AcPn4sQ5LEploJaMJCyorK/F4PKSmppKcnByw8rAb6O0+a37N5XKRlJSEy+UKWDY7WZKTk0lPTyc5OTnQ09REGFJKjhw5AkC7du0cliYycUTJCCH+JoT4WgjxoZ/3hRBisRBijxDiAyHE4FDL2NZw2vWTl5dHTk4OALGxsQ1aCZWVlWRnZ5OdnY3L5ao30Nt9Vr02d+5c1q5dy6ZNmygoKAhINn+yxMbGMnnyZGJjY5txxppI4M033wTg4lGXOSxJ5OJUxf9S4C9Arp/3fw70q/u7BHi67r+mhVADKcDkyZMb3LayspL8/HySk5MbHWArKysNn3ZKSorP9ub9WFGv2b2Xn59vKKRdu3Yxf/58Y7+lpaUUFRUxadIkn88mJyezbds2Nm3aRHx8fJMskIZksZ5roN+LJjJ4+OGHAbjzkd85LEnk4oiSkVJuFEL0bmCTa4Fc6V0bukgIESuE6C6lPBAaCdsegQ6k0DSFZFYIANHR0bhcLtauXUtJSQlutxvwKqDo6GjDVdbQYJ2cnMyBAwdYt24dmzZtIj8/35AjMzMTt9tNhw4dfBRPZmYmt99+O/Hx8T7nmZub26hSUBbLiX4vWglFHt9//z0Ap3Y702FJIpdw7V12FrDf9Lys7jWtZFqIQAdSCEwhqQHV5XLh8XiM1xcvXmxYFABJSUnGoKuOn5ub63ewVvstLS2lqqqK2NhYn9hKRkaGz3/wKh51vPj4eEPpRUdH1zuOneUVqHJo7HtpinLWOE9RUREAZ559lsOSNA1/GWQfFp3S4PuPrPi0ReQJVyUjbF6TthsKMQ2YBtCtW7eWlKlNYx1ozYOk3SBsHlDT0tKM7aKjo7nooouora2lf//+3HrrrbYWh9Wdpd7r06cPy5YtY+LEiXzyySdUVlZSUFBgyBMXF8eiRYt8ZDcrnrVr1wJQUlLC7NmzAXC5XOTm5uJyuXwUEngVkcfjMRRTQ8pBfS8qvmVVSk2xFjXO8+ijjwKw8B85jWypaYhwVTJlQC/T857Al3YbSimfAZ4BiI+Pt1VEbZFgu2bsZuHqGBUVFSxbtgyPx0NaWlq9TDGFGoRzc3Nxu90MHTrURzbzAG9VFOq92tpa0tPT8Xg8VFZWGpaQv/N3uVwUFBQYcZuUlBR27dplBP4nT57MQw89xKpVq3jzzTfZtWsXiYmJDBo0CPBaXqmpqT5Kz7pv9br6vv1ZLE2xFjXOs3+/15ly6plnOCxJ0/BnkSgLpqUsFn+Eq5LJB+4SQizHG/Cv0vGYpnGirhmrkrKbhatjDB7sTf6rqakBjmeKpaam+o2pWPdVWVlJnz59qK2t9XF1KczWSFxcHDt27GDdunXcfvvtQP3YipLN7JpTCkB9RrnZNmzYAHgHFaVMlJtMxZAKCgqoqqoiPz/fsGzM+waM77sxi0XHZsIfpWC6djsDIewcK5pAcUTJCCFeBi4HThNClAFzgQ4AUsolwBvA1cAeoBq4zQk5w5VABqnmuGbM8QiAnJwcPB4PNTU17N69m9mzZ/scz+VyUVRUxKFDh3z2UVJS0uBxlNIyZ5bNnTuXTZs2kZ6eTkxMTD2lYXWDPfvss5SWljJv3jyuuuqqeu4stV+Xy8WQIUN8LIykpCQ2bdrEkCFDDEvmgQce4MEHH+TSSy/1cXcpy8ussJRl43K5iI+Px+PxMGbMGOO4jVksSg6Px2MkO2hlE15kZWUBMHfpooY31DSKU9llNzXyvgTuDJE4EUcgVkpTXTOVlZXMmTPHyPZSA6nH4zEWgnv44Yfp3LmzYU0UFBQY2wNERUWRn5+P2+0mKSmJMWPG+M3eMp8DwKZNmwzXl/X87ILxGRkZfPHFF5SWllJTU2PrzrIO+HaKB+DSSy816iHsvl+7z6nzUckD0dHRAad+KwuqoqLCUOTKzagtnPAi7rw+TosQ8YSru0zTAP7cTc0doCorK5k7d66hMBITE30yq5Qlc+TIEZ+YibJk4uLiiI2NZcyYMaxdu5bU1FRSUlJ8XFbmWhZ/5+DPNecvDbp79+7s37+fqKgonwE+kJiI1ZIyP7bGk8yfsyY8VFRUkJiYiMvlMpITlBK2/i5WubKzswFvEoLaTmefhQfqOtedl08crWQiEDsrxTxAmQdQpSj8FUSqz27atMkIeJu3iY2NZcaMGQA+gyhgWDJDhw413Eo5OTmkp3sbCXo8HhITE+vVstidQ0PvJScn26ZBK4spJSXF53zMSsqf8rVaUubH5nPwZ4kpxawGo7Vr17Ju3TpKS70r0CrXnvV3McsFXoXudrt9lJzOPnMe1UrmJK1kThitZFoJ5gHKOiM2WwJ2bh3zZ5VSUim9KnsqNja2XlzEOihaZVDB/6FDh56Q1RUbG1svDdrOdWXevrGaG5fLxbZt23C5XMTExPjIb/0ezbETwAj+mxUzeJVwXFycT+KC9bs1y2X9fnT2WXjg9dZD55NPcViS4BLqrDKFVjKtBOVmysvLo6amxsfdY7YEVE2IeXC21nfYZU/ZDX7WAL5d/KOxeExTB1V/rit/+LMOCgoKfIL/dlaV2X2m5FXfzaRJk2wz0QJttePxeJgwYQLbtm1jwIABPu/bud0a25+O5QSPBQsWADDml9c5K0grQSuZVoAaZMxFg+np6T5KRMVI1q5da1tYaHb/mLOnzAFyO5pTE2Id+O3qToI1WPqTIxDXlFn5KgWi3I7WOJD1ONbfxByXUlZer1692L9/P8XFxXTp0sU41owZMygrK6O2tpannnqq0XPUsZzgUlxcDMBtv5/prCCtBK1kWgFqkElNTSU1NRWoP3iq2hU1A3e5XGRnZ1NTU0NUVBRwPMPLHJNpbNBqThzBOiDb1bSoAbelZuhNcU2Ztx0zZgy7du0yUpb9Yf5NVMq0OheVWFBZWcn+/fu56KKLjO8vLy/PWImxf//+xv4asm50LCe4qLiaJjhoJRPGNDbIWvuDqWLIqKgoo3DQ+lk1A1cxAYW5qr0pA3ow4gj+UovDcYZudbP5wy5DzhyrSk9PJyUlhe7du9t+54MHDyYqKorKykpiY2N59NFHcbvdAVs3muZRW1sLQLt2OuAfLLSSCWMaG2TNgWnVKkWhMp1U0HrMmDE+wevk5GSKiopwu931UpatMZuW9vn7i7OE4ww9UJn8Zc/5SwRQqG7Uys2mEjX69++P2+32sW4U4aiMI5Xq6moALh17pcOStB60kgljGhvQzIFplenUv39/du/ebaT3An5jJgsWLPDb2LKoqMhIZ26o3qUlCcdsqxOVqbHP28WBAG699VbDramsG0U4KuNIRaUs7313i8OStB60kgljmjMgKWvEXHd
"text/plain": [
"<Figure size 432x216 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# extra code this cell generates and saves Figure 915\n",
"\n",
2019-01-15 05:36:29 +01:00
"plt.figure(figsize=(6, 3))\n",
"plot_decision_boundaries(knn, X, show_centroids=False)\n",
"plt.scatter(X_new[:, 0], X_new[:, 1], c=\"b\", marker=\"+\", s=200, zorder=10)\n",
"save_fig(\"cluster_classification_plot\")\n",
2019-01-15 05:36:29 +01:00
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 75,
"metadata": {},
2022-02-19 10:24:54 +01:00
"outputs": [
{
"data": {
"text/plain": [
"array([-1, 0, 1, -1])"
]
},
"execution_count": 75,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
2019-01-15 05:36:29 +01:00
"y_dist, y_pred_idx = knn.kneighbors(X_new, n_neighbors=1)\n",
"y_pred = dbscan.labels_[dbscan.core_sample_indices_][y_pred_idx]\n",
"y_pred[y_dist > 0.2] = -1\n",
"y_pred.ravel()"
]
},
{
2019-01-15 05:36:29 +01:00
"cell_type": "markdown",
"metadata": {},
"source": [
2019-01-15 05:36:29 +01:00
"## Other Clustering Algorithms"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The code in this section is bonus material, not in the book."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
2019-01-15 05:36:29 +01:00
"### Spectral Clustering"
]
},
{
"cell_type": "code",
"execution_count": 76,
"metadata": {},
"outputs": [],
"source": [
2019-01-15 05:36:29 +01:00
"from sklearn.cluster import SpectralClustering"
]
},
{
"cell_type": "code",
"execution_count": 77,
"metadata": {},
2022-02-19 10:24:54 +01:00
"outputs": [
{
"data": {
"text/plain": [
"SpectralClustering(gamma=100, n_clusters=2, random_state=42)"
]
},
"execution_count": 77,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
2019-01-15 05:36:29 +01:00
"sc1 = SpectralClustering(n_clusters=2, gamma=100, random_state=42)\n",
"sc1.fit(X)"
]
},
{
2019-01-15 05:36:29 +01:00
"cell_type": "code",
"execution_count": 78,
"metadata": {},
2022-02-19 10:24:54 +01:00
"outputs": [
{
"data": {
"text/plain": [
"array([[1. , 0. , 0. , ..., 0. , 0. , 0. ],\n",
" [0. , 1. , 0.3, ..., 0. , 0. , 0. ],\n",
" [0. , 0.3, 1. , ..., 0. , 0. , 0. ],\n",
" ...,\n",
" [0. , 0. , 0. , ..., 1. , 0. , 0. ],\n",
" [0. , 0. , 0. , ..., 0. , 1. , 0. ],\n",
" [0. , 0. , 0. , ..., 0. , 0. , 1. ]])"
]
},
"execution_count": 78,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"sc1.affinity_matrix_.round(2)"
]
},
{
"cell_type": "code",
"execution_count": 79,
"metadata": {},
2022-02-19 10:24:54 +01:00
"outputs": [
{
"data": {
"text/plain": [
"SpectralClustering(gamma=1, n_clusters=2, random_state=42)"
]
},
"execution_count": 79,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"sc2 = SpectralClustering(n_clusters=2, gamma=1, random_state=42)\n",
"sc2.fit(X)"
]
},
{
"cell_type": "code",
"execution_count": 80,
"metadata": {},
"outputs": [],
"source": [
"def plot_spectral_clustering(sc, X, size, alpha, show_xlabels=True,\n",
" show_ylabels=True):\n",
" plt.scatter(X[:, 0], X[:, 1], marker='o', s=size, c='gray', alpha=alpha)\n",
2019-01-15 05:36:29 +01:00
" plt.scatter(X[:, 0], X[:, 1], marker='o', s=30, c='w')\n",
" plt.scatter(X[:, 0], X[:, 1], marker='.', s=10, c=sc.labels_, cmap=\"Paired\")\n",
" \n",
" if show_xlabels:\n",
" plt.xlabel(\"$x_1$\")\n",
2019-01-15 05:36:29 +01:00
" else:\n",
" plt.tick_params(labelbottom=False)\n",
" if show_ylabels:\n",
" plt.ylabel(\"$x_2$\", rotation=0)\n",
2019-01-15 05:36:29 +01:00
" else:\n",
" plt.tick_params(labelleft=False)\n",
" plt.title(f\"RBF gamma={sc.gamma}\")"
]
},
{
"cell_type": "code",
"execution_count": 81,
"metadata": {},
2022-02-19 10:24:54 +01:00
"outputs": [
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 648x230.4 with 2 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plt.figure(figsize=(9, 3.2))\n",
"\n",
"plt.subplot(121)\n",
2019-01-15 05:36:29 +01:00
"plot_spectral_clustering(sc1, X, size=500, alpha=0.1)\n",
"\n",
"plt.subplot(122)\n",
2019-01-15 05:36:29 +01:00
"plot_spectral_clustering(sc2, X, size=4000, alpha=0.01, show_ylabels=False)\n",
"\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
2019-01-15 05:36:29 +01:00
"metadata": {},
"source": [
2019-01-15 05:36:29 +01:00
"### Agglomerative Clustering"
]
},
{
2019-01-15 05:36:29 +01:00
"cell_type": "code",
"execution_count": 82,
"metadata": {},
2019-01-15 05:36:29 +01:00
"outputs": [],
"source": [
2019-01-15 05:36:29 +01:00
"from sklearn.cluster import AgglomerativeClustering"
]
},
{
2019-01-15 05:36:29 +01:00
"cell_type": "code",
"execution_count": 83,
"metadata": {},
2019-01-15 05:36:29 +01:00
"outputs": [],
"source": [
2019-01-15 05:36:29 +01:00
"X = np.array([0, 2, 5, 8.5]).reshape(-1, 1)\n",
"agg = AgglomerativeClustering(linkage=\"complete\").fit(X)"
]
},
{
2019-01-15 05:36:29 +01:00
"cell_type": "code",
"execution_count": 84,
2019-01-15 05:36:29 +01:00
"metadata": {},
"outputs": [],
"source": [
2019-01-15 05:36:29 +01:00
"def learned_parameters(estimator):\n",
" return [attrib for attrib in dir(estimator)\n",
" if attrib.endswith(\"_\") and not attrib.startswith(\"_\")]"
]
},
{
2019-01-15 05:36:29 +01:00
"cell_type": "code",
"execution_count": 85,
"metadata": {},
2022-02-19 10:24:54 +01:00
"outputs": [
{
"data": {
"text/plain": [
"['children_',\n",
" 'labels_',\n",
" 'n_clusters_',\n",
" 'n_connected_components_',\n",
" 'n_features_in_',\n",
" 'n_leaves_']"
]
},
"execution_count": 85,
"metadata": {},
"output_type": "execute_result"
}
],
2019-01-15 05:36:29 +01:00
"source": [
"learned_parameters(agg)"
]
},
{
"cell_type": "code",
"execution_count": 86,
2019-01-15 05:36:29 +01:00
"metadata": {
"scrolled": true
},
2022-02-19 10:24:54 +01:00
"outputs": [
{
"data": {
"text/plain": [
"array([[0, 1],\n",
" [2, 3],\n",
" [4, 5]])"
]
},
"execution_count": 86,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
2019-01-15 05:36:29 +01:00
"agg.children_"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
2019-01-15 05:36:29 +01:00
"# Gaussian Mixtures"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's generate the same dataset as earliers with three ellipsoids (the one K-Means had trouble with):"
]
},
{
"cell_type": "code",
"execution_count": 87,
"metadata": {},
"outputs": [],
"source": [
2019-01-15 05:36:29 +01:00
"X1, y1 = make_blobs(n_samples=1000, centers=((4, -4), (0, 0)), random_state=42)\n",
"X1 = X1.dot(np.array([[0.374, 0.95], [0.732, 0.598]]))\n",
"X2, y2 = make_blobs(n_samples=250, centers=1, random_state=42)\n",
"X2 = X2 + [6, -8]\n",
"X = np.r_[X1, X2]\n",
"y = np.r_[y1, y2]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
2019-01-15 05:36:29 +01:00
"Let's train a Gaussian mixture model on the previous dataset:"
]
},
{
"cell_type": "code",
"execution_count": 88,
"metadata": {},
"outputs": [],
"source": [
2019-01-15 05:36:29 +01:00
"from sklearn.mixture import GaussianMixture"
]
},
{
"cell_type": "code",
"execution_count": 89,
"metadata": {},
2022-02-19 10:24:54 +01:00
"outputs": [
{
"data": {
"text/plain": [
"GaussianMixture(n_components=3, n_init=10, random_state=42)"
]
},
"execution_count": 89,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
2019-01-15 05:36:29 +01:00
"gm = GaussianMixture(n_components=3, n_init=10, random_state=42)\n",
"gm.fit(X)"
]
},
{
2019-01-15 05:36:29 +01:00
"cell_type": "markdown",
"metadata": {},
"source": [
2019-01-15 05:36:29 +01:00
"Let's look at the parameters that the EM algorithm estimated:"
]
},
{
"cell_type": "code",
"execution_count": 90,
"metadata": {},
2022-02-19 10:24:54 +01:00
"outputs": [
{
"data": {
"text/plain": [
"array([0.39025715, 0.40007391, 0.20966893])"
]
},
"execution_count": 90,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
2019-01-15 05:36:29 +01:00
"gm.weights_"
]
},
{
2019-01-15 05:36:29 +01:00
"cell_type": "code",
"execution_count": 91,
"metadata": {},
2022-02-19 10:24:54 +01:00
"outputs": [
{
"data": {
"text/plain": [
"array([[ 0.05131611, 0.07521837],\n",
" [-1.40763156, 1.42708225],\n",
" [ 3.39893794, 1.05928897]])"
]
},
"execution_count": 91,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
2019-01-15 05:36:29 +01:00
"gm.means_"
]
},
{
"cell_type": "code",
"execution_count": 92,
"metadata": {},
2022-02-19 10:24:54 +01:00
"outputs": [
{
"data": {
"text/plain": [
"array([[[ 0.68799922, 0.79606357],\n",
" [ 0.79606357, 1.21236106]],\n",
"\n",
" [[ 0.63479409, 0.72970799],\n",
" [ 0.72970799, 1.1610351 ]],\n",
"\n",
" [[ 1.14833585, -0.03256179],\n",
" [-0.03256179, 0.95490931]]])"
]
},
"execution_count": 92,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
2019-01-15 05:36:29 +01:00
"gm.covariances_"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
2019-01-15 05:36:29 +01:00
"Did the algorithm actually converge?"
]
},
{
"cell_type": "code",
"execution_count": 93,
"metadata": {},
2022-02-19 10:24:54 +01:00
"outputs": [
{
"data": {
"text/plain": [
"True"
]
},
"execution_count": 93,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
2019-01-15 05:36:29 +01:00
"gm.converged_"
]
},
{
2019-01-15 05:36:29 +01:00
"cell_type": "markdown",
"metadata": {},
"source": [
2019-01-15 05:36:29 +01:00
"Yes, good. How many iterations did it take?"
]
},
{
2019-01-15 05:36:29 +01:00
"cell_type": "code",
"execution_count": 94,
"metadata": {},
2022-02-19 10:24:54 +01:00
"outputs": [
{
"data": {
"text/plain": [
"4"
]
},
"execution_count": 94,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
2019-01-15 05:36:29 +01:00
"gm.n_iter_"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
2019-01-15 05:36:29 +01:00
"You can now use the model to predict which cluster each instance belongs to (hard clustering) or the probabilities that it came from each cluster. For this, just use `predict()` method or the `predict_proba()` method:"
]
},
{
"cell_type": "code",
"execution_count": 95,
"metadata": {},
2022-02-19 10:24:54 +01:00
"outputs": [
{
"data": {
"text/plain": [
"array([0, 0, 1, ..., 2, 2, 2])"
]
},
"execution_count": 95,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
2019-01-15 05:36:29 +01:00
"gm.predict(X)"
]
},
{
2019-01-15 05:36:29 +01:00
"cell_type": "code",
"execution_count": 96,
"metadata": {},
2022-02-19 10:24:54 +01:00
"outputs": [
{
"data": {
"text/plain": [
"array([[0.977, 0. , 0.023],\n",
" [0.983, 0.001, 0.016],\n",
" [0. , 1. , 0. ],\n",
" ...,\n",
" [0. , 0. , 1. ],\n",
" [0. , 0. , 1. ],\n",
" [0. , 0. , 1. ]])"
]
},
"execution_count": 96,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"gm.predict_proba(X).round(3)"
]
},
{
2019-01-15 05:36:29 +01:00
"cell_type": "markdown",
"metadata": {},
"source": [
2019-01-15 05:36:29 +01:00
"This is a generative model, so you can sample new instances from it (and get their labels):"
]
},
{
"cell_type": "code",
"execution_count": 97,
"metadata": {},
2022-02-19 10:24:54 +01:00
"outputs": [
{
"data": {
"text/plain": [
"array([[-0.86944074, -0.32767626],\n",
" [ 0.29836051, 0.28297011],\n",
" [-2.8014927 , -0.09047309],\n",
" [ 3.98203732, 1.49951491],\n",
" [ 3.81677148, 0.53095244],\n",
" [ 2.84104923, -0.73858639]])"
]
},
"execution_count": 97,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
2019-01-15 05:36:29 +01:00
"X_new, y_new = gm.sample(6)\n",
"X_new"
]
},
{
"cell_type": "code",
"execution_count": 98,
"metadata": {},
2022-02-19 10:24:54 +01:00
"outputs": [
{
"data": {
"text/plain": [
"array([0, 0, 1, 2, 2, 2])"
]
},
"execution_count": 98,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
2019-01-15 05:36:29 +01:00
"y_new"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
2019-01-15 05:36:29 +01:00
"Notice that they are sampled sequentially from each cluster."
]
},
{
2019-01-15 05:36:29 +01:00
"cell_type": "markdown",
"metadata": {},
"source": [
2019-01-15 05:36:29 +01:00
"You can also estimate the log of the _probability density function_ (PDF) at any location using the `score_samples()` method:"
]
},
{
"cell_type": "code",
"execution_count": 99,
"metadata": {},
2022-02-19 10:24:54 +01:00
"outputs": [
{
"data": {
"text/plain": [
"array([-2.61, -3.57, -3.33, ..., -3.51, -4.4 , -3.81])"
]
},
"execution_count": 99,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"gm.score_samples(X).round(2)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
2019-01-15 05:36:29 +01:00
"Let's check that the PDF integrates to 1 over the whole space. We just take a large square around the clusters, and chop it into a grid of tiny squares, then we compute the approximate probability that the instances will be generated in each tiny square (by multiplying the PDF at one corner of the tiny square by the area of the square), and finally summing all these probabilities). The result is very close to 1:"
]
},
{
"cell_type": "code",
"execution_count": 100,
"metadata": {},
2022-02-19 10:24:54 +01:00
"outputs": [
{
"data": {
"text/plain": [
"0.9999999999215021"
]
},
"execution_count": 100,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# extra code bonus material\n",
"\n",
2019-01-15 05:36:29 +01:00
"resolution = 100\n",
"grid = np.arange(-10, 10, 1 / resolution)\n",
"xx, yy = np.meshgrid(grid, grid)\n",
"X_full = np.vstack([xx.ravel(), yy.ravel()]).T\n",
"\n",
"pdf = np.exp(gm.score_samples(X_full))\n",
"pdf_probas = pdf * (1 / resolution) ** 2\n",
"pdf_probas.sum()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
2019-01-15 05:36:29 +01:00
"Now let's plot the resulting decision boundaries (dashed lines) and density contours:"
]
},
{
2019-01-15 05:36:29 +01:00
"cell_type": "code",
"execution_count": 101,
"metadata": {},
2022-02-19 10:24:54 +01:00
"outputs": [
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 576x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# extra code this cells generates and saves Figure 916\n",
"\n",
2019-01-15 05:36:29 +01:00
"from matplotlib.colors import LogNorm\n",
"\n",
"def plot_gaussian_mixture(clusterer, X, resolution=1000, show_ylabels=True):\n",
" mins = X.min(axis=0) - 0.1\n",
" maxs = X.max(axis=0) + 0.1\n",
" xx, yy = np.meshgrid(np.linspace(mins[0], maxs[0], resolution),\n",
" np.linspace(mins[1], maxs[1], resolution))\n",
" Z = -clusterer.score_samples(np.c_[xx.ravel(), yy.ravel()])\n",
" Z = Z.reshape(xx.shape)\n",
"\n",
" plt.contourf(xx, yy, Z,\n",
" norm=LogNorm(vmin=1.0, vmax=30.0),\n",
" levels=np.logspace(0, 2, 12))\n",
" plt.contour(xx, yy, Z,\n",
" norm=LogNorm(vmin=1.0, vmax=30.0),\n",
" levels=np.logspace(0, 2, 12),\n",
" linewidths=1, colors='k')\n",
"\n",
" Z = clusterer.predict(np.c_[xx.ravel(), yy.ravel()])\n",
" Z = Z.reshape(xx.shape)\n",
" plt.contour(xx, yy, Z,\n",
" linewidths=2, colors='r', linestyles='dashed')\n",
" \n",
" plt.plot(X[:, 0], X[:, 1], 'k.', markersize=2)\n",
" plot_centroids(clusterer.means_, clusterer.weights_)\n",
"\n",
" plt.xlabel(\"$x_1$\")\n",
2019-01-15 05:36:29 +01:00
" if show_ylabels:\n",
" plt.ylabel(\"$x_2$\", rotation=0)\n",
2019-01-15 05:36:29 +01:00
" else:\n",
" plt.tick_params(labelleft=False)\n",
"\n",
2019-01-15 05:36:29 +01:00
"plt.figure(figsize=(8, 4))\n",
"\n",
"plot_gaussian_mixture(gm, X)\n",
"\n",
"save_fig(\"gaussian_mixtures_plot\")\n",
2019-01-15 05:36:29 +01:00
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
2019-01-15 05:36:29 +01:00
"You can impose constraints on the covariance matrices that the algorithm looks for by setting the `covariance_type` hyperparameter:\n",
"* `\"spherical\"`: all clusters must be spherical, but they can have different diameters (i.e., different variances).\n",
"* `\"diag\"`: clusters can take on any ellipsoidal shape of any size, but the ellipsoid's axes must be parallel to the axes (i.e., the covariance matrices must be diagonal).\n",
"* `\"tied\"`: all clusters must have the same shape, which can be any ellipsoid (i.e., they all share the same covariance matrix).\n",
"* `\"full\"` (default): no constraint, all clusters can take on any ellipsoidal shape of any size."
]
},
{
2019-01-15 05:36:29 +01:00
"cell_type": "code",
"execution_count": 102,
"metadata": {},
2022-02-19 10:24:54 +01:00
"outputs": [
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 648x288 with 2 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# extra code this cell generates and saves Figure 917\n",
"\n",
"gm_full = GaussianMixture(n_components=3, n_init=10,\n",
" covariance_type=\"full\", random_state=42)\n",
"gm_tied = GaussianMixture(n_components=3, n_init=10,\n",
" covariance_type=\"tied\", random_state=42)\n",
"gm_spherical = GaussianMixture(n_components=3, n_init=10,\n",
" covariance_type=\"spherical\", random_state=42)\n",
"gm_diag = GaussianMixture(n_components=3, n_init=10,\n",
" covariance_type=\"diag\", random_state=42)\n",
2019-01-15 05:36:29 +01:00
"gm_full.fit(X)\n",
"gm_tied.fit(X)\n",
"gm_spherical.fit(X)\n",
"gm_diag.fit(X)\n",
"\n",
2019-01-15 05:36:29 +01:00
"def compare_gaussian_mixtures(gm1, gm2, X):\n",
" plt.figure(figsize=(9, 4))\n",
"\n",
" plt.subplot(121)\n",
" plot_gaussian_mixture(gm1, X)\n",
" plt.title(f'covariance_type=\"{gm1.covariance_type}\"')\n",
2019-01-15 05:36:29 +01:00
"\n",
" plt.subplot(122)\n",
" plot_gaussian_mixture(gm2, X, show_ylabels=False)\n",
" plt.title(f'covariance_type=\"{gm2.covariance_type}\"')\n",
"\n",
2019-01-15 05:36:29 +01:00
"compare_gaussian_mixtures(gm_tied, gm_spherical, X)\n",
"\n",
"save_fig(\"covariance_type_plot\")\n",
2019-01-15 05:36:29 +01:00
"plt.show()"
]
},
{
2019-01-15 05:36:29 +01:00
"cell_type": "code",
"execution_count": 103,
"metadata": {},
2022-02-19 10:24:54 +01:00
"outputs": [
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 648x288 with 2 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# extra code comparing covariance_type=\"full\" and covariance_type=\"diag\"\n",
2019-01-15 05:36:29 +01:00
"compare_gaussian_mixtures(gm_full, gm_diag, X)\n",
"plt.tight_layout()\n",
"plt.show()"
]
},
{
2019-01-15 05:36:29 +01:00
"cell_type": "markdown",
"metadata": {},
2017-06-26 00:09:23 +02:00
"source": [
"## Anomaly Detection Using Gaussian Mixtures"
2017-06-26 00:09:23 +02:00
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Gaussian Mixtures can be used for _anomaly detection_: instances located in low-density regions can be considered anomalies. You must define what density threshold you want to use. For example, in a manufacturing company that tries to detect defective products, the ratio of defective products is usually well-known. Say it is equal to 2%, then you can set the density threshold to be the value that results in having 2% of the instances located in areas below that threshold density:"
2017-06-26 00:09:23 +02:00
]
},
{
"cell_type": "code",
"execution_count": 104,
2017-06-26 00:09:23 +02:00
"metadata": {},
"outputs": [],
"source": [
2019-01-15 05:36:29 +01:00
"densities = gm.score_samples(X)\n",
"density_threshold = np.percentile(densities, 2)\n",
2019-01-15 05:36:29 +01:00
"anomalies = X[densities < density_threshold]"
]
},
{
"cell_type": "code",
"execution_count": 105,
2019-01-15 05:36:29 +01:00
"metadata": {},
2022-02-19 10:24:54 +01:00
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAjAAAAEQCAYAAACutU7EAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAAsTAAALEwEAmpwYAAEAAElEQVR4nOydd3hT9f7HXye7Tbr3boEOyt5bhoKgILjFjXvvvfU6rluvXrdeB8JPEVFBQPbee7RAaWlp6W7SpEmzc35/lIa2dDcdaF/P06c5yRnfJCfn+z6fKYiiSDfddNNNN9100825hKSzB9BNN91000033XTTUroFTDfddNNNN910c87RLWC66aabbrrppptzjm4B00033XTTTTfdnHN0C5huuummm2666eaco1vAdNNNN91000035xyyzjioIAjZQAXgBByiKA7tjHF000033XTTTTfnJp0iYE4zURTF0uasGBwoFeNj5O09nhZhtYmcOGknPFSGwqezR3PuIakUUWU63MuWXjJcXkKtdSxmkYJTTvwDJODfuR+y6BQxaa1Uaq2o4oIRpF3beOmyO3GarDgrbTjNNvwAa1Q4LknnjltiN2EtqUAV7odE1bV+0/UhcYkkZRa7lwtDfCj39+7EEXVTE7m5An2+GUEAmVKKTCk5/b/qsUTWtX+n3TRNYVp5qSiKIfW91pkCptnEx8jZ8VdsZw/DzW/LjNz1eDEvPR7ExDkqBEFoeqNu3PS4uRj/tVb3sgikfRqENUkBgEHv4pO39axZXskTL/tjnzweQdI5n7Hd4mTPT1ls/TaDHqNDUVw5DVWEf6eMpTFcNgf6A7notmei25GFy2rHf0gCrvi+zKw08/WPv3P/tAn8MWJgp45TFEXMuw+in7+I6JmDibhkcKeOpzF6H87jq4fnuZdF4IKvbsXipei8QXVzFqIoYiszYs4upTKnFP+SLEqzKijNrECQCgQl+BDcw4fgBB+CTv/3DffqtGtKNy3j9QGLchp6TeiMSryCIJwAdFRdEz4XRfGLxtYfOkAldgUBY7eLPP1aKb/+aeTljwPpN0jZ2UM65wj9SE/0Owb3sqmfjKOLw0EQEEWRpYsq+fD1ciZM8SL2zgl4+XXOZOFyuDjwx0k2fnaEiFR/vGdPwzs+uFPG0hAOowXdtkzKtmSg35ONd0IIASN6YosdhDw6gv98MZ8p+9LQ2x3MFUWuFwT85DJWDEzlwTuv7dyxl5Sh/fhLQif3I3r2yE4dS31cvWA7D3y53r1sk0uZtPgRxO5J75xBFEXsOhPmk2VUntQSWJpJ2YkKyk5UYDHYCYzXVAmbHr5V/3v6EBCt7rbadDFeH7Bod0NhJp1lgRkjimK+IAihwEpBEI6Iorih5gqCINwB3AEQG9X5hqJTBQ5m31mAr6+Eb5aE4h8g7ewhnTuIIv6LTZRfoqH4Dg3KbDvBv5g5+Zo/ZddXuYayjtn59/M6TEYXM94fR2S/wE4aqsjR1fms/zgNdZCK+Gcux6d3ZKeMpT7sBjPaLRmUbTxGxeE8fPvHIPQeRPgVVyP10QBQLfnemzWFPrkF/FxUynOiiE0QuDIogHcvvbDz3sBpZCFBBD18D0Vvf4wy3JeQiamdPSQ3g/Zm1xIvRcEaLpt3TyeOqJvWIAgCikANikANfgPjgEFEApGAw2TFnKvFfLIUa+lx9v+WQ2lWBcYSMwGxGkJ6+hLSy5eQXj6E9PLFP0rdbbHpgnSKBabWAAThJcAoiuI7Da3T2RaYDVvNXHt3AXff5M+0u72QdJ/IzUZSZmfA4EIAji4IoXK4ClwucAAKCWazi68/MrBovonbH/BFeskEJNLO+XxP7i5lzfuHcNhcBN04Gf+hCV3CPeg029BuyaB0XTqGg3n4DY5HSB2CV//eSLwatwJetOsAL3w2j28kEm5xuXjlrmtZOrR/B428aWy5+ZS+/wUD/nsTylDfzh4OADKbg3XT30MAtg6J57E3rursIf1jUJusfP7gXO788HpM6o63cDstdsy5ZVRmlxJckkHJcQMlxw1YDPYqMZPoR1hy1V9okh8K786/uf6706UsMIIgqAGJKIoVpx9PAV7p6HE0B1EU+eirct74j44X3g9k1Hmqzh7SOUXcg6UE/WZ2L/e4s5RDe6NBIgEFbFpj5q0XdPQZqODGny9EHtI5n29JpoG1Hxym5LiB0OsnEjwptdPvtkSni/K9OZSsOoxueyY+qVFIBwwj4oabmxQtNbl45wHUKiXijPNRL17NRTsPdikBo4iJJHzGIHK+Xk/S0zM6bRwBZUbm3/Y1V3x3B0ZfL159ZBoHUyM5FRvUaWP6JzJ6eyYJJ8sYtSOTVZ1glZOq5GgSw9EkhgN9CQPCAEeFBdOJEvQnSuBIBgd+z6EkswLfMC/CUvwI7+1PeKo/4b398fLtjpHqKDrcAiMIQg9g0elFGTBPFMXXGtumMywwZrOLu54o5mC6lX99FkRUbLfSbi7yEzb6nF+ExHnmOVuwhEPbI0AmoaTIyTsv6zhyyM7Yp4bTY3RYp4zTWGJhw6fpHFuTz6hbkjBNnIJE0bnfc+XJMopXHKR0dRryIA2hF/TBljgaqa+mVfvrfyKX/EB/Sv18CNZXEKHTczA+2sOjbhsui5XCZ96g/4fXo4oM6PDjD9qTw8dP/QRAfpgv97x7LSVdxBr0T+HF1xczbttx9DYHP7hEbpAI+ClkbBzZi5ef6Txh2xii00XlyTJMx4sIyD9KQVo5xUf1qIOVRPQJILJPAJH9AghL8Ueu6g45aC1dygIjimIWMKCjj9sSThU4uPyWfBLi5Px3YQheXt1BXc1FmW4ldWox1fYLEch+JwDdlRqcTpGF31fw+fsGLr9Ww6AXJnfKD9tW6WDbdxnsnp9J/1lx9P3qLsw+qk6r6ug02yhdf4Ti5QexFJYTcn4fgh66A3lkGE6gLZ/QgYQY9+NSPx9K/bpezr9EpSTk/D4UrzhE7M3jOvTYt32znjn/t9297FthoSSk631Gf3e+umksiVnFzD+l41lE7ILA7FBfvrp5bGcPrUEEqQR1QgjqhBCgL7FAjNOFOVeL8VgB2pNHOLQ0l9KsCoJ7+BDVP5DoAYFEDQjEL9K7S7inz3W6zQp12LnPwuW3FHD3TX5Mvcur+yRrIdYoGY5AAblWxBwvJX1dBAgCGUdsvPaUDokUrvxyIiG9Ov4O1+UUOfB7Dhs+SSd2aDC9P7oFabhfh4+jGlNmEYV/7qds/RF8+kShPP8C/PsmI8j+eXdrruTh6P9vQYcKmA8fncfQg3nu5azYIG746tYOO343ZzgVFcBXN47l/tf/QJRJuMUl8tGNYznVCRa5tiBIJXjHB5/OWOxHDyDOasd0vAi/3AMcWZXPqncPIggC0YOCiBkYRMzgIEKT/Dot9u9cplvA1ODnPyq4/+kSnn4zgAlTvDp7OOcM8XeV4LfawuHV4TiiZWR8G4y8zEXFJG8sFhdf/UfPovkm7n3cD9fUzqnpcmJbMavfPYhCLSfh+SvxSYno8DFAVb2W0nVHKFyyF1uZkbBpAwh98RFkAZ0npLoCioRorEV6HBUWZD7tHwv14mt/1BIvyyek8K9nLmn343bTMOevP4JGJcf3+tFo5m5h0oYjrDsvubOH1WakSjm+faKx9IkmaCoEiiLWQj2Gw6coyTzMngVZGEutRA8MJHZIMLFDgolI9e9O524GnZ6F1BzaOwZGFEXe+FDHFz/oefOrIJL7dAdhNQdlupXUi4oRXFXLLhnsT4tGVFYJlJ1bLLz+jI6kVDmpD09A0wlBumXZFax+9xClWRWEzbmAwLFJnWJVsxTpKVqyj6LlB9EkhiEbdR5e/VMQOrkybldC9+6HxN4yHr/+MU2v3Eb6Hszl00fnIwHeum8yv18yqN2P2U3jpBwtoCjUF12AmgCdibASA0eSOudGo6Oxl1diOJiLz/GD5OwqxVBQSfSgIOKHhxA/IpTQRN9OTyzoLLpUDExXw24XueuJYg4ctvLlb6GEhP3zzPetodfVRfhus7mXRSDnX36ISgGD3sUHr5WzbYOFcU8NI2lCx1+EzHobmz4/wqE
"text/plain": [
"<Figure size 576x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
2019-01-15 05:36:29 +01:00
"source": [
"# extra code this cell generates and saves Figure 918\n",
"\n",
2019-01-15 05:36:29 +01:00
"plt.figure(figsize=(8, 4))\n",
"\n",
"plot_gaussian_mixture(gm, X)\n",
"plt.scatter(anomalies[:, 0], anomalies[:, 1], color='r', marker='*')\n",
"plt.ylim(top=5.1)\n",
"\n",
"save_fig(\"mixture_anomaly_detection_plot\")\n",
2017-06-26 00:09:23 +02:00
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Selecting the Number of Clusters"
2017-06-26 00:09:23 +02:00
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
2019-01-15 05:36:29 +01:00
"We cannot use the inertia or the silhouette score because they both assume that the clusters are spherical. Instead, we can try to find the model that minimizes a theoretical information criterion such as the Bayesian Information Criterion (BIC) or the Akaike Information Criterion (AIC):\n",
"\n",
"${BIC} = {\\log(m)p - 2\\log({\\hat L})}$\n",
"\n",
"${AIC} = 2p - 2\\log(\\hat L)$\n",
"\n",
"* $m$ is the number of instances.\n",
"* $p$ is the number of parameters learned by the model.\n",
"* $\\hat L$ is the maximized value of the likelihood function of the model. This is the conditional probability of the observed data $\\mathbf{X}$, given the model and its optimized parameters.\n",
"\n",
"Both BIC and AIC penalize models that have more parameters to learn (e.g., more clusters), and reward models that fit the data well (i.e., models that give a high likelihood to the observed data)."
]
},
{
"cell_type": "code",
"execution_count": 106,
"metadata": {},
2022-02-19 10:24:54 +01:00
"outputs": [
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 576x324 with 4 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# extra code this cell generates and saves Figure 919\n",
"\n",
"from scipy.stats import norm\n",
"\n",
"x_val = 2.5\n",
"std_val = 1.3\n",
"x_range = [-6, 4]\n",
"x_proba_range = [-2, 2]\n",
"stds_range = [1, 2]\n",
"\n",
"xs = np.linspace(x_range[0], x_range[1], 501)\n",
"stds = np.linspace(stds_range[0], stds_range[1], 501)\n",
"Xs, Stds = np.meshgrid(xs, stds)\n",
"Z = 2 * norm.pdf(Xs - 1.0, 0, Stds) + norm.pdf(Xs + 4.0, 0, Stds)\n",
"Z = Z / Z.sum(axis=1)[:, np.newaxis] / (xs[1] - xs[0])\n",
"\n",
"x_example_idx = (xs >= x_val).argmax() # index of the first value >= x_val\n",
"max_idx = Z[:, x_example_idx].argmax()\n",
"max_val = Z[:, x_example_idx].max()\n",
"s_example_idx = (stds >= std_val).argmax()\n",
"x_range_min_idx = (xs >= x_proba_range[0]).argmax()\n",
"x_range_max_idx = (xs >= x_proba_range[1]).argmax()\n",
"log_max_idx = np.log(Z[:, x_example_idx]).argmax()\n",
"log_max_val = np.log(Z[:, x_example_idx]).max()\n",
"\n",
"plt.figure(figsize=(8, 4.5))\n",
"\n",
"plt.subplot(2, 2, 1)\n",
"plt.contourf(Xs, Stds, Z, cmap=\"GnBu\")\n",
"plt.plot([-6, 4], [std_val, std_val], \"k-\", linewidth=2)\n",
"plt.plot([x_val, x_val], [1, 2], \"b-\", linewidth=2)\n",
"plt.ylabel(r\"$\\theta$\", rotation=0, labelpad=10)\n",
"plt.title(r\"Model $f(x; \\theta)$\")\n",
"\n",
"plt.subplot(2, 2, 2)\n",
"plt.plot(stds, Z[:, x_example_idx], \"b-\")\n",
"plt.plot(stds[max_idx], max_val, \"r.\")\n",
"plt.plot([stds[max_idx], stds[max_idx]], [0, max_val], \"r:\")\n",
"plt.plot([0, stds[max_idx]], [max_val, max_val], \"r:\")\n",
"plt.text(stds[max_idx]+ 0.01, 0.081, r\"$\\hat{\\theta}$\")\n",
"plt.text(stds[max_idx]+ 0.01, max_val - 0.006, r\"$Max$\")\n",
"plt.text(1.01, max_val - 0.008, r\"$\\hat{\\mathcal{L}}$\")\n",
"plt.ylabel(r\"$\\mathcal{L}$\", rotation=0, labelpad=10)\n",
"plt.title(fr\"$\\mathcal{{L}}(\\theta|x={x_val}) = f(x={x_val}; \\theta)$\")\n",
"plt.grid()\n",
"plt.axis([1, 2, 0.08, 0.12])\n",
"\n",
"plt.subplot(2, 2, 3)\n",
"plt.plot(xs, Z[s_example_idx], \"k-\")\n",
"plt.fill_between(xs[x_range_min_idx:x_range_max_idx+1],\n",
" Z[s_example_idx, x_range_min_idx:x_range_max_idx+1], alpha=0.2)\n",
"plt.xlabel(r\"$x$\")\n",
"plt.ylabel(\"PDF\")\n",
"plt.title(fr\"PDF $f(x; \\theta={std_val})$\")\n",
"plt.grid()\n",
"plt.axis([-6, 4, 0, 0.25])\n",
"\n",
"plt.subplot(2, 2, 4)\n",
"plt.plot(stds, np.log(Z[:, x_example_idx]), \"b-\")\n",
"plt.plot(stds[log_max_idx], log_max_val, \"r.\")\n",
"plt.plot([stds[log_max_idx], stds[log_max_idx]], [-5, log_max_val], \"r:\")\n",
"plt.plot([0, stds[log_max_idx]], [log_max_val, log_max_val], \"r:\")\n",
"plt.text(stds[log_max_idx]+ 0.01, log_max_val - 0.06, r\"$Max$\")\n",
"plt.text(stds[log_max_idx]+ 0.01, -2.49, r\"$\\hat{\\theta}$\")\n",
"plt.text(1.01, log_max_val - 0.08, r\"$\\log \\, \\hat{\\mathcal{L}}$\")\n",
"plt.xlabel(r\"$\\theta$\")\n",
"plt.ylabel(r\"$\\log\\mathcal{L}$\", rotation=0, labelpad=10)\n",
"plt.title(fr\"$\\log \\, \\mathcal{{L}}(\\theta|x={x_val})$\")\n",
"plt.grid()\n",
"plt.axis([1, 2, -2.5, -2.1])\n",
"\n",
"save_fig(\"likelihood_function_plot\")\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 107,
2019-01-15 05:36:29 +01:00
"metadata": {},
2022-02-19 10:24:54 +01:00
"outputs": [
{
"data": {
"text/plain": [
"8189.747000497186"
]
},
"execution_count": 107,
"metadata": {},
"output_type": "execute_result"
}
],
2019-01-15 05:36:29 +01:00
"source": [
"gm.bic(X)"
2017-06-26 00:09:23 +02:00
]
},
{
"cell_type": "code",
"execution_count": 108,
2017-06-26 00:09:23 +02:00
"metadata": {},
2022-02-19 10:24:54 +01:00
"outputs": [
{
"data": {
"text/plain": [
"8102.521720382148"
]
},
"execution_count": 108,
"metadata": {},
"output_type": "execute_result"
}
],
2017-06-26 00:09:23 +02:00
"source": [
2019-01-15 05:36:29 +01:00
"gm.aic(X)"
2017-06-26 00:09:23 +02:00
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
2019-01-15 05:36:29 +01:00
"We could compute the BIC manually like this:"
2017-06-26 00:09:23 +02:00
]
},
{
"cell_type": "code",
"execution_count": 109,
"metadata": {},
2022-02-19 10:24:54 +01:00
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"bic = 8189.747000497186\n",
"aic = 8102.521720382148\n",
"n_params = 17\n"
]
}
],
2017-06-26 00:09:23 +02:00
"source": [
"# extra code bonus material\n",
2019-01-15 05:36:29 +01:00
"n_clusters = 3\n",
"n_dims = 2\n",
"n_params_for_weights = n_clusters - 1\n",
"n_params_for_means = n_clusters * n_dims\n",
"n_params_for_covariance = n_clusters * n_dims * (n_dims + 1) // 2\n",
"n_params = n_params_for_weights + n_params_for_means + n_params_for_covariance\n",
"max_log_likelihood = gm.score(X) * len(X) # log(L^)\n",
"bic = np.log(len(X)) * n_params - 2 * max_log_likelihood\n",
"aic = 2 * n_params - 2 * max_log_likelihood\n",
"print(f\"bic = {bic}\")\n",
"print(f\"aic = {aic}\")\n",
"print(f\"n_params = {n_params}\")"
2017-06-26 00:09:23 +02:00
]
},
{
"cell_type": "markdown",
2019-01-15 05:36:29 +01:00
"metadata": {},
2017-06-26 00:09:23 +02:00
"source": [
2019-01-15 05:36:29 +01:00
"There's one weight per cluster, but the sum must be equal to 1, so we have one degree of freedom less, hence the -1. Similarly, the degrees of freedom for an $n \\times n$ covariance matrix is not $n^2$, but $1 + 2 + \\dots + n = \\dfrac{n (n+1)}{2}$."
2017-06-26 00:09:23 +02:00
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
2019-01-15 05:36:29 +01:00
"Let's train Gaussian Mixture models with various values of $k$ and measure their BIC:"
2017-06-26 00:09:23 +02:00
]
},
{
"cell_type": "code",
"execution_count": 110,
"metadata": {},
2022-02-19 10:24:54 +01:00
"outputs": [
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 576x216 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
2017-06-26 00:09:23 +02:00
"source": [
"# extra code this cell generates and saves Figure 920\n",
"\n",
2019-01-15 05:36:29 +01:00
"gms_per_k = [GaussianMixture(n_components=k, n_init=10, random_state=42).fit(X)\n",
" for k in range(1, 11)]\n",
2019-01-15 05:36:29 +01:00
"bics = [model.bic(X) for model in gms_per_k]\n",
"aics = [model.aic(X) for model in gms_per_k]\n",
"\n",
2019-01-15 05:36:29 +01:00
"plt.figure(figsize=(8, 3))\n",
"plt.plot(range(1, 11), bics, \"bo-\", label=\"BIC\")\n",
"plt.plot(range(1, 11), aics, \"go--\", label=\"AIC\")\n",
"plt.xlabel(\"$k$\")\n",
"plt.ylabel(\"Information Criterion\")\n",
"plt.axis([1, 9.5, min(aics) - 50, max(aics) + 50])\n",
"plt.annotate(\"\", xy=(3, bics[2]), xytext=(3.4, 8650),\n",
" arrowprops=dict(facecolor='black', shrink=0.1))\n",
"plt.text(3.5, 8660, \"Minimum\", horizontalalignment=\"center\")\n",
2019-01-15 05:36:29 +01:00
"plt.legend()\n",
"plt.grid()\n",
"save_fig(\"aic_bic_vs_k_plot\")\n",
2019-01-15 05:36:29 +01:00
"plt.show()"
2017-06-26 00:09:23 +02:00
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Bayesian Gaussian Mixture Models"
2017-06-26 00:09:23 +02:00
]
},
{
2019-01-15 05:36:29 +01:00
"cell_type": "markdown",
2017-06-26 00:09:23 +02:00
"metadata": {},
"source": [
2019-01-15 05:36:29 +01:00
"Rather than manually searching for the optimal number of clusters, it is possible to use instead the `BayesianGaussianMixture` class which is capable of giving weights equal (or close) to zero to unnecessary clusters. Just set the number of components to a value that you believe is greater than the optimal number of clusters, and the algorithm will eliminate the unnecessary clusters automatically."
2017-06-26 00:09:23 +02:00
]
},
{
2019-01-15 05:36:29 +01:00
"cell_type": "code",
"execution_count": 111,
2017-06-26 00:09:23 +02:00
"metadata": {},
2022-02-19 10:24:54 +01:00
"outputs": [
{
"data": {
"text/plain": [
"array([0.4 , 0.21, 0.4 , 0. , 0. , 0. , 0. , 0. , 0. , 0. ])"
]
},
"execution_count": 111,
"metadata": {},
"output_type": "execute_result"
}
],
2017-06-26 00:09:23 +02:00
"source": [
"from sklearn.mixture import BayesianGaussianMixture\n",
"\n",
2019-01-15 05:36:29 +01:00
"bgm = BayesianGaussianMixture(n_components=10, n_init=10, random_state=42)\n",
"bgm.fit(X)\n",
"bgm.weights_.round(2)"
2017-06-26 00:09:23 +02:00
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The algorithm automatically detected that only 3 components are needed!"
2017-06-26 00:09:23 +02:00
]
},
{
2019-01-15 05:36:29 +01:00
"cell_type": "code",
"execution_count": 112,
2017-06-26 00:09:23 +02:00
"metadata": {},
2022-02-19 10:24:54 +01:00
"outputs": [
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 576x360 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
2017-06-26 00:09:23 +02:00
"source": [
"# extra code this figure is almost identical to Figure 916\n",
2019-01-15 05:36:29 +01:00
"plt.figure(figsize=(8, 5))\n",
"plot_gaussian_mixture(bgm, X)\n",
"plt.show()"
2017-06-26 00:09:23 +02:00
]
},
{
2019-01-15 05:36:29 +01:00
"cell_type": "code",
"execution_count": 113,
2017-06-26 00:09:23 +02:00
"metadata": {},
2022-02-19 10:24:54 +01:00
"outputs": [
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 648x230.4 with 2 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
2017-06-26 00:09:23 +02:00
"source": [
"# extra code this cell generates and saves Figure 921\n",
2017-06-26 00:09:23 +02:00
"\n",
"X_moons, y_moons = make_moons(n_samples=1000, noise=0.05, random_state=42)\n",
2019-01-15 05:36:29 +01:00
"\n",
"bgm = BayesianGaussianMixture(n_components=10, n_init=10, random_state=42)\n",
"bgm.fit(X_moons)\n",
"\n",
2019-01-15 05:36:29 +01:00
"plt.figure(figsize=(9, 3.2))\n",
"\n",
"plt.subplot(121)\n",
"plot_data(X_moons)\n",
"plt.xlabel(\"$x_1$\")\n",
"plt.ylabel(\"$x_2$\", rotation=0)\n",
"plt.grid()\n",
2019-01-15 05:36:29 +01:00
"\n",
"plt.subplot(122)\n",
"plot_gaussian_mixture(bgm, X_moons, show_ylabels=False)\n",
2017-06-26 00:09:23 +02:00
"\n",
"save_fig(\"moons_vs_bgm_plot\")\n",
2017-06-26 00:09:23 +02:00
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
2019-01-15 05:36:29 +01:00
"Oops, not great... instead of detecting 2 moon-shaped clusters, the algorithm detected 8 ellipsoidal clusters. However, the density plot does not look too bad, so it might be usable for anomaly detection."
2017-06-26 00:09:23 +02:00
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Exercise solutions"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 1. to 9."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"1. In Machine Learning, clustering is the unsupervised task of grouping similar instances together. The notion of similarity depends on the task at hand: for example, in some cases two nearby instances will be considered similar, while in others similar instances may be far apart as long as they belong to the same densely packed group. Popular clustering algorithms include K-Means, DBSCAN, agglomerative clustering, BIRCH, Mean-Shift, affinity propagation, and spectral :.\n",
"2. The main applications of clustering algorithms include data analysis, customer segmentation, recommender systems, search engines, image segmentation, semi-supervised learning, dimensionality reduction, anomaly detection, and novelty detection.\n",
"3. The elbow rule is a simple technique to select the number of clusters when using K-Means: just plot the inertia (the mean squared distance from each instance to its nearest centroid) as a function of the number of clusters, and find the point in the curve where the inertia stops dropping fast (the \"elbow\"). This is generally close to the optimal number of clusters. Another approach is to plot the silhouette score as a function of the number of clusters. There will often be a peak, and the optimal number of clusters is generally nearby. The silhouette score is the mean silhouette coefficient over all instances. This coefficient varies from +1 for instances that are well inside their cluster and far from other clusters, to 1 for instances that are very close to another cluster. You may also plot the silhouette diagrams and perform a more thorough analysis.\n",
"4. Labeling a dataset is costly and time-consuming. Therefore, it is common to have plenty of unlabeled instances, but few labeled instances. Label propagation is a technique that consists in copying some (or all) of the labels from the labeled instances to similar unlabeled instances. This can greatly extend the number of labeled instances, and thereby allow a supervised algorithm to reach better performance (this is a form of semi-supervised learning). One approach is to use a clustering algorithm such as K-Means on all the instances, then for each cluster find the most common label or the label of the most representative instance (i.e., the one closest to the centroid) and propagate it to the unlabeled instances in the same cluster.\n",
"5. K-Means and BIRCH scale well to large datasets. DBSCAN and Mean-Shift look for regions of high density.\n",
"6. Active learning is useful whenever you have plenty of unlabeled instances but labeling is costly. In this case (which is very common), rather than randomly selecting instances to label, it is often preferable to perform active learning, where human experts interact with the learning algorithm, providing labels for specific instances when the algorithm requests them. A common approach is uncertainty sampling (see the _Active Learning_ section in chapter 9).\n",
"7. Many people use the terms _anomaly detection_ and _novelty detection_ interchangeably, but they are not exactly the same. In anomaly detection, the algorithm is trained on a dataset that may contain outliers, and the goal is typically to identify these outliers (within the training set), as well as outliers among new instances. In novelty detection, the algorithm is trained on a dataset that is presumed to be \"clean,\" and the objective is to detect novelties strictly among new instances. Some algorithms work best for anomaly detection (e.g., Isolation Forest), while others are better suited for novelty detection (e.g., one-class SVM).\n",
"8. A Gaussian mixture model (GMM) is a probabilistic model that assumes that the instances were generated from a mixture of several Gaussian distributions whose parameters are unknown. In other words, the assumption is that the data is grouped into a finite number of clusters, each with an ellipsoidal shape (but the clusters may have different ellipsoidal shapes, sizes, orientations, and densities), and we don't know which cluster each instance belongs to. This model is useful for density estimation, clustering, and anomaly detection.\n",
"9. One way to find the right number of clusters when using a Gaussian mixture model is to plot the Bayesian information criterion (BIC) or the Akaike information criterion (AIC) as a function of the number of clusters, then choose the number of clusters that minimizes the BIC or AIC. Another technique is to use a Bayesian Gaussian mixture model, which automatically selects the number of clusters."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 10. Cluster the Olivetti Faces Dataset"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"*Exercise: The classic Olivetti faces dataset contains 400 grayscale 64 × 64pixel images of faces. Each image is flattened to a 1D vector of size 4,096. 40 different people were photographed (10 times each), and the usual task is to train a model that can predict which person is represented in each picture. Load the dataset using the `sklearn.datasets.fetch_olivetti_faces()` function.*"
]
},
{
"cell_type": "code",
"execution_count": 114,
"metadata": {},
"outputs": [],
"source": [
"from sklearn.datasets import fetch_olivetti_faces\n",
"\n",
"olivetti = fetch_olivetti_faces()"
]
},
{
"cell_type": "code",
"execution_count": 115,
"metadata": {},
2022-02-19 10:24:54 +01:00
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
".. _olivetti_faces_dataset:\n",
"\n",
"The Olivetti faces dataset\n",
"--------------------------\n",
"\n",
"`This dataset contains a set of face images`_ taken between April 1992 and \n",
"April 1994 at AT&T Laboratories Cambridge. The\n",
":func:`sklearn.datasets.fetch_olivetti_faces` function is the data\n",
"fetching / caching function that downloads the data\n",
"archive from AT&T.\n",
"\n",
".. _This dataset contains a set of face images: http://www.cl.cam.ac.uk/research/dtg/attarchive/facedatabase.html\n",
"\n",
"As described on the original website:\n",
"\n",
" There are ten different images of each of 40 distinct subjects. For some\n",
" subjects, the images were taken at different times, varying the lighting,\n",
" facial expressions (open / closed eyes, smiling / not smiling) and facial\n",
" details (glasses / no glasses). All the images were taken against a dark\n",
" homogeneous background with the subjects in an upright, frontal position \n",
" (with tolerance for some side movement).\n",
"\n",
"**Data Set Characteristics:**\n",
"\n",
" ================= =====================\n",
" Classes 40\n",
" Samples total 400\n",
" Dimensionality 4096\n",
" Features real, between 0 and 1\n",
" ================= =====================\n",
"\n",
"The image is quantized to 256 grey levels and stored as unsigned 8-bit \n",
"integers; the loader will convert these to floating point values on the \n",
"interval [0, 1], which are easier to work with for many algorithms.\n",
"\n",
"The \"target\" for this database is an integer from 0 to 39 indicating the\n",
"identity of the person pictured; however, with only 10 examples per class, this\n",
"relatively small dataset is more interesting from an unsupervised or\n",
"semi-supervised perspective.\n",
"\n",
"The original dataset consisted of 92 x 112, while the version available here\n",
"consists of 64x64 images.\n",
"\n",
"When using these images, please give credit to AT&T Laboratories Cambridge.\n",
"\n"
]
}
],
"source": [
"print(olivetti.DESCR)"
]
},
{
"cell_type": "code",
"execution_count": 116,
"metadata": {},
2022-02-19 10:24:54 +01:00
"outputs": [
{
"data": {
"text/plain": [
"array([ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1,\n",
" 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3,\n",
" 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5,\n",
" 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6,\n",
" 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8,\n",
" 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 10, 10,\n",
" 10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11,\n",
" 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 13, 13,\n",
" 13, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15,\n",
" 15, 15, 15, 15, 15, 15, 15, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,\n",
" 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 18, 18, 18, 18, 18, 18, 18,\n",
" 18, 18, 18, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 20, 20, 20, 20,\n",
" 20, 20, 20, 20, 20, 20, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 22,\n",
" 22, 22, 22, 22, 22, 22, 22, 22, 22, 23, 23, 23, 23, 23, 23, 23, 23,\n",
" 23, 23, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 25, 25, 25, 25, 25,\n",
" 25, 25, 25, 25, 25, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 27, 27,\n",
" 27, 27, 27, 27, 27, 27, 27, 27, 28, 28, 28, 28, 28, 28, 28, 28, 28,\n",
" 28, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 30, 30, 30, 30, 30, 30,\n",
" 30, 30, 30, 30, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 32, 32, 32,\n",
" 32, 32, 32, 32, 32, 32, 32, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,\n",
" 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 35, 35, 35, 35, 35, 35, 35,\n",
" 35, 35, 35, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 37, 37, 37, 37,\n",
" 37, 37, 37, 37, 37, 37, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 39,\n",
" 39, 39, 39, 39, 39, 39, 39, 39, 39])"
]
},
"execution_count": 116,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"olivetti.target"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"*Exercise: Then split it into a training set, a validation set, and a test set (note that the dataset is already scaled between 0 and 1). Since the dataset is quite small, you probably want to use stratified sampling to ensure that there are the same number of images per person in each set.*"
]
},
{
"cell_type": "code",
"execution_count": 117,
"metadata": {},
"outputs": [],
"source": [
"from sklearn.model_selection import StratifiedShuffleSplit\n",
"\n",
"strat_split = StratifiedShuffleSplit(n_splits=1, test_size=40, random_state=42)\n",
"train_valid_idx, test_idx = next(strat_split.split(olivetti.data,\n",
" olivetti.target))\n",
"X_train_valid = olivetti.data[train_valid_idx]\n",
"y_train_valid = olivetti.target[train_valid_idx]\n",
"X_test = olivetti.data[test_idx]\n",
"y_test = olivetti.target[test_idx]\n",
"\n",
"strat_split = StratifiedShuffleSplit(n_splits=1, test_size=80, random_state=43)\n",
"train_idx, valid_idx = next(strat_split.split(X_train_valid, y_train_valid))\n",
"X_train = X_train_valid[train_idx]\n",
"y_train = y_train_valid[train_idx]\n",
"X_valid = X_train_valid[valid_idx]\n",
"y_valid = y_train_valid[valid_idx]"
]
},
{
"cell_type": "code",
"execution_count": 118,
"metadata": {},
2022-02-19 10:24:54 +01:00
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"(280, 4096) (280,)\n",
"(80, 4096) (80,)\n",
"(40, 4096) (40,)\n"
]
}
],
"source": [
"print(X_train.shape, y_train.shape)\n",
"print(X_valid.shape, y_valid.shape)\n",
"print(X_test.shape, y_test.shape)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"To speed things up, we'll reduce the data's dimensionality using PCA:"
]
},
{
"cell_type": "code",
"execution_count": 119,
"metadata": {},
2022-02-19 10:24:54 +01:00
"outputs": [
{
"data": {
"text/plain": [
"199"
]
},
"execution_count": 119,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from sklearn.decomposition import PCA\n",
"\n",
"pca = PCA(0.99)\n",
"X_train_pca = pca.fit_transform(X_train)\n",
"X_valid_pca = pca.transform(X_valid)\n",
"X_test_pca = pca.transform(X_test)\n",
"\n",
"pca.n_components_"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"*Exercise: Next, cluster the images using K-Means, and ensure that you have a good number of clusters (using one of the techniques discussed in this chapter).*"
]
},
{
"cell_type": "code",
"execution_count": 120,
"metadata": {},
2022-02-19 10:24:54 +01:00
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"k=5\n",
"k=10\n",
"k=15\n",
"k=20\n",
"k=25\n",
"k=30\n",
"k=35\n",
"k=40\n",
"k=45\n",
"k=50\n",
"k=55\n",
"k=60\n",
"k=65\n",
"k=70\n",
"k=75\n",
"k=80\n",
"k=85\n",
"k=90\n",
"k=95\n",
"k=100\n",
"k=105\n",
"k=110\n",
"k=115\n",
"k=120\n",
"k=125\n",
"k=130\n",
"k=135\n",
"k=140\n",
"k=145\n"
]
}
],
"source": [
"from sklearn.cluster import KMeans\n",
"\n",
"k_range = range(5, 150, 5)\n",
"kmeans_per_k = []\n",
"for k in k_range:\n",
" print(f\"k={k}\")\n",
" kmeans = KMeans(n_clusters=k, n_init=10, random_state=42)\n",
" kmeans.fit(X_train_pca)\n",
" kmeans_per_k.append(kmeans)"
]
},
{
"cell_type": "code",
"execution_count": 121,
"metadata": {},
2022-02-19 10:24:54 +01:00
"outputs": [
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 576x216 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"from sklearn.metrics import silhouette_score\n",
"\n",
"silhouette_scores = [silhouette_score(X_train_pca, model.labels_)\n",
" for model in kmeans_per_k]\n",
"best_index = np.argmax(silhouette_scores)\n",
"best_k = k_range[best_index]\n",
"best_score = silhouette_scores[best_index]\n",
"\n",
"plt.figure(figsize=(8, 3))\n",
"plt.plot(k_range, silhouette_scores, \"bo-\")\n",
"plt.xlabel(\"$k$\")\n",
"plt.ylabel(\"Silhouette score\")\n",
"plt.plot(best_k, best_score, \"rs\")\n",
"plt.grid()\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 122,
"metadata": {},
2022-02-19 10:24:54 +01:00
"outputs": [
{
"data": {
"text/plain": [
"120"
]
},
"execution_count": 122,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"best_k"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"It looks like the best number of clusters is quite high, at 120. You might have expected it to be 40, since there are 40 different people on the pictures. However, the same person may look quite different on different pictures (e.g., with or without glasses, or simply shifted left or right)."
]
},
{
"cell_type": "code",
"execution_count": 123,
"metadata": {},
2022-02-19 10:24:54 +01:00
"outputs": [
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 576x252 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"inertias = [model.inertia_ for model in kmeans_per_k]\n",
"best_inertia = inertias[best_index]\n",
"\n",
"plt.figure(figsize=(8, 3.5))\n",
"plt.plot(k_range, inertias, \"bo-\")\n",
"plt.xlabel(\"$k$\")\n",
"plt.ylabel(\"Inertia\")\n",
"plt.plot(best_k, best_inertia, \"rs\")\n",
"plt.grid()\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The optimal number of clusters is not clear on this inertia diagram, as there is no obvious elbow, so let's stick with k=120."
]
},
{
"cell_type": "code",
"execution_count": 124,
"metadata": {},
"outputs": [],
"source": [
"best_model = kmeans_per_k[best_index]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"*Exercise: Visualize the clusters: do you see similar faces in each cluster?*"
]
},
{
"cell_type": "code",
"execution_count": 125,
"metadata": {},
2022-02-19 10:24:54 +01:00
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Cluster 0\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 360x79.2 with 3 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Cluster 1\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 360x79.2 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Cluster 2\n"
]
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAOsAAABPCAYAAAAKhzItAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAAsTAAALEwEAmpwYAAAuYUlEQVR4nO2dyY9k2XXevxfzPORcPVR2N0iZNEiCMOyNIcCC97K98NaA/ghtvNNCWlgQbBiwvfDasAETXHljAQasBVf0jqRgN9ASqruqK7MyMzLm+UWEF9m/m997nZUR1WRXq4A4QCCHiHjv3nPP8J3h3hdtNhvtaU97+rtPme96AHva0552o72y7mlP7wjtlXVPe3pHaK+se9rTO0J7Zd3Tnt4R2ivrnvb0jtBeWfe0p3eEvlVljaLoX0dR9H+iKBpEUXQdRdH/iKLoR498/j9HUbSJouiPv81x/a5p2zyjKMpHUfRvoij6VRRF4yiKLqIo+q9RFD39Lsf9prSfZ3j/O5nnt+1Z/0DSf5L0jyX9U0mxpP8VRdFB+oNRFP1LSf9I0stveUzfBv2BHp9nRdI/kPRnX/3855I+lPQ/oyjKvfXRfnP6A+3nKX1X89xsNm/tJakmaSXpD1P/P5f0paQfSnom6Y/f5rje1jxTn/n7kjaSfvxdj3c/z3djnm87Zq3rzpt3+cdXlui/SfrTzWbzf9/yeL4t+to8H6DGVz8f+8zfddrP856+9XlGX1mFt0JRFP13Sd+X9A83m83qq//9maSfbDabP/zq72eS/sNms/mLtzaw3zE9NM/U+wVJ/1tSZ7PZ/LO3Pb7fFe3nGd5/K/N8a3FEFEX/VtLvS/p9U9R/IumPJP30bY3j26aH5pl6Pyfpv0hqSXqXBXg/T73leb4lzP/vJF1I+kHq/38iaa27AJ7XRnfxwYvvOlb5Xc3T3s9J+pmk/yfp7Lse736e79Y838aE/72kV5J++MB7J5J+lHp9KekvJP2973qxflfz/Or9vKSfS/pU0pPverz7eb578/xWYXAURf9R0r+S9C8kdaMoOvvqrdFmsxltNpsrSVep7ywlXW42m0+/zbH9LmnbPL+CSj/TXWnqDyVt7DP9zWYzfdtj/ia0n+d3PM9v2TptXvP6k0e+80zvWOlm2zwlffTIZ/7oux7/fp7vxjzfajZ4T3va0zenfW/wnvb0jtBeWfe0p3eE9sq6pz29I7RX1j3t6R2hvbLuaU/vCD1aZx2NRptM5k6f1+t14r1sNqtMJqMoirRer+/Ty1Gk1equK2u1Wmm9XiuOY63Xa63Xa2UyGa1WKy2XSy2XS81mM0lSPp/XcrkM18lkMlosForjWJvNJry3XC41mUyUy+W0XC61WCw0nU41mUx0eXmpn//85+r1emq32zo9PdVf/uVfRtuY8LOf/WzTarXUaDRUrVa1Wq00mUw0nU61WCy0Xq+VzWZVrVZVKpVUKpWUy+VUKpVUKBSUy92xkfnDl1wupyiKtNlstFqtNJ/PFcexFotF4A3fi+NYq9VKm81G6/Vaq9Uq8InPrtfrMNfxeKzFYqHRaKTr62v9+Z//+dZ5fvbZZ5t8Pq98Pq9cLqdMJqNsNhvWMv2SFObCPKgeuFywRoyb7/Od9XqtxWKh5XIZ7rVarQIvmPtsNlMcx5rNZmFenU5Hf/VXf6Vf/vKXqtfr+uu//utH5/nrX/96k8vllM1mVSwWlc1mlc/nwxziOFYcx5rP51osFlosFmE+6TkzVubta5TJZBJ8ZL24JrKAjC+Xy3BvPjOfzzWfzzUajXR1daVf/OIX+s1vfqN+v//gHHdqimDgCBbK+RChqHwWQWMyTBrFQ2BZNIQym80GQWVh1+v115Rhs9loPp9rvV4rl8uF31erlfL5/C7TUz6fV6FQEIJcLpdVKpU0mUwUx7GiKFKhUFC1WlWhUFA2mw3jyOfzX1tU5s44/XPL5VJRFAUj4J+VFHiCcGUymYShcmXKZrMqlUpqNBqvnZtTHMcJofR5PEQomysd//c19ve4ltcHMdKFQiF8hmtwfdZztVol5p7L5VSr1ZTJZDSfz7fOEWeRyWTCfZEn1oH1dgVMz4u/3RnlcrlgnOCfK63Luq8pn2cc+Xw+WT+NorCO6TE4PaqsXJyBc1MWAIYioAzUPSjWMu05+CyCCFNdoRFovoOSQ64MklQoFIK3jeNY5XJ56+LCdF+sTCYTPOhms1GxWFQulxMW2wWNz7un4f8YOYQd4+HzQBi4Xj6f13q9DnyDlygx12MM+XxepVJpp3lyL/fU8M/nxTxciV2wMMJ8jrVxvrjBgUdOKOLrjADjymQyqtfryufzAYU9Rn4fV3w3TCgY/GCsPh+fNw4DmeZ7bnR8rs5L15soijSdThOGKI7jIFvlcvmbK6uTT4oLMgm3KMAdJuQeEyXkWq60KKt7W7wkTEG5maBfH2PA/9frtarV6k5zK5VKCXiO98RyFgqFINBODg0xMu6N4BECxGeAx1zDlRV+8nk3PmnBcDi2Czk09ZAlm82Ge2ez2SCQbkQZnxtPVzS+KykYWRSDe/l1IA91/D08kCQ1m82AmraRG2/m5Ars8osSexjjCu7zRL7cGPvaM0+XG0kJz+1jSa8DKOm3UlZukM1mA7NZlOVyqfF4rH6/r9lsFpQHC8iC5XI5FQoFRVGk+Xz+NS8ExndIK90tJIxDiOfzuYbDYWAqysT7hUIhQOJdPSvK41DdLfE2iOfCyE9imfTCekzusBkL7MLqAp/NZoPCeowJH3ahtMdzI+MCxdoATd1Y8h48caXlf8vlUtKdoKL8HqNOJpOEYfCcB/G8r0GpVFKxWEyEWK8jV8x03PzQmjnkTq+T5w144Sj46V4bcvjs/EkjS1975DjtEJy2wuB0QgEhi+NY3W5Xg8FAl5eX6nQ6wd1PJpNgXbGO1WpVjUYjJGawZnhTCM/MwpFsYIGBEpPJRNlsVvV6Xc1mMwTytVpNklSr1XZWVk+0OOR2L+meQVJACB5L+2eBWcSZDoe4jiMOPpv+2xWJWAvkwkLvqqyuoB7CAM1ccRFMJ485MRhuyDDIzIv5TKdTzedzTSYT9Xo99Xo9DYfDMKf1eq35fB5yBXg7ZI+49XV5kvQcGY8bG2T2oc+7t8Oo8DOO48CLhxKA0r1hfUhBSWZNp9PAF0+qpXMc6MVD9KiyImhOLGS/31e321W329WrV680GAw0mUy0XC41n881m82CdcQKFYtF1et1nZycBMXNZDIJC0x2l6xvv9/Xzc2NRqNRSJDAhGKxGCw1461Wq6pWqzo8PNw5lvPkmceHbolRZhaFxeR70r03Ilnl3tIhLd8djUYhNuU63BvFROB4Ma5v4lkdys3n84RAudeCp5PJRMPhUOPxOIQHlUpFzWZT9XpdxWIxxMyVSkWVSiUkT2azWZCHXq+nTqej4XCobrer4XCowWAQQgLGVigUVKvVgrJiPAeDgarV6k7KKt0bJRKUeEKUBZ55oshhKWvG/TzDm8/nw3VYM9bXM80oKDyezWaaz+cJT866MU6vLDxEjyorg/VsbBzHmk6n6nQ6ur29DT/xdtPpVLPZLHhWbp7NZjWbzTSbzZTP55XJZFSpVFQulxPp/OVyqel0qvF4rG63m7DErggwdTgcajKZBKUvFAp67733dHZ2pmKxuNPiuvV8KGnmTHdoHkVRSD45jMKrFwqFYHxYwOFwGBYOoSWEQGCkO48Df8hgklH2EgECvQvhRYfDoXq9XjCqGACuRfmEz87n8xAOkbWs1WoqlUoBMSH41WpV6/Va4/E4GPDBYKCbmxv1ej2NRqPE9TabjcrlckiuZLPZUNbIZDKazWYaDAaq1+s7wWAvj1AykfQ1I4zndx449KcqkM/nE16Uch3XYx1AdtPpNPBtMBgEvvA5kGW1Wk2El3zudZl5aQdlxRIBbVEmFGk6nQamZzKZIKQwDI+Ap0EgZrOZKpVKeA9Fnc/nGo/Hurm50e3trcbjcVCAXC6narWqcrmcsGYsCrDx9PRUx8fHO3ucwWCg0WgUjI4nClarVRAwFgRrXSgUVK/XQ0xVLBZVKpVUr9d
"text/plain": [
"<Figure size 360x79.2 with 4 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Cluster 3\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 360x79.2 with 4 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Cluster 4\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 360x79.2 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Cluster 5\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 360x158.4 with 6 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Cluster 6\n"
]
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAOsAAABPCAYAAAAKhzItAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAAsTAAALEwEAmpwYAAAytUlEQVR4nO2dy4+c55Xen6/u96quvrGbFCVRlq0eSpqRZMu2pIXGC8fwODPArDIzi1lNNvkLsggQIFk7yCLBbBzMYlb2IsjEGMRwYmEwGBmyLpQvpEVSBJtkd7Mv1dV1v1+yaP9OnyqR3SXBuhCoF2g02V39fd/7nttznnPe9wvG47HmYz7m44s/Qp/3A8zHfMzHbGNurPMxH4/ImBvrfMzHIzLmxjof8/GIjLmxzsd8PCJjbqzzMR+PyJgb63zMxyMyPlVjDYLg3wdB8HYQBLUgCA6CIPjfQRA8O/WZ/xQEwQdBEDSDIDgKguD/BUHwyqf5XL/vMZ/nxGfm8/yUxqcdWV+X9N8lvSLpW5IGkv5vEARF95nrkv6dpOckvSbptqT/EwTB6qf8bL/P8brm82TM5/lpjfF4/Jl9ScpIGkr616d8JidpLOlffZbPNp/nfJ5f9Hl+1jlrVsfR/OhBvwyCICbp30qqSXr/s3us3/uYz1Pzef7ex2fsoX4o6Yqk8NTPvyepIWkkaVvSy5+3N53Pcz7PL9o8P8sJf1/SjqRLD/hdWtKXJH1D0g8kbUpa+7yFNJ/nfJ5fpHl+VhP+L5LuS3pmxs/flPQfPm9Bzec5n+cXaZ4RfcojCIL/KunfSHp9PB5/MOOfhSTFP72n+v2P+TxPHfN5/j7Gp+yZ/puOk+5vSTrnvjK/+31O0n+W9HVJFyW9JOl/SOpKev7z9qzzec7n+UWa56c96fFDvv7j736fkvQ/dZwTdH/3/X9J+vrnLbD5POfz/KLNM/jdzedjPubjCz7mvcHzMR+PyJgb63zMxyMy5sY6H/PxiIy5sc7HfDwiY26s8zEfj8g4tSni7//+78eDwUCSFAqFNBqN1Gg0NBgMNB6PFY/HFY/HFQ6HFQSBfSYcDhvdHIlEFI8f14mHw6FGo5HG47GGw6FCoWNfEYlE7G+CILDvw+FQkUhEo9FIw+FQktTpdCRJ4XBYnU5H4/FY3W5X/X5f0nEpKplMKpFIKBQK6a//+q+Dsxbhb//2b8f5fF6hUMiemWcbDAYajUYKgsC+GKPRSKPRyO7Lv4fDoQaDgYIgUDgcVigUUiwWUzKZtOuOx2O7digUUjQatXWIRCJ2/cFgoHa7PfEc/X5fN27c0BtvvKHd3V2NRiPdvHnzzHm+/vrr41deeUUXL15ULpeze8diMUUiEfV6PVtbnmV6jMdjpVKpCZkzd+adTCYVjUYVjUY1HA7V7/fV6/VM7pFIRLFYTOPxWLFYTN1uV+12267f6XRM/rFYTI1GQ1euXNGbb76pf/7nfz51nq+++ur4ueee01NPPaW1tTVFo1FJMln0ej11Oh3Tw2md5fn7/b4Gg4HJJhQK2XyHw6GCIFA8HlcQBIpGowqCwK4ZiUQUiURsrsyXa7JO/X5fkUhE0WhU5XJZ165d07vvvquf/OQnD5zjqcbK4jKJTqejdrtthtPtdu1hQqGQfcViMUmyCaIAKDeCRRjeALwRD4dD9Xo9U1b+j5D5O4yEyfOMyWTytOnZSKfTisVidm++UGaMFMND+L4GFo1GzcmMRiNzJPxdPB6fcAIYHoJnvbgHCs7c/AiFQioWi1pYWNDe3p45sLPG+vq6FhYWJowNOSPb0WikdDptz+hLeyhqJBKxteX/jHA4rGg0avJmvqypN3CcfrPZVLPZtADQ7XYnDCAej+v8+fNaWFg4c475fF7Ly8sqFApKJBK2fjikaDSqRCJhsvYBwgeFIAgm9NjrgiTF43Fbg3A4bHL0DjscDtsX64lzCoVCikQi9jepVErr6+u6e/fuQ+d2qrFiUHh3hMmD9Xo9dbtdU2YWI5PJKJPJaDQaTUQLFsRHCZQBIYZCIfPwrVZLzWZT1WpV7XbboijRM5VKKRaLfWQxx+Ox+v3+AyPDAxfhd0bkvaN3KgjUe1WPBPg/i4/S8VwoxoOMnf9LJ9F2OBxatOl2u/Y7vHg4HFY2m9XKyoq2t7cF+jlrrK6uKp/Pm6Njbv1+X7Vaze7VbDbtM9wXhIQyEznRE+SJnAeDgRljv9+3CMuzjsdjk/NoNFKv17P/e6Ni3RcWFnThwoUz55jP55XL5SaiIevNfSVNyGt6DAYDM1T0AQPDMU+jCy8j5uAdYq/XM/TnP4vOhcNhFQoFPfbYYw+d26nGOhgMzCC73a4ZhIeFCIAbAj+z2awikYhSqZSSyaSGw6H9DgNHgPF43DxpNBq1yMR3lIp7oDBAlEwmY5AlCAJT+FkHcAYDZYGbzaY5iVgsZo7BKwHrMRqNlEgkTFklfUSQKDFC95692+2q0+mYQFkb5k905v7RaNQMb1anlM1m7RlZo36/r6Ojo4n7cF+enblfuHBhIhJ5p41svFMbjUbmcHq9no6OjlStVk2Put2uksmkRXL+htTHK3w8HtfFixdnkmU+n1cymVQ4HDaHwdqTMiEnj6TG47E51FAoZM4J+UsnKA7H5P+O78wPPQARNhoN+1s+yxyZ7/nz5x86tzONlcniScHiREgUBeONRqNKJpNKJpOW0yaTSXU6HUWjUYMBw+FwAr55T4jAfb4L1OIzsVhMmUxG6XRa2WxWo9HIFB0nM+vweTHG1G63ValUDHYjQK+Q5CLe407DfR+VcTg8JxxAvV436N7v95VIJJRKpSb+BocoHUeFWCymdDptSjPrPFHS8XisdrttDqnf75sSD4dDSz1ACeT02WxWuVxOyWTSomSz2VQ4HLbI7GVExGw2mzo6OtL+/r6lCIPBQKlUSqurq0omkxOpRSgUUqPRsLmGw2EtLy+fOcdarWaQF13w863VapaXJpPJiehKCse80Pd+v69QKGTX8hHTpyk8N4bLmqJbrAVIC9vwqWI2m324/M4SLt4cpSQ6jkYjg6TeA2LI3ByIw/9TqZRGo5GazeYE2YCStFottVotU2qfuxFRWMRkMqlCoWCenGchSnrYcdrAA2JgjUZDR0dHhiZAEDwXsDebzWp1ddVINq7l7+9JNjxpv983Izk4OND+/r6q1aoZZCqV0srKitLp9ERu7wmaRCKhTCZjcpl1nsiJHLXdbisIAqXT6QkH451yKBRSPp9XKpVSLpdTNpudgMS9Xk/RaNRIInTHQ8JIJKJ0Oq1isah6vS5JE06LXLfb7VpEBI4i81k4iHa7bdHRO7p6va5SqWTPxLwxLIymWCyq3+8rCAKlUilz4NPpEAjO8w6DwUCNRkPVanUioMXjcZMTuoHhM+A0SC0eNE411kQiYRARZfHG1Wg0DCYyoU6no1arJemYuEkkEhYpxuOxEomEMZEQCRABjUZDjUbDIFm73Va5XLaFZSIYBk6DyICis/APykceNnAM1WrVnIPPKRCsz9lxStls1ogbr+A+d/MCC4VCarVaJuxkMjmRJ+OdPcRHWaRj44jH48pkMkokEh9rjigXjGsmk1EkElEmk1EqlTK4BiwnEgwGAx0eHioWixliIs1B+SD1gNk4BBBVIpFQOBxWPp+f4AcSiYSy2azNFY6k2+1OGC1Q9LThuRBgLxHV59ZBEJiujUYjQ4I4okQiYXk7SMunBszF20Gz2VSpVFK5XJ5IYQgqqVTKdDIWi5nuSicO7TSUdKqxgvuBoiTJ5Kbdble1Wk39fl/tdlv1el21Wk2NRkPj8VjpdFrpdNrYy7W1NcXjcaXTaRO4V+hWqzUBzTqdjsrlssGhbDarZDI5AQuJDh7CEUFmEa6kCeECmWKxmLLZrDGzeH9PaMViMeVyOeVyOYM0QCEiBFAfx9fv9ydIMklmJNJJ9Esmk8rn88pmsyZ41gfHkU6nlclkJjz0WcOXy7zhAQtrtZrJ8fDwUOVy2ZxNOp1Wp9MxmMi9M5mMQVucR6PRMANBP/b29tRsNg26JxIJg/LJZFK5XE7ScXkuHo+rWq1OoKN
"text/plain": [
"<Figure size 360x79.2 with 4 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Cluster 7\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 360x79.2 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Cluster 8\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 360x79.2 with 2 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Cluster 9\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 360x79.2 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Cluster 10\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 360x79.2 with 2 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Cluster 11\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 360x79.2 with 3 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Cluster 12\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 360x79.2 with 2 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Cluster 13\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 360x79.2 with 4 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Cluster 14\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 360x79.2 with 2 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Cluster 15\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 360x79.2 with 4 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Cluster 16\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 360x79.2 with 3 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Cluster 17\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 360x158.4 with 6 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Cluster 18\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 360x79.2 with 2 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Cluster 19\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 360x79.2 with 5 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Cluster 20\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 360x79.2 with 3 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Cluster 21\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 360x79.2 with 4 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Cluster 22\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 360x79.2 with 3 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Cluster 23\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 360x79.2 with 4 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Cluster 24\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 360x79.2 with 2 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Cluster 25\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 360x79.2 with 3 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Cluster 26\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 360x79.2 with 5 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Cluster 27\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 360x79.2 with 2 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Cluster 28\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 360x79.2 with 4 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Cluster 29\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 360x79.2 with 2 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Cluster 30\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 360x79.2 with 3 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Cluster 31\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 360x79.2 with 2 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Cluster 32\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 360x79.2 with 3 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Cluster 33\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 360x79.2 with 3 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Cluster 34\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 360x79.2 with 5 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Cluster 35\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 360x79.2 with 3 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Cluster 36\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 360x79.2 with 2 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Cluster 37\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 360x79.2 with 3 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Cluster 38\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 360x79.2 with 2 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Cluster 39\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 360x79.2 with 2 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Cluster 40\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 360x79.2 with 3 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Cluster 41\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 360x79.2 with 4 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Cluster 42\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 360x79.2 with 3 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Cluster 43\n"
]
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAALEAAABPCAYAAACksSSsAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAAsTAAALEwEAmpwYAAArO0lEQVR4nO19y49b9/Xf516+Ly/f5AxJjUYPy2Mp1ihP27Cdn2E3iIEgKdCs2qKb3yKLBCnQfdF/IF10l0WQTRZpGxRBgQZZBF14kaZOYiuJnSgjyYpeI8+Lw+fl616Sl7eLyefokJZmKMe2rHoOMNCIw8f3fL/n+TnnfGkEQYBjOqYnmczHvYBjOqZ/lI6F+JieeDoW4mN64ulYiI/piadjIT6mJ56OhfiYnng6FuJjeuLpYxdiwzBeMQzjF4ZhbBmGERiG8c8PeM6aYRj/0zCMtmEYA8Mw/mgYxoWPe20fJX0W+Py08vhJWGIbwBUA/wHAcP6PhmGcAfB/AdwG8C8AXATwnwD0PoG1fZT0WeDzU8mj8UlW7AzD6AH490EQ/EQ99t8ABEEQ/LtPbCEfM30W+Pw08fhYY2LDMEwA/xLAhmEYvzIMY98wjLcNw/jXj3NdHzV9Fvh8nDw+7sRuCQcu6j8C+N8Avg7gvwP4r4ZhfOtxLuwjps8Cn4+Nx/DH+eYLEJXofwVB8F/+/vs7hmF8BcD3Afzy8SzrI6fPAp+PjcfHbYnrACYANuYevwpg9ZNfzsdGnwU+HxuPj1WIgyAYAXgbwDNzf1oDcPeTX9HHQ58FPh8njx97OGEYhg3g3N//awJYNQzjCwCaQRBsAvjPAP6HYRj/B8AbAF4D8G8A/KuPe20fJX0W+PzU8hgEwcf6A+BVAMEDfn6invPPAN7DAfb4ZwD/9uNe1zGf///w+InixMd0TB8HPe7E7piO6R+mYyE+pieejoX4mJ54OhbiY3ri6ViIj+mJp0Nx4jNnzgThcBjLy8t47rnnkM1mEY1GkUwmEQ6HEY1GEY/HEY1GEY1GEQ6HEYlEEIvFEIvFYJomQqEQJpMJDMNAKBSaeX/DMAAA0+kUoVAI4XAYpmnCNO/rlmmamE6n8jz+O5lMMJ1OMZ1O4XkeRqMRfN/HdDrF/v4+bt26hRs3buCnP/2pcdQmXLx4MdAozXQ6heu6iMVi+Na3voVisQjbtpFMJhGLxRCNRhGLxWAYBqLRKCKRCCKRCIADyJJ8AcBoNJrhi68NhUIwDAO+78vr+NpIJIJwOCyPT6dTmKYJ3/cxmUzg+z7G47E83/d9vPDCC0fyWalUgng8Ds/zcPLkSbzyyitIJpNIp9OIx+PyQx7JG9cciUTk83iWQRDA930EQYBwOCz/kgfDMAi9yWt5jqFQCNPpFL7vy/PG47GcJ6lWq+HmzZv461//ip/85Ccf4PNQIQ6Hw/KBPBj+S6ELhUJyQHrxpmnK72ReH8pkMpn5HL6XYRgzQgAcCBVfR2ZN05TnhcNhEepwOAzbtmFZlgjCUTQej4U3/Z4AEI1GRRnJK/mgYvJA9SFy33jAPEgeGgWTr9ePU0ApBPxMbQQmkwlM05S9WIQGgwHi8bicjeZXnxfPgQJK4jlzveSRfPLvfK02XuRvNBrJa7WscP/1fpLS6TQymcxD+Tz0lHlo/CDNNDf3QYvma7nwUCgkB6kFUi+cj/P5XPBkMhHrQ6IF1ILseZ6sL5lMolKp4NatW0edKwCg3W7LIZGvVCoF13URj8cBHAj6eDyeESj+zj3iY5FIRCwK94b8maaJ0Wg0c1hawfle9DC02tw/vecPUvjDyPM8+L4vlpZrJR8ULp4N100ln1cYnhcNEhV7PB7Lmvn+VJpIJILpdIpoNCoehcKs+efe+L6PeDyO1dVV1Gq1B/J1qBCPx+OZkEEzzcXykOatzWQykcVoS8VN0Yc6f5jcZL7WMAyx1nQ5tLoUulAoJIIeCoVQKBSwtra20OHSomnr2el0kE6nZc38GY/HolgUVh1SxeNx4X8wGMwIv7Z+5G9eCCKRCDzPkzCMAq8PWp8PhWURCoVC6Pf7SCQSssfc18lkIkrH9ZMnz/NmDAxDScMwZO2j0QiTyUT+zvPUfOvQYTQaiULq19LbApgxiolEAufPn38gX4cKca/XQywWQyqVEiFmeEAh1dZg3urqeI9xMhfJAwIgrjUSiSAUCkm8SetOweHztLXgc7U15yafPHlyocONRqPyO3npdDo4efIk6vU6wuEwstmseCQKIBVZH04sFjvY2L+vwXXdmfVSKAeDgSgnY8XBYIDhcIhOp4NQKCTrCofDiMfjSCaTSCQSSCaTst/8+yJkWRZc10UQBEgkEiJEnufNCJu2zOSLYRENBuVBh4ZUSFpcypA2XJQXnul4PP7Ae9u2LYpFmQCATCbzQL4O5Z6Lsm1bNtn3fQyHQ0nwxuOxCCgXTheorSmTBABiwcLhMEajkSQ/ZGg4HCIIAgyHQ7F0vV5PNiIUCiGZTGI6ncompVIpsS7xeByhUAipVGqhwy2Xy6JUtLKpVAqRSATb29uIxWKy6ZFIRJQym80ilUpJoksLQ7caDoeRSCRkL13XxXA4RK/XE4Env/1+H71eD4VCAcvLyyJkzWYTu7u76Pf7GAwGiEQiSKfTyOfzSKfTsG17RgkPI1pyWnzHcdBoNDCZTJBIJBCPxyWBZYKXSqWEX34OLb9pmjNJKhVkNBqJ8rquC8uyABwo8GAwkLCr0+mg3+/Luff7fdTrdWSzWdnbdDqNRCKBRCLxUD6PDCds20YikUCr1UKn05EA3rZt0RzLsmDbNlKpFEzTRD6fx2QywYkTJ8RlkmG6r/F4jHa7LYI6GAxmkr3JZCKbNRgM0Ov1ROBDoZC8N5Vha2sLjUYDmUwGqVQKmUxGLNZRtLa2NuM1AODEiRO4dOkSdnZ2cPfuXRiGgW63KwobDocRi8XQbrfheR5s2wYA9Pt9FAoFWJaFdruNfr8P4H5mbpomXNdFNBpFq9XCzs4O+v2+eLCtrS2kUikRYsaO/H8mk8GNGzdw7949WJaFcrmMeDyOf/qnfzqST9/3EYlEkM1mEQQBNjc34bou0uk0PM9DJBKB67pwHEdCiWKxiEgkgtFohFwuJ4Zjd3cX8XhcDFK32xXvOxwO4bouXNfFZDJBt9udQWlIiURCkJ1IJIILFy6gUqng+vXrePvttxGPx1EsFpHNZmFZlni5eTpUiE3TRLFYRDKZhOu6ssBsNisbbJomxuMxWq0Wms0mAGB7exuj0Qh7e3vI5XIC0dBqR6NRTCYT1Ot1hEIheJ4nkBbJcRw59OFwKAmJbduIRCJizbrdLsrlMnK5HCaTiQhELBabgWkOo8uXL4v7p/va3NzExsbGDP9McID7yWU0GsXy8jLK5TLS6TSCIIDjOPA8D61WC57nYTweo1wui+DSElFIyuWyxIau6yKVSiEej0tC2+/3kc1mEYvFkEgk4DiOWPv5fTuMCoUCnn/+eSSTSUwmE3Q6HViWJcmrYRhwHEeQA3oC0zSRzWaxtLSEIAiQyWTQ6/XE+/V6PXS7XfFGNECWZYlgJxIJWJYF0zQl5NCGsN/v4/bt26JM58+fx/7+vngeGokH0aFC/Oqrr6JUKmE4HKLZbGIymSCdTmNlZQWpVEoOQ0MnPDSGCt1uF7ZtI5PJwLIsiW9GoxFSqRQsy0IymZTX8XCWl5dnYmsG/gxRAIiLp1ItLS2hVqthNBphdXVVwpdFiFaecXUsFsOpU6dQqVQko6a11jAfvcrm5iYMwxA3Px6Pkc/nxfKur6/DdV3UajWBx8bjMVKplLhdxuMMh5h/hEIhZDIZ2LaNeDyO9fV13LhxA2tra5LgLkLf//73MZlM8Oabb8JxHMTjcTlPWjoK4ng8lhCHsfNwOBT4kkLFXIQWvlwuo1arYTAYyOcWCgWRk3mUhe9Ba0xlLRaLSCQSSKVSKBaLsCzroUjModxfvHgRb731FqLRKFKpFKrVKmzbFm1jfMqkxfM89Pt9jEajmbiKKEan00EsFkO5XEar1UI2m4VhGCiVSmi1WhgOhxgMBuj3++LW6vU6RqORCCS
"text/plain": [
"<Figure size 360x79.2 with 3 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Cluster 44\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 360x79.2 with 3 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Cluster 45\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 360x79.2 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Cluster 46\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 360x79.2 with 2 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Cluster 47\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 360x79.2 with 2 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Cluster 48\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 360x79.2 with 4 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Cluster 49\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 360x79.2 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Cluster 50\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 360x79.2 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Cluster 51\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 360x79.2 with 3 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Cluster 52\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 360x79.2 with 2 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Cluster 53\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 360x79.2 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Cluster 54\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 360x79.2 with 5 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Cluster 55\n"
]
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAOsAAABPCAYAAAAKhzItAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAAsTAAALEwEAmpwYAAAyTklEQVR4nO2dy4/c2XXfv796V/3q2dXd7CZ7psmZ0YxnNLYMC4GMwBEEA1l4kU12yT+QVQABARIE2XjnXQIvoq0Be6N9AC+SLKIsFAOxhciSoRlRw0eT7FdVdb3fj18WPZ/Tp2rIrqIsSiJQFyBIdlVX3XPveXzP95x7f0EURdqO7diO3/4R+01PYDu2Yzs2G1tj3Y7teEvG1li3YzvekrE11u3YjrdkbI11O7bjLRlbY92O7XhLxtZYt2M73pLxRo01CIL/GATB/w2CoBMEQS0Igv8WBMGnK+8JgiD40yAIToMgGAZB8L+CIPj6m5zXr3ps5Vx6z1bONzTedGT9jqTvSfqnkv5Y0kzS/wyCYMe9599L+neS/q2kfyLpUtL/CIKg8Ibn9qsc39FWTsZWzjc1oij6tf2RlJc0l/Qvvvx/IOlM0n9y78lK6kr6N7/OuW3l3Mr52y7nrztnLeg6mje//P8DSQeS/jtviKJoKOl/69qrva1jK+eXYyvnr278uo31zyX9P0n/58v/H3z598XK+y7ca2/j2Mq5PLZy/gpG4k198OoIguA/S/ojSX8URdF85eXV0wTBS372VoytnJK2cr6R8WuJrEEQ/BdJ/0rSH0dR9Mi9dP7l36veaF9f9Vq/9WMr51ZOvUE537ixBkHw55L+ta4F/mzl5ce6Fvyfu/dnJP0zST9803P7VY6tnJK2cr5ZOd8wi/ZfJXV0TX8fuD95957/8OV7/qWkTyV9X9KppMJvmgXcyrmV87dJzjctdPSKP3/q3hNI+lNdU+EjST+Q9OlvesO2cm7l/G2TM/jyi7djO7bjt3xse4O3YzvekrE11u3YjrdkbI11O7bjLRlbY92O7XhLxtZYt2M73pJxa7vhX/zFX0TJZFLpdFqLxUKJREKlUklhGCoWiymVSimdTiuRuP6YKIqUy+WUSqXsZ0EQKJVKaTab3VDQQaDZbKbZbKZ4PK7FYmGvB0GgZDJpP4+iSNPpVFEUaTKZaDqdajwe278nk4lGo5FGo5Ha7ba63a7m87lqtZp+9KMf6a//+q+DdYvwV3/1V1EQBMrlcprPrzvKKpWKMpmMzSWTySiRSGixWCgejy/9LBaLKYoixeNxe89sNlMsFlMQBBqPx1osForFYlosFprP57aeiUTCvpPXJJmMw+FQ0+lU8/lcw+FQs9lM/X5fjUbD/v3jH/9Y3//+99fK+b3vfS9ivslkUsViUWEYmozJZNLWPxaLmYypVMpkC4Lrr4nFYib3YrGwn0VRpPl8riAITP5YLKbZbGby8Z7JZKLJZKLFYqHpdGp7O5/P1el01G63tVgsNB6PNZ1OdXp6qj/7sz+7Vc6//Mu/jGKx6xiUSCSUTqdVKBSUTCa1WCyUTCaVyWSUTqeVy+VMZtYlHo+bTMlk0vRUkgaDgfr9vsnH3rFG7Ol8Ptd4PDYdkKThcKgoipRKpTQYDNTtdjUajRQEgTqdjlqtlmKxmCaTib773e++VMa1vcHewCRpNptpOp2a8EEQ2Iaw6FEU2Wb6hfMbxu+yWUEQmCFEUWTGyyLM53P7zlgsZouCYWDYzCOVSq0T7SuD75/P55pOp0okEkomk9TVzEj5v/9Ov9GslSQzNGQNgkC+XIZxSjfKznpNp9MlpeA7p9Op/Q5ObVP5+Oz5fG5KyMDB8u9kMvkVx5tIJJYMVFqu1SPffD5XPB63/cdwcdToA+9BJv/ZrCP6kc1mN5KTMZ1OFYvFNJ/PlUqlzHHOZjO1220lEglls1lzVlEUfeXfiUTCHBUO2f+fYIQci8VC/X5fnU5Hk8nE9IL1TqfTms1m5qy8o4+iaGkPVsetxsrCTyYT8zwYBguLUrNZ0+nUJpPP582wWTTeP5/P7Y/fGCLTcDhc8soYsFdu5re6wSjVpgbLomP8zJXvlbQUPXAeePxcLmdGg1KisF421pHv4zvH47HS6bRt2Ko8OAMfef28b9vgVTm9g2Wv/JzYK+Yxn8+Xog6/u+qwgiDQaDSy/ZO05PhSqZSt6+rA+U6nU/s879BYv0wms1ZG1op5s4fsLShnMploNpspk8mYUTPYizAMVS6Xlc/nJV1HVuRKp9OaTCaSZOsjSaPRSL1eT1dXV+p0OuYo/H7xb5wUEXgymSgej79Sto0iq18Ir1B4KhabMZ1O1e/3NZlMlqCV98az2cwiDZ/r4TBKxed4qOQ9OZsgySCWN6xNBlHdKzKyo8x4QR9pvcHi9ZGTDUgkEhqPx/Y9/O2jBk6LKIzX9c4MuVBm5GPTNxl+3sg8nU6VTqeXDDAej9tas6bpdFqSDAozF/Z7FRLzWSij33fWBxm9LERbPsvr322K7IdfXyL5aDQyWXCSwNp+v7+ECkj9KpWKzT2Xy5nDRA7mzfr7iDkejzUej9Xr9ZYCkXTj+AuFgs1vNSi8bKyNrF5o8ho8goe+2WzWoB4b0u/3lUwmlUwm7XVJSqVSSzAsk8ksQV9yF2nZ8IFWXrHYgNWFQBk2GR62ejmJEih3v9+3HN0rnHSdk8TjcYsg5C+sj4fnKOF8PjclGgwGBtE8dCZaowhE7lXHt+nwOaV3LKlUStPp1OAcawwvQP5OFEE+SeaUSVXYF9YniiINBgPjGZivd8roFGvE2r1uh52fF5/f7/clXRs7zhcoSwRmH7wO9Ho9c1QEFOkmCPg0bDqdajAYaDQaqdvtajwemx6x3syPQR5LoPJ6+LJxq7F6j40nnc1mSxuJwmHYvV5vCepAYBQKBYOL4/FYg8FgCXZJMojMJo9GI3U6HV1dXdnnQmqhUHwXkc17dGDLJsN7bTYSpQQ6EdUzmYwmk4kGg8ESsZRIJJTJZAw2+dyQqOzXiwjGZne7XXU6HY1GIyPwJC2tN78HssCDbzJYZw/HPBTDqCDOcJqz2UyDwcBkJBJjmB4RQCayl8xtMpkYkTIYDJYcP4YJFFyNVp4vWTe8g2NMp1MVi0Vls1lzPhBIuVxOYRhqNBppOBxqMBiYng+HQ0lSo9FQFEUqFApLDoZ0DVjd6XTU6/XU6XQ0Ho8VBIHy+fwSkcV+jcdjdbtd289VVPeysTaysqHz+Vz9fl+j0UipVMo2fLFYGBs7m80ssUbJC4WCwjBUsVhUpVKxieN58vm8RqPRV7D7ZDJRt9tVo9FQq9VSp9NZSvqz2azCMPxKlJtMJkqlUur3+xvlOMjH5rLwvV5PkowJ5/PxhqPRyCAwC57NZpXNZlWtVo1xROFTqZQymYzBJDYG1rfX66nZbKrRaGgwGJicoBLyPwzVs8avE30wfI+YJBlH4JlqoiHKD6rI5/NKp9MmH5GXCMmc+DdwsF6v217iDNPptLLZrEXuKIqMBZZkaMKTbOvki8fjSykWDp61A6b2+/2vEGXoH3rt4T45Ljkr69/r9TQcDtVutw0hSTdOn89GnzKZjGazmZLJpHq9nr1/nYy3GiuwAXiCssTjcYsqEBWj0ciMhdfG47EZ8mAw0GAwUKVSUT6fN9YNJo3Fo0TR7XZtgweDwRIEJr/xxNdwODSoTIS4f//+2s31i4TXnM1mGo/HFl3YeCA5kYbvJMpls1mVSiVNp1OFYWhlLDaA78GxSVK/39d4PFan01G9XrfN85GazybNINUAHlcqlY3klG5SG36/3W6b15dk6w8yAboCB5ERpOTzOJSQfQ+CwJS33W6r0Wio1+uZESSTSUsjfF43HA4NkRBxNs1XQUAYGdEboyKiEQWBwXwP/8f5wCUwN/aD7xoMBur1eup2u+r3+6Yvnqz0rDpBBieMPjDX2xzvrca6SnJ4qIJSszk+eWfB8OL9ft/qSuPxWKVSSfv7+yqXy0qlUspms4qiSK1WS41GQ+12W+12W71eT71eT4vFQplMxgQNw1DZbNYiIl6KeS0WC6XTaVWr1Y02GIUhR0K
"text/plain": [
"<Figure size 360x79.2 with 4 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Cluster 56\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 360x79.2 with 5 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Cluster 57\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 360x79.2 with 2 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Cluster 58\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 360x79.2 with 2 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Cluster 59\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 360x79.2 with 3 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Cluster 60\n"
]
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAD4AAABPCAYAAACzv3YgAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAAsTAAALEwEAmpwYAAATU0lEQVR4nO2by48c93HHPz39mu557czOzj7IpXZJSRQh2aYsiDbiIIgDxLANBJAvRpBbDrn4PwhyycnHBD7YF59yzSmAfbERwzABIwJiGKHhhfkAySV3VzszO+/pme7p6UcOVJV3hZAOFyCdgGygIUjT6v5V/aq+9f1W/dbI85xX8Sr8sRfwx7peG/6qXa8Nf9Wu14a/atcLNdwwjL83DOM/DcOYGIZxYhjGjwzDeO8zz+RPub//Itf2onf8z4EfAH8C/AWQAP9uGEbj1DObn7n/6tP//q8vcmHGy2RuhmGUgTHwUZ7nP3rKMz8E/izP86svci0vO8crn35z+D/9+Klj/hr44YteyMs2/HvAfwH/8ZTf/wZwgX950QuxXvQH5DIM45+APwX+NM/z9CmP/R3wb3men7zwBeV5/sJv4J+BY+CdZzxzHciBv3wpa3oJRn8P6ADX/sBzPwAe8ing/r82HPg+MOFJKds4dZc/85zPE7T/h5dh9MswPH/K/Y+fee5veVLjt16W4S+1jv9ful5z9Vftem34q3a9soY/k7Lu7u7m3/rWt/jGN77BhQsXKBaLmKZJoVDAMAwA0jQ9cy+XS7Is09+SJCGOY/I8Z7FYAOC6Lo7jkKZPmKtpmkRRxHw+l/Km78jznDiOWS6XFAoFCoUCWZaR5zmmaWIYBmmaEscxvV6PQqHAYrFgMBhgGAbf/e53jec2vNls0mq18DzvjNHL5RLDMIjjWJ/Nsow4jlksFhQKBUzTVKNOG5mmKYZhYFlPPm1ZFlmW4Xkei8WCxWJBHMfqsCRJyLKMNE0pFApYlqXvM00Ty7IwTRPXdfE8jzAMKZVKmKZJt9s9345vbm5Sr9epVCrYtq2GyX18fMxoNMJ1XQzDYD6fk2UZpVIJx3Go1+vUajUcxyHLMlzXZTabYds2tm3romW3R6MR8/mcXq/HfD5nOp2SJAmWZamzTNPE8zx9h+d5ur5KpUKapriui23bTCaT8xnuui6+72OaJuPxmOPjY05OTsiyjCAIuH//PpPJhNlsRpZlZFmG7/s0Gg02NzcZjUZcvXqVlZUV3VnDMDBNE9u2WS6XJElCFEUcHBxwdHTEcDjk7t27jEYjlsslAEmSaHpYloXv+1QqFYrFIuVymTfeeINqtYrneZRKJY3AZrN5PsMlhyaTCffu3ePg4IDJZIJlWfR6PQaDAVEU0e/39flms6lhmOc5Jycn+L6P4zgkSUKSJAAYhsFisSAMQwaDAaPRiE6nw/7+Pg8fPiSOYxqNBhsbG0ynUwBarRZBEJCmKYeHhwD4vk+e51y7dk0jwjRNkiShVqudz/BCoaAfuXPnDlEUkWUZ3W6Xx48fa+5ZlkWtVsPzPMrlMsVikTAMWS6XjMdjgiCgXC4ThiFxHBPHMVEUMRqNGI/HjEYjNfT69et4nkehUCBJEpbLJcfHx1iWxUcffUSSJMxmM3784x9z7949BoMBt27dolwuc/HiRXzfPwO+5zI8z3Nmsxn7+/vcv38fwzDwPA/LsvjKV77Cu+++qx/KsoxCoUCv18MwDMrlMkmSsFgs6PV6hGGo74yiiOVySZqmjEYj9vf3MQxDFy75niQJvu9Tq9UwDIMgCNjc3GSxWOA4Dq1WC9M0uXPnDh9//DHvvPPOGccVCk+v1s80vN/vc/fuXeI4plQqsbW1pTvbaDRwXZc8z7WE5XlOuVymWq3y1ltvUSgUODg4oN1uEwSBguBsNmM+n1OpVDg6OsIwDFzXpdPpMB6P1Zme52GaJsvlEsuyuHXrFo8ePaLdbjObzYjjmEKhwNraGoZh8Jvf/IbV1VWuXLmCbds4jnM+wy9fvkytViPPcxzH0R2WUibgJMAmYdxut2m329RqNarVKgC//vWv+dKXvsTa2hpxHLO2tnamPAraCzj6vq+AlSQJtm2r0+r1ugJpp9PR1LEsi9/97nfs7u7qu89l+Be+8AWOjo7Ui5cuXaJarSpZEOKwXC6J4xjbtnWHjo+PuX37NvV6nV6vx82bN3nzzTe1zGxtbZFlGf1+nyzL2NraYnV1VctfGIYEQYBt2wB4nofneWqw67o0m03q9Trtdpv9/X2CIGB1dZWDgwPCMGRjY+N8ho9GI7Iso16vc/HiRZrNJrZtMxwO2d/fZz6fM5vNGA6HCmBSOwuFgubyaDTi61//Otvb28znc6Io4re//S2DwYAgCNja2mJtbY08z+l2u8znc+UKAIPBAMdxWCwWRFFEvV7nwoULrKys4DgOjUaD0WikFefmzZtUq1Xu3bvHd77znec3fDqdUq1WqdfrFItF8jzn/v37/OQnP+Hk5IRisYjv+/zyl7/EcRyuXbvGz372MxqNBuvr66yurlIul7Esi29/+9uMRiOCIKBUKuG6LnEc02q1KJVKyg1ms5lyhdXVVQAePHhAsVik0+nw6NEjtra2qFarXLp0ic997nOsr69z+fJlHMdhb2+PdrvN1atXz8/cBKmFvOzt7fHzn/+cdrvN22+/TbVapdlssre3x2Kx4O7du+zu7lKr1djd3WUymTAajfja176G4zj0+33CMFR+PZ1ONbQ9z8N1XR4+fEipVKJSqXD58mWyLOPw8FBTYn19nbfeeotWq8XDhw/Z29tjuVzy3nvvceXKFSaTCdvb2wCsra2dz/DxeAw8Cds8z7l9+zamafLVr34V3/eVs9+4cYMkSSgWi1QqFUVpwzAYj8c0m02Gw6EKGcMwcBwH0zQZDAa89957Sk1v3LihDi8UCvi+z40bN4AnDC4IAq0o7777Lt1ul36/z+PHj7l+/Tqbm5tsbm4SRZEC63MbvrOzw9raGrVajTAMWVtb4/3332dnZ4cwDOl2uyRJoqJBFlsoFHQXTdMkTVOiKFKRYRgGtm3TaDTo9XocHh5SKBRotVpUKhUmkwmmaRLHMZ7naRlNkkRZoQBpv99nf3+f8XjMgwcPyLKM5XKp0Xguw7/5zW/iui5RFHFycsLOzg7NZhPP81SQTCYT5dtxHGMYBsViEUBru2EY+k/P83AcB8MwqNVqrK+vc+/ePd58802m06l2QQVYRXS4rqt0VCSpZVk0m00qlQrtdhvXdRkOhxpxogif23CpuVJuSqWS7qjU8DAMtc4Wi0WKxaLSxdFoRKvVUg4tiirPcxUbKysrlEoler0e77zzDr7vY9s25XKZLMuwbZs0TTk5OVGDxHHijGKxyIULF3Ach8FgQKvVYj6fn99wUVCyYGFCks9ra2tKMKSBIE0H4fSbm5sa4sK/JS1EVjYaDdrtNnEcs7GxoaTIdV3K5TKAKjVAtb5gj6TbeDwmDEM2NzeZTqeq+Z/b8CAINKTg910R2T3LsiiVSrrzaZqqgx48eKA5K9RSFJlhGPouKZdpmirqVyoVTY3FYqHPCpmRqmBZlj43mUz41a9+xZe//GV19LPU2TN7bh9//DGz2UxzVNB2NpvR7Xbpdrv0ej31tOTeJ598wuPHj7l69apqaEkRcaIoL8GBZrPJ9vY2d+7cUSUoGl6u+XxOGIaqEpMkwTAMut0ut2/fZmtri2vXrjGbzfA875kK7Q8yt5/+9KfK3NbX1zWPTk5OWCwWWp4ETUVAfPDBB1QqlTOGCvpHUaT5dxrwNjc3sSyLe/fu0e/32d3dVVwRHSA4Iu2mxWKBaZpcuXIFy7LodDokSUKpVHpmqD9zhHTz5s1cpGav1yMIAgzDIAxDwjDUCBAEtW2b9fV1dnZ22NjY0BbQYrFgNptpH026K67rslwumc/nmKZJuVwmTVNmsxmdTocoipT2ys6LBHYch0qlQrVaVaRfLpdEUUS5XGZra4tWq8X777///M1Gz/Oo1+tcunRJvS60MggC5dLS8vF9Xx0gOCCLFWCM41iVU6lUOtOElIWnacqVK1coFosaSdK
"text/plain": [
"<Figure size 360x79.2 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Cluster 61\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 360x79.2 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Cluster 62\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 360x79.2 with 2 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Cluster 63\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 360x79.2 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Cluster 64\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 360x79.2 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Cluster 65\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 360x79.2 with 4 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Cluster 66\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 360x79.2 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Cluster 67\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 360x79.2 with 3 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Cluster 68\n"
]
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAHgAAABPCAYAAAAgGwHHAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAAsTAAALEwEAmpwYAAAdI0lEQVR4nO19S4wk2XXdeRmRkfHNjKyszMqq7kbPTA8/xgwHpGgKQ5MEKAqCF4QBG/aCIEDYs/LC0EqCDEOGQQNeeGVaC1uAVvJG2hECBG1kwrC08Cy4MSgC5Axm0M2e6vpk5T8i45ORGaFF9bn9Mmem62N20yzUAwrVlRkZ8d67v3PPvS9bVVWF23FzR+1XPYHb8WLHrYBv+LgV8A0ftwK+4eNWwDd83Ar4ho9bAd/w8UIFrJT6d0qpHyul5kqpM6XUXyql3ty6Rimlvq+UOlJKpUqp/62UeuNFzuuXPZRS/0Yp9ZOn65wrpd5VSn37U679E6VUpZT6/Zcxtxdtwd8E8N8B/CMA3wKwAvAjpdSOds0fAPg9AL8L4CsABgD+p1IqeMFz+2WOQwD/FsBvAPiHAP4XgL9QSr2lX6SU+hc4X+PRS5tZVVUv7QeAD2AN4J88/VsBOAbwh9o1DoAIwL9+mXN7AWsd62sAcB/AEwD/AMAjAL//MubxsmNwgHOvMXn696sA+gD+mhdUVZUC+FucW/2v3VBKGUqp7+Bcmf/P09dMAH8O4D9VVfWzlzkf82U+DMAfAfi/AN59+nf/6e/TretOAdx5SXP6pQyl1Bdwvi4bQAzgn1VV9XdP3/6PAEZVVf3xy57XSxOwUuq/APg6gK9XVbXeenu74qE+4bX/38d7AL4IIATwzwH8D6XUNwF0APyrp++99KFeRjVJKfUDAN8B8FtVVf1ce/01AB8C+M2qqn6svf5XAIZVVf3LFz65FzSUUj8C8AsAHwH4DwBK7W3j6d/HVVXdfZHzeOExWCn1RwC+C+BbunCfjocATgD8jna9DeAbeBq/fo1HDUAD51nEWzi3YP4cAfgBgN9+0ZN4oS5aKfXfAHwPwD8FMFFKMebGVVXFVVVVSqn/CuAPlVI/B/A+gH+P8xj2Zy9ybr/MoZT6zwD+CufWGuBcob8J4NtVVQ1wnvrp1xcATqqqeu+FT+4FpwrVp/x8X7tGAfg+ztOlDMDfAHjzV53mXHGdf4pzd5w/FeaPAPzj51z/CC8pTXopMfh2/OrGLRd9w8etgG/4uBXwDR+3Ar7h41bAN3w8Nw/+7ne/W33hC19Av99HvV6HbdvwPA+maaJer5/fwDTRaDRQr9fRaDRQq9Xk/fV6DaUUAGC9XmO1Wgl8X6/XKMsSSilYloVarQbDMFCrneucUgpKKaxWK5RlifV6jaqq5N/r9Rp5nqMsSxRFgcVigSiK5Jo0TaGUwjvvvKMu2oR33nmnmkwmePfdd/GVr3wF3/ve9+A4DhqNhqyF/zYMQ+bHuZblM5Kqqip5nRkK56SlSXIN11yv11GWJcqyxGq1QpqmWCwWAIAsyxDHMYbDIUajERaLBVarFUzTxGq1wqNHj/DDH/7wE9f5XAHrm0mB8d+1Wk2EwgVw4Zy0/joXtlqtRPBlWaJWq8l91+u1KIn+nKqqROCGYchG8DP6PfXNu2wKqJRCo9FAEASYTqcbSshBhd5ea61WE+Hp+6Y/f/t+ZVnCNE35PBWZ6+C1/DcAWJYF27ZhGIZ8drlcoqoq+L7/qWt7roA5Id1ydA20LAtVVcnETNOU9/lZfZO4OAqWm0Qr5Gu1Wm1jsfoPr6FlF0XxLKl/KuDtDb9olGWJRqOB3d1drNdrpGmKOI5RliUsy4Lv+yjLEkEQyBo5N12ZqIT8uygKsXh9LUoprNdrMY48z5HnOZIkQZqmKIoCq9UKi8UChmHAMAysVivZoyzLkGWZKBfn8EnjUgKmcE3TFAEYhiHCoVuhBW67Ml6nL5SLMwwDRVFguVzCMAwsl0u5jhbLTavX62LVHLRwfoZzpZJcVsAA0G63oZTCcDhEmqZy3yAIsLOzg93dXTiOA9M05blUft1l696L96ZCUiD8DN3xfD7HfD5HkiQboUwPVcvlUoRbFAXq9ToMw0Cj0bi+gLlJnJDudoqiEFeR5zkAII5jmKb5sbhKl1uWJQzDEGGUZYksy7Ber1EUBbIsw3K5lL9t25YFNBoNWJYFAFgul+JFACBNU5kz56jHxucNbmYQBHAcB5PJRBRvsVhgNBphOBzi9PQUruui1Wqh3W6L8lGh9PXqgqfy8ydJEiwWC7FcWu9yuYRpmnBdd8OIdOs3TROe5yHPc9lH7sGVBbwNDACgKArEcYwkSeR9TpLXKaXgOA5s20a9XodSClmWwXEciXd0Q7yeShJFEebzuQjatm2JP5ZliXegsPmaZVmiQFSQywqYG+h5nlhFs9kUS5rP5xiNRhgMBqjVanAcB3fu3MHOzg5s2xbhEmASJ3AO3KP1eo3ZbIbT01McHR1huVzCsqyPrYegi7GW9yiKQjBKo9EQz/m8dT5XwHSzdHdxHMMwDFiWJRuZZZloHy2VQgzDUNAoXQwntu2O0zRFnueYz+eYTqdyT4KKRqMB3/dhWZbckz+2baOqKtTr9Y0FPy826YNARykF3/fhOI5YBYUVRZEAoaIoMBqN0O/30e124bquKAYFTIHwM3meI01TDAYDHB0d4eTkBIZhoNvtwrIsrNdrUeo4jmFZltyXnpNy4LNs2xYcci0BO46zETt5o+VyuQHll8sl0jSVmE0Bz2YzhGEI3/fhuq64HCJSfm65XIrboncoikJARa1Wk+tc1xXLYOxO0xSWZX0sZl9WwFQ4AhcKMI5jjEYjzGYz8VhUhPF4LHNsNptwXReWZaHRaIiA1+s1lsulzDFNU0RRJOGK+5umKcbjMfI830gbbduWe9u2LXKgxRuG8TFMciUBt9vtDTfBWMJAn+e55Gp0QYzbfHCSJPA8D91uF/v7+6jVanBdF6ZpimUwt9MBhJ4qUIvpNXRFoRLQsxDsbIeW5w0+iwiVAj49PcVwOESWZeJmTdOE7/totVqiRFmWodlsotVqbWy4aZooikKsl6jacRzxDDrAYu5umuaGV/J9H2EYStynZyXodBznegLWAU6e52K51MgkSZBlmcQbLoLo2HEcFEWBJEmwXq8FhXqeB8/zUKvVMJ/PcXx8LCmCrkRFUYhXsG0bWZbBtm2kaQrP8yQvpIC5YNM0RYEuM2jxtm3LMweDAR49eoTFYiFWQy81HA4RhiH29vZEiGVZCu5wXXdDcQiUuBamWrPZTOI7jYUGwr1vNBrIsgzT6RRRFKHX68F13Q2SiNnNlQUcRRHu378vcJ1uMk1TTCYTech6vUYcxxJzGB8ocJIki8VCUChjXLvd3nA3VVVJXKc203UrpeC6rqBIAEJQWJYloIhWRE2/aOjEA4kDeos8z+H7Pg4ODjAcDjGZTJDnOUajEYDzGN1qtVCr1dDtduH7PnZ2dmCaJpbLpewb0y6yT7RqKn+n04Hv+zg9PZU4TBBK1sowDLiuu8Gw1ev166Noahzdn56z8eGNRgNKKURRJAJtNptot9sSI5VSQiUSYVMIzWZTNJXWyFzQ8zzs7OxgsViIC7MsC+12W1DzaDSSDdJds56XXmZQwHT9Ozs7cF0Xq9UKBwcHeOONN/Dhhx+KZ1FKiSvXc13HcQRdUwmXy6VkH6vVSsAUAVgYhnjw4IFkD/SCnueh1+tJGlWv1+F5noQDxudrW3C32xX3ZFkWms2muMmqqhDHscSH+Xwu1tNut9Hr9TAejwW40Mq4gUyZgiBAEAQf03YCtW63K+CEuS6pudlsBsdxJHaTWaNbvKyA9bgZBAGazSa+9KUvwbZtvPfee+h2u2i327h37x5WqxUmkwnW6zVs24ZpmoiiSMIF0X4QBGIEBGO8hjkskXG73Ua73Uar1ZLUkOvs9XpI0xS1Wg0HBwd47bXXsLu7C8/zxOtts4WXFrDv+5IjdrtdiTFxHGM6ncJxHARBIOnQYrFAWZbwfR+2bQuz5TgO9vf3sbOzs8G6UIi+74uG1ut17O3tSSz
"text/plain": [
"<Figure size 360x79.2 with 2 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Cluster 69\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 360x79.2 with 2 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Cluster 70\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 360x79.2 with 4 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Cluster 71\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 360x79.2 with 2 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Cluster 72\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 360x79.2 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Cluster 73\n"
]
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAD4AAABPCAYAAACzv3YgAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAAsTAAALEwEAmpwYAAAQWUlEQVR4nO1byW5c13Zdp25/b/Udip16WoDtGG71EOCN8wYZ5AcS5A/8BRlmlkkGGWaUSeBhpkFmDhIDdmDBFqDYokixqxRZfdXt2wyYvXWKkmmrHkACkQ5QIMWqumev3a69z5EoigJv4yrdtAA3td4Bf9vWO+Bv23oH/G1bNwJcCFERQvy9EOJQCBEIIf5DCPHFdcpwUxb/RwB/APDXAP4EwL8C+DchxNa1SVAUxbW+AFgAUgB/cenv/wXgb69LjpuwuApAARBe+nsA4PfXJcS1Ay+KYgngPwH8jRBiSwihCCH+EsCfAti4LjluKsb/CkAO4ARABOBLAP8MILsuAcRNdmdCCAdAtSiK/xFCfAWgXBTFn1/H3jdax4ui8P4PdAMXWf5frmvvG7G4EOIPuFD6fwN4AODvcOHyvy+KIrkOGW7K4jUA/4AL4P8E4N8B/Nl1gQZuOMZvcr3j6m/begf8bVtvLXD1qje//PLLYnd3F+12G+12G7VaDZZlQdd1KIoCXdeh6zoAQFEUlEollEolKIqCoigghACAV37S57PsVYZ6uYsSQkAIgTzPkec5iqJAnudIkgRxHCMMQ8RxjCRJ4HkeptMpRqMR+v0+njx5gq+++kq8ssmvAacHZllGrSMLT0CFECuA6ffLiz5L4Oh7tIQQDIp+l9+jzxN4eqaqqsjzHHEc8/dkeX9pXQk8z3O2Cgklb6ooyoo1SThFUV77PBKMlCB/97Iy8jxnoKToNE3l/h1xHCMIAqRpijiOkaYpP69UKkHTtPWA27YNAIiiCEmSsLslScLCqaoKVVWRZRk0TeNNZbemJQtNAl7+uxDilRAoioLdOk1TpGkK13XheR7m8zmCIIDneewBQgjouo5Go7Ee8HK5DMuyUBQFkiRBkiRYLpdIkgSGYUDTNOi6Dtu2oaoqC6Xr+i9avlQqveKG5E2ym5OlCbDruhgOh5jNZojjGIvFAq7rYj6fw/d9BEGAPM9x7949OI4DTdPQ7XbXA95sNmEYBkzThGEYODs7w9HREYIgQKVSga7rMAwD1WoVlmWh2WzCcRwoigJN02AYBlT1YgtVVaFpGoeH7BV5nrPSsixDlmXwfR+LxQKTyQRHR0cYDoeYTCYYj8fs3uSFaZpCVVWEYYjnz5/jgw8+QLfbRblcXg94q9Vi19vb28PBwQH6/T7yPIemabyhaZoAwIqoVCpoNBpoNpuo1WqoVqvodDpcFRRF4RcAZFm2kqVnsxkODw+xt7eH8/Nz9Pt9uK7LXkF5QNM01Ot1VKtV2LaNNE3x4sULfPPNN/j444+xu7u7HvByuQzf9/Hs2TO8ePECAHiDIAjY/T3PQxAEAF4mFsMw0G630el00Gg0cP/+fdy9exetVguGYQB46fZyeYqiCP1+H8+ePcPx8TFmsxl830eWZaxUUmatVkO9XodlWZwIb9++jW+//Ranp6e4devWesBVVcVgMMDBwQEajQYePnwIx3EQBAGCIECWZQjDkF+z2QyLxQJ5nsMwDCiKAt/32UqO48A0TbYYWZzcNggCjMdjDAYDhGGISqUC27YRRRHLo2kabNuGbdvQNA1JkqAoCui6jqIoUC6X8f777+Pnn39GGF6eZ/5G4L7vYzqdotPp4O7du+j1etB1HbPZDEmSIIoieJ4Hz/OQ5zlM0+QEZVkWxz6VotFohHq9Dtu2YZomxzhZPgxDDAYDTKdTqKoKx3E41kejEX82z3MGblkWAMBxnBWCtb29zeTqjYEHQcBZuygKDAYDJEmC09NTTCYThGGIJEk40zYaDWRZhlKphK2ti7MBIQRM00SWZRgOh+h0OtjY2OAySGDCMEQQBJhMJpz1qVwGQYDT01M0Gg2Ypom9vT1sbm6iVqvh7OwMhmFwPgIuYr9Wq3Hued26kqvruo5arQbDMOD7PsbjMY6Pj3FycoKTkxPEcYxer4c0TbFYLKCqKlqtFpbLJXq9HtrtNpMIx3GQZRnOzs44OcovIQQ8z0NRFKjVauzm29vb6HQ6rCTLshBFEXq9Hh49eoROp4PRaATP8xiobdtoNBpwHGc9i9dqNSiKgiAIMJ/PmVj4vg/HcfDo0SN89tln8DwPT58+xWAwQLfbRafTwe9+9ztYloUffvgBiqKgXq8zAfE8D71eD6qqsnUpX7RaLVSrVQyHQ6Rpit3dXdRqNRwdHWEymeDs7Aybm5v45JNPcO/ePWRZhsVigTRNeZ+trS1omoY4jtcD3mq10Ol0EMcxZrMZxuMxVFVFv9/n7LqxsYHPP/8cy+USQRAgjmN8+umn2NraQlEU/LPdbnP2JwXKZIYIS6vVQrvdhm3bWCwWWC6XqNfr+PDDD3F+fg7gwpWbzSZbutFoYGdnB3fu3EG9Xker1QIArjRvDLxcLsO2bZRKJS5LtVoNcRxjNBphOBxib28PDx8+RBiGmEwmnFXjOIbneSiXyxybmqahXC5D13UGL9NW6voUReHSFUURsizDgwcPsLOzgzRN4fs+5vM5iqKAYRi4d+8ednZ2sLW1hWq1CsMwVvqKNwZORJ+yJ/07z3MMBgNEUYSDgwO0Wi10u122lKqqmE6nyPOcW9dqtQrgwqUvZ1tqXAzDWOn40jSFYRgQQkBVVbiuiziOYVkWP7taraJUKqHX63EVoWe+rl/4TcBp0Sa2bSNJEmxtbcE0TbYGxRIJTQzLcRw0Gg3U63WuuUmScP2+3LBomsYcf3NzE4ZhYDabQQjBCo2iCFEUoSgKKIoCx3G4IaESKVPgtYBTX0vaI/JAPNzzPO7caJGHkIvXajXouo44jrl7omfLoOXempSzsbEB27bZ0lmWQVEU2LbN/QC9iBjJHSQRnzcG7vs+LMti1yJSAVyUJ3o49cmkHAoNUhL19cTY5GGB3H/TVIb6a+L49XqdLZ0kyUrfT3wgz3P+DFmcEuYbA18ul6xd+aXrOhzHYUBZljFjU1V1ZRpDoICXrEv+m7xIeRQ+WZbBNE3ous7tsdy6ktfQ/gSWZFo7q1N5IteTpy6kBE3TWODLCUUWTH7v0k0Idk8AHApJknCbSkvem55H2TvLMn6PRlGLxeIXsV3J3KjJp0bg8uhHdjl6XZ6+yJaQAcoWIysSELI4hZH8OXnJszk5jKjTc133F7FdafHZbIZGowHDMKDr+kpiohEPrctuSC9iZDQTy/MclUqFLUOCU+dFLWiapjwAkQectD/tKSuY+vokSeC6LpbL5frAl8slHMdBuVxmQeXRkDz9JGEo5ij5TadTHlpQ9qbSRS5Lyk3TFFEUIQxD3lfOF/Ieci9PiS2KIp7B+b6/HvAwDLFYLOA4DqrVKkzTZJeWpyGyIkj7BGC5XGKxWMCyLK79AF7xGLlUqqqK+XzO3J4UJo+qSLkUz6Qs13URBAG3zGsBp8xIwtNwQRZEBk1WkMe9VF6I/pLFaMkxqmkaHMdBqVTiOKXMfDk/0OT1MnAZ/FXJ7Urg8mjJdV3Yts2uXRQFK0BWFMVnGIYrScvzPHZx4GLqIluQwCiKwgLTXI8AysCFEFzyCHAQBPyTfl8LOH0xiiJ2V7I4cW4CToCLokAURStMTQiB/f19AMD29ja63S4rgL5HFjo6OsLJyQl2dnbQ6/WQ5zmCIOApDvDy8EIGTnHteR7CMESWZetn9clkwj2v67qwLIsJBo145ORGG8ZxzNRSVVVYlgXHcfD999/j+fPnePjwIW7fvs1uHYYhzs/P8ezZMxweHqJWq6FWq0HTNH4mZWzgZa2nUheGIZbLJVzXZTcXQmA8Hq8H/Pj4GF988QXH0XK5XKmXURStkBKquwSW5trUYt66dQsvXrzAkydP0O/34TgOhBAMfDKZoNvt4v79+7Btm0mJEGKFQ9A5GXkLlS7i9FTLB4PBesDPz88RBAHK5TJvQECplssHecT
"text/plain": [
"<Figure size 360x79.2 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Cluster 74\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 360x79.2 with 2 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Cluster 75\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 360x79.2 with 4 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Cluster 76\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 360x79.2 with 2 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Cluster 77\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 360x79.2 with 2 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Cluster 78\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 360x79.2 with 2 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Cluster 79\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 360x79.2 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Cluster 80\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 360x79.2 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Cluster 81\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 360x79.2 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Cluster 82\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 360x79.2 with 2 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Cluster 83\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 360x79.2 with 2 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Cluster 84\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 360x79.2 with 2 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Cluster 85\n"
]
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAHgAAABPCAYAAAAgGwHHAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAAsTAAALEwEAmpwYAAAgXUlEQVR4nO19S29k17Xed6rOqx6n3g8WWaTYpORuybLUsiDIal/dGIYBD4wre+SRE/sP3AABgswzyyDIJBkESIAEyT+IDSODwIaBDGzagFr9Ur/YbLKLxSrW+3lOnXqcDFrf0i62bpNmLLdBcANEi0Wyzl57vb71rbVLWhAEuFwXd4Ve9QYu19e7LhV8wdelgi/4ulTwBV+XCr7g61LBF3xdKviCr69dwZqm/b2maf9L07RDTdMCTdN+ceLncU3T/qOmaRVN01xN0x5omvavvu59/aXX36qc+tf9AABxAHcA/I8vvk6u/wDgBwD+OYA9AH8P4L9omtYMguB//hX295daf5tyBkHwV/sCMATwixOv3QHwb0+89jsA/+mvubeLKuffQg7+vwD+QdO0dQDQNO0GgOsA/ver3NTXsF6JnH+NEH3a+pcA/jOAA03TZl+89o9BEPzqFe7p61ivRM6/BQX/I4DvAvgEwD6e56Z/r2na0yAILpIXvxo5X2VuAhAB4AP48Ynf+68A/s+rzqUXQc5XnYONL77mJ16f42LV6K9Mzq89RGuaFgfw+hffhgBsaJp2HUA7CIIDTdN+B+DfaZo2xPPQ9c8A/AsA/+br3ttfcv3NyvlXCFffAxB8xdd//+LnKwD+G4BDAC6A+wD+NQDtVYfaiyCn9sXDL9cFXRcpz12ur1iXCr7g61LBF3xdKviCr0sFX/D10jr43XffDRKJBFZWVnDjxg188skncBwHuq4jCALM53MsFgvMZjNMp1PMZjP578ViIT8nZA+Hw9A0Tb74WigUes66hEIwDAOLxQKhUEhe53vM5895Aj6HP5tMJpjNZhgOh+j1ehiPx6hUKvjVr36FTz/9VDvtEN5+++0gCAJsbW0hn8/jJz/5Cb797W8jHo9D0zSRRZXP931Mp1MEQYDZbLYkp6ZpCIVCIicAeY1y6vrzo6f8AJbOFACm0ymm0ykAYLFYYDqdwvM8jMdjDAYDjEYjdLtd/O53v8Mvf/nLr5TzpQqezWbI5/NYWVnBlStXEIlEoOs6dF3HbDYTAdQNc5MUZLFYLAnK36HQVCbfJxwOwzAM+RseLg+Pvx8Oh+W9aRS6rsuBmaaJfD5/mm5lP4ZhoFQqIZlMolgswrZtMWRVaeFwWP6Ge6OclIv/cn9ULGWmjF/1fqFQSAyG50pHAID5fA7TNGGaJsbjMUKhENLp9D8p20sVbJomLMuC4zgol8vigQBEKC5VEB6IegBUuGVZ8jMKu1gsYJomwuHwCxatPsswDEynU8zn8yWD4b50XYdpmhgOhwiHwzBN80wKns1miMfjAIBcLodUKiV7UNdJZan/npSV8qgGSeWcVK56jpSHf6d6NI2ehqzr+pJzfdV6qYLj8Tji8TiKxSJSqZSEVXrpfD6X8MhQ7XmeKAEAXNeVgwGwpGQK6vu+KE3TNAl9NBQ+jwcCPLdk/p4aIeiNoVAI0Wj0ZeItKS4Wi8GyLKytrSEajS5FjPl8Dt/34fu+fE85KbvneZjP5+JxmqbBtm0xYiqYcoZCoRfkpFzhcPiFM1YNi9GChv0yQz5VwalUCisrK/ImfLDv+xiPx2i32xgOh0s5mPmRG2bINU0TQRDA930RnocDQCyTVsvXGYLVMLZYLNDpdGDbNizLWrL0aDSKcDgMy7L+LAUXCgUUCgUYhiHPmk6ncF0XnU4H3W4Xvu8v5WIaMpVLHDGbzeD7PiKRiBjtaDQSD1TD+mQykQjF56oRrtFowLIsRKNR+VkQBLBtW870XApOp9Mol8tIJpPy8Ol0iuPjYzSbTRwfH+PZs2cYjUaYz+eIRCIiGFcikUA0GkUoFEIsFsNsNkMoFEI8HkcsFsN8PhcD6ff7iMVimE6naDabGI1GGAwGsG0bnuchEolgOp3Ctm2srq6i2+2i0+lgY2MDqVRKvJoH+FVh9qtWKBTCysoKstks0um0hMZOp4PDw0N0Oh3s7++j1+uJIl3XxWw2g23bCIVCiEQiImc0GkUsFoNpmsjlcgCAyWSCfr+/5PWdTke+Pzw8RDwex3g8huM4mEwmsCwLKysrmE6nqNVqWF9fR7FYxGKxgO/7IuPLDPmlCk4kEjAMA8DzvDCZTPD06VPs7OzIZtWwAwC1Wg0A5O9830c+n0c4HMZ4PEa9XodlWUilUnIgo9EIrVYLx8fHuHbtGkzTxN7eHprNphyqaZr4xS9+Ad/30e12EYlE4DgORqMR9vf30W63kUqlJNzxgM+yFosFotEoZrOZ5LPDw0P8/ve/x9HREVzXlejA96ehh8NhSWX0fu7JcRwMh0NEIhEEQYDhcIjj42P0ej05o3K5jGKxiN/85jcSMX7+858jmUzKc6PRKEzTRLVaRa/XQzqdlhwciUQEP/zZCg6FQnBdV2L90dER7ty5g3q9LpZjWRaGwyE8z4PruqhUKojFYkin09A0DZ7nwbIs6LouXtdut5dyV7vdxv7+PjzPw/379wEArVYL+/v7GA6HYmxPnjzBj370IyQSCQnl77zzDgaDAarVKm7duiWRwbZtJJPJMymYi1Go1Wrh3r17qFQqEv5s2wYAyb1MVaPRCIZhQNd1GIaBfD4Px3GwWCxQqVQk4kynUwyHQxwdHcHzPBiGgfl8LjJWq1VomoZoNIpPP/0UP/vZz5DP5xGLxRAKhTCZTNDtdnF4eIhPP/0Utm3DcRwYhnF+FO26LlzXldBbq9UQCoWQzWblzQ3DQKvVwnA4xGQygeM4SyVUPB7H9evX8frrz1uluq7j/v376Ha7SCaTCIIAsVgMruuiXq+jXq+j3++L98ZiMTiOg1KphKtXryKXy0nN++zZMxwcHGA8HqNQKMjrtm0jHA4jlUqdWbntdhubm5swDAO7u7vodrtIpVJIpVKYzWZot9tLIA94XmUQXEWjUeRyOXzwwQewbRuxWAwPHjxAp9MRBaTTaYxGI1SrVXQ6HfT7fRwfH2M8HsM0TSSTSZRKJbz11lvY3t4GAIkGR0dH6Ha7yOVyiEajGI/HiEQiCIfDiEQi51Pw/v4+3nzzTei6joODA8znc2xtbUHTNAwGA1QqFViWhfX1dfi+j8FgIFZt27ZY3c7ODhaLBUqlEqLRKNLpNGazGUzThKZpWFtbQ61WQ6fTwWg0QrPZhOu68rvZbBbxeBytVguj0UhyLJV88+ZNpFIpXLlyBZ7nYTKZIBwOnxlFt9ttdLtdOI6D3d1d1Go1lMtlxONxeJ6Hvb092LaNra0tzGYzdLtdjEYjWJYl0czzPNy9exemaeLtt98W/EKwxzydTCbR6/VwfHyMVqsF3/cRjUaRzWaRyWRg2zbq9ToODw+Ry+WgaRpc18Xe3h5u374Ny7Kwvb2N6XQqcjK6/NkKXiwWePPNN1GtVlGtVrG5uYlSqYRut4uDgwMYhoFUKoUnT56g1Wqh0WgIyu31emg0GqjX67h79y7u3LmD733ve/jBD36A1dVVYYJCoRAqlQo8zxNkTW+Ix+OCNo+Pj/HrX/8ah4eH2N7eRigUwsOHDwEAKysr8H1fwmYqlUKn01mqlV+2EokEvvvd72JlZQU7OzuIx+PY2tpCNBrF7u4uPM9DuVzG3t4earUaJpOJRArLsjAYDHD//n1omobHjx+j2Wzixz/+MVKplGCVxWKB/f19AY0kKPL5PLLZrDBltVoNtVoN+/v7eP/995HNZrG7u4vpdIpCoSBlaSQSQalUQrVaFST/Zyt4Pp9jZ2cHm5ubACAFfBAEGAwGCIIAN2/eRK1WQ7fbRaPRwHw+R7FYRKFQQDqdRqPRgO/7qNfr2N3dxfb2NvL5PFzXFYbKNE1EIhGMx2NsbGxgsVhgMBggFosBALrdLp49e4Z2u40HDx5gY2MD+XwelmUhHo8L6CBhEo1GEY/Hsbe3dyYFB0GAP/z
"text/plain": [
"<Figure size 360x79.2 with 2 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Cluster 86\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 360x79.2 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Cluster 87\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 360x79.2 with 3 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Cluster 88\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 360x79.2 with 2 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Cluster 89\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 360x79.2 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Cluster 90\n"
]
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAD4AAABPCAYAAACzv3YgAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAAsTAAALEwEAmpwYAAARRklEQVR4nO2bS48c13XHf/XoenRX9btneh4WRUiQDDqKiTiBo51XDmCvEiCbrAJkkUVWySbbLPMNtE2+QTZZBJADQRZkwI5hU4RNxqYEUxxyZvr9qHd1VWVBnqsaGqbADigtyAs0Ruzu6nvP+3/+50qrqoqXcelf9wG+rvVK8JdtvRL8ZVuvBH/Z1gsVXNO0f9A07RNN0zZPXj/RNO2Htc//StO0/9I0bappWqVp2vde5Hnq60Vb/Az4Z+BPgD8F/hv4D03T/vjJ5y3gY+CfXvA5fn9VVfWVvoAF8PdPvTcEKuB7X9U5zK9KwZqmGcBfAx6Prfy1rhcuuKZp7wA/ARwgAP6yqqrbL3rfL1tfRVb/X+Am8OfAe8C/a5r2R1/Bvs9cL9ziVVVlwL0n//wfTdP+DPhH4O9e9N7PWl9HHdcB+2vY98p6oRbXNO1fgf8EHgA+8DfA94AfPvm8D7wGdJ888qamaSvgoqqqixd5thdduv4NuA+kwAR4H/iL2ud/y+My9vTrX150OdNeMTAv2Xol+Mu2Xgn+sq1n1vHf/OY3VZZlRFGErj/WUZIk5HnOfD5nuVwSxzGbzYYoisiyjCzLKMuSsizJ8xzHcXBdl16vh2VZ2LaN67q0Wi1s+wsco2kahmFQFAWmaVIUBQCGYahnsiyjKAqiKGKz2TCZTMiyjDRNKcuSVquFruus12vCMCRJEt577z3tuQU3DOPKa7vdkuc5SZIQxzGNRgOAoihoNBoEQUCWZex2O+I4JgxDDMOg2WwSBAGO49But2k2m49r6RNhNU3Dtm2lMFlVVSmFp2nKZDJhPp8ThiFBELBer7FtWykwSRL6/T66rjOfz9X59hK8qioajQa73Y7dbkee52RZhud5NBoNqqoiSRKiKCJJEtrttjqU4zjkeY5lWSRJIqCFLMtoNBoYhkGj0cCyLCXobrfDNE31b03TyPOc2WzGp59+ynQ6Ve+3Wi1OT09ptVrM53PW6zWapjEajfjd7373LNGeLbimaWiahq7rFEWBpmlKIYZhKGvsdjuKoqAoCmW5qqqwbZs8zymKAl3X0XVdIackSQjDkGaziWEYSrFlWRJFEbZtU1UVaZqyWCx4+PAhl5eXFEWB7/u0223G4zEnJyf4vo/jOCoUfN/H8zym0+l+gu92OwzDAKAsS3Rdx7IsNE0jiiLyPCdNU/I8JwgCoihit9spd9d1XbmbWEnTNGXZsiyV0vI8Z7fbASgFaZrGZrPh4uKCOI7xPA/P83Ach1arheu6j4UwTbrdLu12mzAMKcsSy7KIomg/wauqUm4nFtM0jSzLCIKAPM8Jw5AwDMmyTIWF7/tKWWK1IAjY7XZXhK5hdsqypCgKLMtSysqyjM1mA0C328V1XRViZVnSaDRI05QwDAFwHIf5fK7yj4TQcwsuiacueJIkbDYbVquVOpiu63S7XbrdrordqqooigKpCo7jqGybpqmykuu6NJtN8jxXe0juCIKAJEmwbZter6eElj3gsVfWLRvHMXmeU1UV7XZ7P8HFEuK2ZVkSBAGz2YwoikjTlE6nw9HREd1uF03TCMNQWVRKn2maNJtN0jRVZW+9XtPr9bBtG9/3VeiI8ICqHoPBAN/31f6WZdFut7FtWyXIKIooioLdbneluvy/BBch0jTl/PycLMsAuH79OicnJyrzLpdLZrPZlXobxzGmaeK6rorbsixJ05T1ek2WZViWhWVZxHGslLzb7dhsNmy3W7rdLovFgiAI2Gw2GIbBcDik3W7j+z6+77NYLMjzHNu2efToEWVZst1u9xdcEk2SJGy3W87Pzzk9PeXk5IQ33niDxWLBr371K1arFavVivPzc1zXVVlWarXneSpfOI6jwma1WnH9+nVM00TTNNI0VYoUEHJ+fq6S32effUYcxxweHtLpdPA8j29+85tYlqXAz8XFBaZpEsfxfoIXRaFcPcsy5vM5pmlyeHjI8fExYRjyy1/+kg8++IAgCOh0Oty5c4e3336b4XDI2dkZuq4r1GaaJo1GA9d1FUqTcmfbNpZlUVWVSpTNZhNN03j06BGz2QzHcfj888+pqorj42N6vR53795lMplw8+ZNFWKGYRDHsfLM5xa8qioFPeM4Zrlcqto5nU755JNPeP/997l79y5pmnJ6eqqy9Wg0YrVasdlsFIpyHIdut8twOCRJkisgp17nwzAkz3OGwyGfffYZt27dwnEcgiAgjmNee+01vvOd7/DOO+8wn8/58Y9/TLfbxXEc4jhWgCnP8/0E3+12KqtnWYZt24zHY9brNR9//DE/+9nPCMOQb3zjG8RxTL/fx3EcZanxeEy32yVJElW/Pc+j2+0q4brdrkpSmqYpL0vTFMdxcByH4XDIaDRSPUGr1VIl8uDggG63y3Q6xXVdNE3DdV31m3sJLo1CHMfEcUy73cYwDG7duoVt2/zgBz8giiJWqxVRFNFoNFiv13ieR6vVwvM8pXWJPymHZVnSbDZpNptYlqWsLeXMNE2iKOLGjRsMh0OlFGlKdF3n4cOH+L7P97//fWazGcvlUiXSL1vPFDzPc/I8VzjcMAzm8znb7ZZvfetbjEYj5bKr1UqBENlcylccxyRJojxHYk+6qbIslWc1Gg06nQ6GYSjLDwYDlfSazaaq/WVZMhgMsG2bO3fusN1uVZyLgvYSHFBoy7Isms0mjuPw9ttv0+l0ME2TVqulIKJsWFWValfTNFWW1HUd13UV7HUc5wvW80n2F0+Q1nS1WqlaLXg+TVPV5Ul16Pf7dDodzs7OaLVaqqTuJbjASUlKAhrksOLGpmmqmBOAIqXEtm1Vuw3DoNfrUVUVruuqWDRNU8FhUQKA7/tUVUUURVc6tqqq2G63lGWpyma73WY0GjGbzRRye9b6Usgq1jFNU9VaESSOYxV3gtjEO6Q0iXKEhPB9/0pba9s2jUZDubxA3TzPVesp7wFX4KphGIr4ME2T4XCoKoY0VXsJLs3AbrdTlq7DUXGnoigwDINut6vYkN1uR5IkmKapMr24bL0Xr1taLFoUxZVuzrZtBWmFdJD3ZX/TNOn1eozHY2azGYvFQnnOcwsu1q4LLDElnVQcx0rjpmliGIaKazmkaZoqzqWXVwd48gx80aFJSRPvqTMxQmIIuhPLizcOBgOKouD+/fsqPJ5bcHlQ0JW8JJFJ8yEWEsubpnkFAwBXLCqr3poKJBUFy3eluRFmJs9zpSjJ9JqmqYbE8zxVgfa2uLih/JUeWJQiSUoOId2RPCtC1cGJJL6yLPE8D8uyVJzWlSOoUfB7kiS0Wi31O9LI1A0ke1mWhe/7XFz84bnjM+nleoaV9hJQHZQkJMnYgrfF6nU3FjywXq+v0EgigJAegtYEJj948IDz83OCIEDXdTzPY7fb4TiOcu86mSGfDQaD/dtScWHRqvBu4oq6rpNlmXI/QVzCuzUaDeXCwqXlec5isVAdmiRN2W+73RIEAdvtVvX8Am+bzSb9fl+FkXRk8rzQWNIX7A1ZJdmIkHWqSDQt7islT5Qk7i2dXVEUCqpKuXEch0ajwXK5ZLvdst1umc/nKmmJiwdBoM4zn8/xfZ8wDGm1Wlf2EeUBSil7CV7nxurQUv5bkp54QxAEqraKpZIkUfSQ8ODybBRFfP755/z0pz/lzp07iof3PI+joyNarRbT6ZTFYqFyged5V7h3GUyYpnmlKriuu39WF83XM7GUFSlt4s7SR9cppzAMlXuL60rzcnl5yd27d8myjI8++ojbt29jWRbD4RDf99W0JQxDttstvV5Plcn60nUd3/dpNBoKLktYCOn53ILXJxuSZet/AdX0i1vKpEWsLqhuPp/jOA7wGAInScLPf/5zZa3T01Ns26bT6ajYl+TX7XYZDAbM53OSJOH4+FgRmlJS69+P45jRaMTh4eF
"text/plain": [
"<Figure size 360x79.2 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Cluster 91\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 360x79.2 with 3 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Cluster 92\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 360x79.2 with 3 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Cluster 93\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 360x79.2 with 2 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Cluster 94\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 360x79.2 with 2 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Cluster 95\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 360x79.2 with 2 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Cluster 96\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 360x79.2 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Cluster 97\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 360x79.2 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Cluster 98\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 360x79.2 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Cluster 99\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 360x79.2 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Cluster 100\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 360x79.2 with 3 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Cluster 101\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 360x79.2 with 2 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Cluster 102\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 360x79.2 with 2 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Cluster 103\n"
]
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAD4AAABPCAYAAACzv3YgAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAAsTAAALEwEAmpwYAAAScElEQVR4nO2by29c93XHP/fOfc6T8+AMSVGkSNGKEsmIkdoOGriRNnFjtECAZhOgKLrosquuiu4LtIv+A0U33mdTIGgAJd1kEaWJzER2pEiUTZp68CFySA45d2bu+3ZBnZ/vKLFRDUCngHQBgpw79/H7nuf3nPOjlmUZL+Oh/7EX8Mc6XgF/2Y5XwF+24xXwl+04U+Capv29pmkfaZp28uznF5qm/UXu+/c1Tcue+/mfs1yTHMYZP/8J8I/Ax5wK+W+B/9Q07U+yLPvo2TX/DfxN7p7wjNcEgPZlMzdN0w6Bf8qy7N81TXsfaGVZ9pdf6iL4En1c07SCpmk/AMrAzdxX72iatqdp2gNN0/5D07T2l7Kes9a4pmmvA78AHMAD/jrLsv969t0PgCHwKXAB+GegAPxJlmXBmS4sy7Iz/QEsYAV4E/gXoAtc/Zxr54AI+KuzXtdZBzeyLAuBT559/EDTtLeAfwD+7g9cu61p2hPgtbNe1x8jj+uA/Ye+0DStBZwDds58FWds5v8K/Bmn/vs6p6aeAu9xGuT+DfjTZ99f5zQWPAEqZ+6CZwz8feAhEAB7nObsP3/2nQvceHY+fHbd+8D5swadZdmXn8f/vxyvuPrLdrwC/rIdLy3wL2Ru7733XjY7O8vi4iLT09NYlkW5XKZcLuO6LqZpkqYpmqah6zqmaapzALp+KlfDMIjjmCzLKBQKaJpGHMcYhoGu62RZNnaPPC//DDkPn6Vg+azrOkEQqHcEQcCPfvQjVldXuXHjhvbCwDVNo1gsqpcXCgUMw8A0TbVoTdPQNI1CoTC2aFnUH/qdpim6rpOm6VhulXOFQmHsGkB9lnclSfJ7a5VrXdelXq9TrVY/F9sXmrrv+xQKBUzTRNM0JWUB/TwgWWheALquK6E8r8W8kORvwzDU5ziOSdOUJElIkoQoiojjmDAMieP49wBrmkaSJBQKBS5cuMDU1NTnYvtCjYfhaTOkUCgQRdHY4sQ8kyQhyzLiOP49bZumiWVZ6loBJPcUCoWx58dxrP4GCIKANE3VewqFAnEckyQJhmFQKpVwXRfLspQLhWGIYRjUajUWFxcnAx4EpyXxcDgkCAJqtRqlUgnTNCkWiwyHQzY2NgiCQPm87/u4rouu6yRJQqVSIY5jBcowDCUEy7KUyaZpShiGWJZFGIZEUUSv18N1Xfb39xmNRpTLZYIgIAgCLMviypUrLC4u0mw26fV6AMoyACqVymTARXKFQoHr168zNzdHrVYjyzKiKKLb7bK1tcXu7i5BEHBwcACgAl2WZUxNTWHbNoPBQPmc4zi4rqu073kely9fZnV1VVlAlmUMBgOSJGE0GhFFEbZtU61WcRyHlZUVDg8PefToESsrKwyHQ7Iso9/v89prr1EulxkOh5MBt20bx3E4Pj7m4sWLlMtl5U+GYVCpVBgMBmxtbeH7vgpWuq7jOA6VSoW5uTlM02Rvb49Go4FlWVSrVVZWVoiiiPX1dWZnZ7ly5QpBEHB8fKyepes6Ozs7HB8fK4vZ39+nUqnw/e9/nyRJWFtbY319nU6ng+/7PHjwgNFoxNtvv41pmpMBr9fr9Pt9BoMBq6urXL9+PV95Yds2b775JsfHxyooJUlCGIacnJwwNTXF9evX8TyPXq/H/fv3qVarSju2bRMEAQsLCzx+/Jjl5WW63a6yjFu3btHtdmk0GsqX+/0+juPwxhtv0O/32dzc5O7duxiGQavV4sqVK6ytrdHtdqnX65MD39/fp9Vq8ctf/lKBuXr1Ko1GA9M0effdd3ny5ImK6MPhkNFoRBzHlMtlLl26hGVZPHz4kFKpRBiGDAYD7t+/rzjBcDjEtm3K5TJXr15VvvzTn/6UhYUFLMvCMAxs2yYMQ7rdLr/97W9pt9vKFcTdZmZmWFlZIQxDOp3OZMCbzSa7u7uYpsloNOLOnTscHR2xvb3N9773PQzD4OjoiG63S7FYJAgCFQgty+LJkyf8+Mc/5o033mB7e5vhcMi9e/eo1+ucP38ey7JI05SbN2/y1ltv4bquyhiPHj3C8zwcxyEMQ0ajEWEYYpom09PT3Lp1iyzL2N3dxXEcDMPA9336/T7VapU7d+7wjW98YzLgFy9eZHV1lVarRZZluK6Lbdt8+OGH+L7P3Nwc9+/f5+DggM3NTZIkodvt4jgO5XIZgDt37rC1tYVpmkpjnU6HdrutWFupVOLmzZu4rsvGxgZZlvGb3/xGcYeTkxOiKFLBs1qtsry8jGVZeJ7HYDBgamqKWq12CsowMAyDDz74gO9+97svDnxra4vhcKjYlKSgk5MTfv3rX3P37l2Oj49J05T19XXK5TK9Xo/Z2Vk6nQ6bm5tsbm7iOA6DwYB33nmHmZkZzp07p3JvlmVcvHiRGzducHh4yP7+Ppubmzx9+pR+v8/i4iJpmnJwcMD29jZJkiiAlmVRr9cZjUYcHx/TbrcVnXZdl9u3b0+m8fX1dZWb82TF8zziOGZvb49yuczS0hJwmsba7Ta1Wg3XdVlaWlIaqdfrnDt3jm63SxzHOI6jyM6lS5e4ffs2GxsbnDt3junpaXZ3d5mamqJQKFCv1/E8jwsXLhDHMfPz8zSbTQ4ODkiShE6nQ7PZVLXCcDjENE0ajcZkwIWMDAYDgiDg6OhIUdharUaj0aBarVIqlVheXgZQhYKYsBCZr33ta2xtbRFFkWJ0juOQpimu6/Ktb32LR48eUSgUaLfbTE9Pk6Ypvu9jGAYzMzPU63VVPziOw+zsLLqu0+/31fp838e2bUV3JwIuZGFhYYHRaMTTp0/xfZ/FxUUajQaGYeA4jvJ/4dHCxorFIqPRiKWlJRYWFnj06JEqMuAzlpUkCfV6nY8++ohKpUKtVmNmZobBYIDjOFiWpeoFQBUxIuBarYamaZimydTUFJ1Oh7t3706u8bm5OXq9Hp1OB03TKJVKeJ7H/Pz8WNUGKO2laap4u2maJEnC8vIyW1tbqlCpVCo4jqOCl67rVKtVrl69yu3bt7l48aKyKCmICoUCYRiiaRq2bRNFEbquKwrtOM7YWg4ODmi3P38M94XAi8Ui29vb6LquSr1KpaIiMpyadr7akoLFMAyiKGJmZkbFiGKxCKBcQNiZaHN5eZk7d+6wtrZGs9mk3W4rgUqsKRQKWJalAq3jOMq38zw9yzLm5+cnAy7pK01TbNtWNLVUKilzlsIDUAFQ13XVtNjb28OyLNrtNp7nEUURh4eHytylopL8fO3aNX7+85/z5MkToihifn5eFUDiVsISpTdgmqZ6XhzHVCoVZmZmaDabk2v80qVLLC8vqxLRtm31IqmZxazF/CRV3bt3D9u2abfbBEHA4eEhJycnDAYDRV6iKMLzPHRd5+DggMXFRa5du8ZPfvITbt26xWg0Ynl5eazrk296iN+L4MMwpFwus7y8rKj1CwM/Pj5Wvw8PDzEMgyRJlOQlvdm2TaFQUL+73S77+/sqz/Z6PW7dusXDhw/xfZ+3336b5eVlPM8jyzJ++MMfEkURnU6Hb3/723z961/n+vXr9Pt91tbWGAwGfOUrX1Epq1Ao4LqusjBN04iiiKOjI3Z2drBtm2KxqMz+hYEHQYDjOIp/SxSNoohyuUwYhui6zuLiIqPRiPX1dRXZp6enMU1Tafnjjz9mY2ODubk54jhWfN4wDOr1Op988gk7OzusrKwwMzNDtVpldnaWarVKv9/n008/JYoiarUaly9fJkkSfN8nCAJ2d3cZDAbEcczU1JSywonTmeTcJEloNpuqOXD79m0VOIIgoFKpcHJyQhzHVKtVVYv7vo/neZimybVr13j99dcplUrU63UlzFKpxHe+8x3Onz/PwcEBFy5cUEJpNptMT08DqO7L48eP2dk5HaZWKhXK5bKq1aXPJiXsxMDlRtGy67rKzOM
"text/plain": [
"<Figure size 360x79.2 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Cluster 104\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 360x79.2 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Cluster 105\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 360x79.2 with 2 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Cluster 106\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 360x79.2 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Cluster 107\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 360x79.2 with 2 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Cluster 108\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 360x79.2 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Cluster 109\n"
]
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAHgAAABPCAYAAAAgGwHHAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAAsTAAALEwEAmpwYAAAcM0lEQVR4nO19S48b59XmU1cWi1Ukm2TfqLY8EiIZmUS24GB2weBbZWFgMr8gwIf8gfkVs5jF/IdZDOb7glllZjOLZB8jiAE7k01sy1K31K2+kMVbsYrFusxCfo4PaalF90SW0OgDNFokq6ve8577c85LGVVV4YauL5lvewE39GbpRsDXnG4EfM3pRsDXnG4EfM3pRsDXnG4EfM3pjQvYMIx/bxjG/zIM45lhGJVhGP+sPnMMw/gvhmF8YRhGbBjGiWEY/8MwjNtvel3/aHpX+fwxLDgA8H8B/CcAydpnPoCPAfznb3//RwDvAfg/hmHYP8La/pH0bvJZVdWP9gNgBuCfX3PNvwVQAXjwY67tuvL5Lsbg5re/o7e6ijdPPwqf75SADcNwAfxXAP+7qqqnb3s9b4p+TD7fmTj3bSz67wDaAH79dlfz5ujH5vOdEPC3TP8LgAcA/qmqqsFbXtIbobfB51sXsGEYDoB/BfBzvGD6+Vte0huht8XnGxewYRgBgJ98+9IEcNswjIcAhgCOAfxPAP8OwH8AUBmGsfftteOqqtbLjXeW3lk+f4SS4Z/wohxY//lvAP7NKz6r8Joy4137eVf5NL5d3A1dU3qnyqQb+sfTjYCvOd0I+JrTjYCvOd0I+JrTpXXwJ598UgHA6ekpxuMxwjDET3/6U9y9exftdhuNRgNBEKBer8N1XdRqNdRqNdj2i9vatg3LsuQ3AJimibIsWVrANE0YhiGvDcMAAF1+wDAMlGWJPM/lPnyP71dVhSzLsFgskKYpkiTBbDbDb3/7W+N1m/DBBx9Upmlid3cXH374IXZ2dtButxEEAZrNJjzPW+HPcRwYhiG8OY6zsi4AwqPmr6oqua4sS3m+YRjI8xxFUci1/L1cLuVei8UCSZIgTVPEcYz5fC578pvf/OalfF5qwZ7nwfM8dDod2ezlcimf27b9UiHyWi6sKIqVRfM+a3XkChmGIT98bVnWynvChGnKNaZpyj31Jl5GruvCsizZTH1fx3GETwpSr0E/Z/19/ibvJL0Xmn/TNGGapjyjLEsxFioz97MoClHsPM9fydulFmzbNqqqQhiGqNfryPMcaZqiLEuYprnCOLWaWqiFScFbliUCKIrie9qtr9WbRMHx33rTuMF8bdu2eIlNBdzpdDCbzTCfz0WBTdMUwVOBtfdxHEc2uCzLFQWk5WlhaYFrnvRrrRx6D3kd96AsSxRFIWu5jM9LBUzNKIoCjUYDo9EIaZoK09RwCspxHKRpCgBwHEceblkW8jxHWZZwHGdFkLxGW8HL3DXXQSUqikKEQW+gr+WaNiHP85CmKYbDoayDyqu9lGVZYjmaP7pYvr/ueXhdURRwXfelwubPugfJskyEyTWs71uWZa/k7VIBU0OqqoLruphMJsjzXBYyn8/hOA6WyyXSNEW9XhfNpTVRAJZlCZO0hHW3BUCsQmtwnudYLpdIkkQ22DRNETj/zfvzhxr/OnIcB1mWifJy/UmSiPWkaYpGowHTNJEkiQiePBRFAWDVS2nrotd6GX/80QqcZZnsUZIkcm/Gca00Vxawjo069uR5LpqVJIlobxiGou3NZhPNZhO+74sFU4C0BLp5urTlcolarQbDMJBlmSjOZDKBZVlwXRfD4RBZlsFxHNlwLWRuIj3GJrQew/M8R5IkosRRFGE6naJerws/8/kcrVZLki5aVpZlsG37e4JkEqWJHoiJYRzHK0rB0AC8MLblcik8kmhwVxIwF82bMibNZjMURSGMZVmGRqMB3/exWCwwnU6xWCxwcXGBvb09hGGI09NTjEYjNJtNWJaFra0tBEGA4XCI+XyOwWCAk5MTBEGAMAxFwNzkRqOBWq2GOI5XMsswDEUpqqpCt9tFvV5fcbevIx3/bdtGHMcoikKEFwQBoihCt9uFbduYTqdIkgRRFKFWq2F/fx9FUWA8HqPRaEjYcl0XcRwjyzLkeY7BYIB6vY5er4c4jnF2dgbDMLBcLuH7PvI8x2g0wnQ6he/7aDQa4gkdx0GtVsNisRCPRvd8ZQHrWGFZFhqNBoqiwGQyEZfleR6qqsJ0OkWe55hMJkiSBO12G4Zh4Pz8XAQ2Go2wtbWF3d1dDIdDLBYL2bCjoyP4vg/DMBDHsQh2NBohjmNJ5Mh4q9WC67riBcqyRJqmyLIMYRjKxm1CvEcQBBiPxyuWEgSBJFVRFKEsS8xmMwCQzT4+PoZhGDg7O0O73cbOzg5s20az2YRt20jTFF9//TUmkwkajQaazSbKssR0OsV8PkdVVaL4wAurXCwWsjaGhX6/jzAM8fz5c/FURVGsJKY/SMDazXQ6HYRhiMViAdM04XkearWaMEFLXiwW6HQ62NnZwWg0wsnJCcqyRL/fxy9/+Us8ffoUrDkZ28/OzrC/v4/9/X0RaJqmqKoKtVoNwItSRrt9Wm2apiiKAr7vryjfcrnEZDLZSMBlWWJ/fx+WZeHw8BAPHjyA67pivYZhYGdnRyqI7e1tCR1lWWKxWODjjz/GJ598gslkgufPn8P3fbiuC8/zcHZ2hqqq8POf/xzL5RJxHH+vds+yDPV6XRTA8zwJGY7jwPM8zOdzLBYLjEYjCXuvSyYvFXCn0xG3RderY65t22g0GnBdV9xIu91GkiSYTCayAdPpFGmaYn9/H41GA7///e/RbrcBvIhZp6en6Pf7aDQa8gwyQ2uqqgq+7+Pu3buwbRvz+Vwy6b29Pdy/fx9JkuDTTz+VzVuPea+ibreLWq2GKIrkb9M0RRiGcBwHruuiLEuEYSixPU1TmKaJ2WyGs7Mz8Ry9Xg9ffPEFdnZ2UK/XYZomLi4u0Ov1cOvWLRwfH2M6nYprDYJAFPb9999HGIbiMZh7dLtdTCYTPHv2DGEYSihkiAjD8GoCpvulpumkgUnN2dkZlssl5vO5/A0ZYwIwmUzwxRdfSGlxeHiI27dvi8uP4xhxHCNJEkynU4zHY7HC2WwmMf/rr7/G0dERtra20Gq1UBSFoFYAJOmipbVarY0EHIYhxuMxDMPA1tYWarWaKNbp6alYXVVViKIItm3DdV3JXuM4xh//+Eecn5+j3W7j008/xcOHD6WMefbsGVqtluzTYDCQpJKVAQAMBgN4ngfHcVCv12EYBu7fv4/d3V00Gg1ZC0NPrVbDdDoVY/nBAk6SRARMf083YhgGoijCeDwWt5EkCTzPwy9+8Qvs7u7KJgRBgMlkgs8++wxFUaDT6aDdbkvcOTk5wWg0gu/74lbDMBRmsizDdDrFaDRCu93GcrkU4V1cXOD8/BxPnz4Vl8jMfFMLjqJIFHh3dxf1eh0AcHx8jPl8jizLsLe3B8/zcHp6inq9jm63i9FohNu3b6MoCsznc/zlL38RwIPJomma6HQ6iKIIFxcXGA6HUkqynDIMAwcHB/jyyy9xeHiIfr+PP/3pTwiCABcXF/jqq69eCuBw/xivf7CAZ7PZioDn8zksy4Lv+1gulxgOh5jNZmg2m+KqiQjt7u6i3W7j8PAQZ2dnkiGmaYoHDx5Idk3m/vznP0u8Zbw/OzuD4zjo9/sYDAaoqgpJkqDZbGJ7e1vi5MnJiYAdSZIgCAIEQbBxHcysmaXf+++/j6Io8OzZM9i2Le7V933JEbIsw3vvvYf79+9jPp/j6OgI4/EYo9EIH330Ee7du4dut4uiKDCdTvHkyROcnp6iKApsb2/DsiwMBgNJxu7evYv5fI7JZII4jrG7u4tbt24hDEM8ffpUKpatrS14nidla7fbxd///verCThJEnHH1BoCGq7rotVqodVqYXt7G2VZIooiLJdL9Pt91Go1FEWBdrstLo3utN1uw3VdAC+yRLqYKIrQbDblM9u2sbe3h3q9jlu3biFNUxiGgVu3bqHT6SDPc2xvbwsSxbq8qiqx4k3IdV1x91V
"text/plain": [
"<Figure size 360x79.2 with 2 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Cluster 110\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 360x79.2 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Cluster 111\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 360x79.2 with 2 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Cluster 112\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 360x79.2 with 2 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Cluster 113\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 360x79.2 with 2 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Cluster 114\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 360x79.2 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Cluster 115\n"
]
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAD4AAABPCAYAAACzv3YgAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAAsTAAALEwEAmpwYAAAQyklEQVR4nO1bS4sc53p+vrrfu3t6unumNZqRLV8wtrEQAe/iOJCNcSB4k4SzOfsEsjUhvyCL/IazSQJZBBJiCFlkY4KRjwlyCI4IknUZSdMzfavuut+zkN/X1dKJYrUYKyB9UIymp7qq3tvzPu/zlUTTNHgZl/SiH+BFrVeGv2zrleEv23pl+Mu2zt1wIcRvCyH+UQjxQAjRCCF++RvOeUsI8fdCCF8IEQsh/l0I8c55PtfPEXEHwH8C+DMAyeN/FEK8BuDfANwG8LsA3gPwFwDC83wo8XMyNyFECOBPm6b5VeuzvwHQNE3zi5/tQfCCa1wIIQH4fQDfCSH+WQgxFUL8Wgjxh+d97xcNbkM8KoU/B/AvAH4PwN8C+GshxKfneWPlPC/+ExY5/h+apvmrH/59XQjxWwD+BMA/nfeNX9SaASgBfPfY5/8F4PA8b/xCDW+aJgfwawBvP/antwDcPc97n3uqCyEcAG/88KsE4FAIcQXAommaewD+EsDfCSG+BPCvAD4G8EcA/uBcH6xpmnM9APwOgOY3HL9qnfNLAP+NR33+PwD88Xk/18/ax/8/rRcNbi9svTL8ZVuvDH/Z1lP7+GeffdZcvXoVb731FlzXhaqqUBQFlmVB13VYlgXTNKHrOmRZhiRJUJQfL6lpGoQQ/HvTNKiqCgA2PpckiT9rmgZ1XaMsSz6XvleWJYqiQJZlSJKEfz89PcV0OkVZlnjw4AG++OIL3L17F3mew/f9H2/0Uw1XVRWyLEPTNEiSBCEEFEV51AfF5vWEEBBCoCzLjc/JIdQ2yZi2sfQZ/SzLEnmeo2kadmRVVcjzfOPZAKCua2iaBlmWUVUV+v0+Lly4gDt37jzxLD/ZcMMwMBgMoCgKR1NRFBiGAUVROEJ0lGWJuq7ZCRQpMr6ua44onQeAHUnXybKMn6Gua2RZhjzPUdf1RhYAgKIoME0TAJDnOWRZxsHBATzPQxj+71rGUw3f29uD67qQJAlVVfFN8zxHnucoioJTkpxDmUGRpMiS98l4OodW0zQoioIPSuOqqrBarRBFEZIkQZZlUFUVTdNw6dF59HzD4RA7OzuYTCbbGT4ej6GqKuq6Rp7nWC6XaJoGcRxDURRomgZFUaCqKizLgizLnA30U5Zl/htFG8BGFpAzF4sFyrLEer3GbDaD7/uo6xrL5RJhGCJNUyRJAiEEbNuGoiiML1mWwTRNOI4D27YxGAyeKMefbHi324UQAmma4u7duzg9PUWSJJAkCf1+fyM6BD6qqqLT6UDXdQyHQwwGA/R6PXieB1VVURQFgEc1LssyR2yxWODOnTuo6xrr9Rqnp6eYz+fwfR9RFG1kgWma0DQNuq7zUZYlTNPE4eEhDMPA3t4e48AzG+66LmRZxsnJCXzfR6/Xg+M4yPMciqIgTVNUVcVIS5/XdQ3XdXF6esr1XBQFXNdFnudcElVVQVVVpGmK5XKJsiwRhiHCMGRnWpaFbrfLTnJdF5qmoaoqRFGEsixRliWDYBRFcBwHe3t76HQ62xmuaRrKskSWZRiNRjg4OOAbKIqCOI43ov44uGmaBsdxoGkaDMPgrKAuUVUV4jjm71HHyLKMI0vX0XWd8SOKIm55dDRNw92jaRp0u10MBoPtDFdVFXmew7ZtGIbB7UwIwW2EjKQ0TtN0A7nrumYjZVlGt9uFqqrQNA1JkmAymWAymWA2m2E+n2M+nyMIAgZPVVVhGAZs24amaciyjB2TZRmDnOM4jCVJksCyLIxGo+0jXhQFBoMBZFlm4MmyjKNUFAWTCQIfMt51Xezs7GB3dxdCCAa0TqcDwzBgWRbm8zkePnyI27dvM3pTq6rrGrIsMwZYloWiKDZaaVmWjBdEqMixOzs72xkuSRI/IADEcYw4jrFarZDnOZdCEASYTqcoigJRFMF1XQDgTHAcB2mawrIs/p5lWdA0Dd1ulzNE0zQA4KiRg6Mowu3bt9HtdjGZTLC3t4derwdd19k51No0TWPiRc+9leG2bUOSJK5jAAiCAL7vc7u4efMm5vM54jhGnud455134Hke99e6rhHHMUzThG3bkGWZwWowGGBnZwfHx8dQVRWqqmK1WnGaE0EpyxLfffcdp76maZhOp7BtG51OB7ZtcytrZ8RWhgPgtJFlGWmaAgDOzs5wfHwM0zTxxhtvoNfrwbIsfPnllzg6OoJlWTAMg8GI+n1VVTBNkz+XJAmO4+Dw8BA3b95kAuJ5HgzDQFEUfN7ly5e5Je7u7sIwDKRpCtd18dprr+HixYvMHYqiQJ7n2/dxirokSdB1Ha7rIo5j7O/vo9vtwjRNuK4LwzAQBAE+/fRT6LrOjnIch8+TZRmmaT7B9YuiQK/XQ7/fx3w+B/BjbZdlyYaPx2Ps7e0hz3MYhsFR73a7eP311+E4DrNFAtWtU51aBA0Atm1jf38fALBer6HrOkzTZASOoghxHCOKIgghOPXIaZ7nPUFZkyRBXdcYj8eI43jDKbIsI89zJkZUt8QI+/0+Ll26hOFwyMbS+VmWbW84eY+WLMtMatbrNXzfZypJPVqSJOzu7jLCUtp2u10eMuigIYZ4gizLuH//PgzD2GiJZEyapow7g8EA4/GYyQ2VBQDuODQnPLPhbYJAiAsAlmVxTyekp/Q0DIMBiOikJElQVZVRmgwhY2iYOTg4YBSn1kd8noiRpmmwbZsZXHv+b8/oVBLPFfGyLKHrOgBsGKgoClNYQnxCbUrN9nUoMhRxIjxVVXGfH41GPA8QqtN1yBGapvEoSkyPokzXzvN8e65OUdF1nWuPbt6OiGEYSJKEpzQAzNkfp6NtUYKWJElc622aS0a3Hd2+BjmcZnUqHWJ1nudtZzgN9mQEpVpbZqKbtSNEhpPjKKLUm4lkNE3DYOX7Pg85+/v7sG2be3J7BKY6zvMcVVUhSZINikv3oylwK8PjOGYQautlhmGwQygTyBACwzZyt0UFopSU/oQJwKMMWy6XPLgMh0O4rrtBSOh7aZpyuzMMg6MOAFmW8bNuZTjVDxnUbm1Ud8CTwmEbwIjNkRBB2dKue1VVsbOzg9FohOl0irt373J7PDw83ACwoihQ1zWSJGEQo3IimSoMQ+YRWxlO6ZkkCYNJW0pqt7p2iyKGR1McERg6nxxXFAWPtsTIiL7OZjNuj8Qh2hIYTWjUVcqyRJIkiKIIq9UKALaXngAgTVMWD2imBjZ3WSnCdJAM1B46COioDuu65snswYMHyLKMhQUad9M0xY0bNzCZTJgttokPGRpF0RP1vlgscP36dXz++efPbvitW7fw7rvvsurZRvR2lPM8R5IkiOOY0d1xHCiKgsViwTpZnufwPI8nuuPjY9y+fRvHx8eI45jZ2IcffoiiKNgps9kMs9kMBwcHTE1JW2+LkGmaYr1ec7Rv3bq1XcS//fZbvPnmm0/IvURKCAOSJNkYVS3L4k2H1WqFmzdvIkkeveI2Go2Q5znCMMRsNuO/r9drGIaBS5cuoWkanrriOMZsNmMHEFtrmgZhGHJNh2HIRKrX6yEIgo1SfCbDKVqO4zDIEVorioI8zxFFEebzOfNpwzB4jEzTlI/VasXASDiQJAnW6zW3Ndu2cXp6CkVR0O12eRag9keRH4/HGA6HnG3r9Zp1urZ2sPV0RorIaDRio0l1qesaQRDwVk2n0+EWQ0wqDEMEQYDFYoGzszNuX2maoq5rhGHIhtM09uDBA4RhiF6vh/F4zGURBAHjTRAEiKII3W6XU5y4ummaiOP4qZsJ/6fhaZrC933u2QBYIAQeCRDff/89TNOE7/usmuq6jvV6zTW4XC65FoUQODk5ged58DwPURQhyzLYts1GUhZFUQTLsngYIoECAHRdZ02QCBJxgrOzsw3l9ZkNr+uaDdI0jSel1WqFLMtw7949rFYrrl9CXJr
"text/plain": [
"<Figure size 360x79.2 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Cluster 116\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 360x79.2 with 2 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Cluster 117\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 360x79.2 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Cluster 118\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 360x79.2 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Cluster 119\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 360x79.2 with 3 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"def plot_faces(faces, labels, n_cols=5):\n",
" faces = faces.reshape(-1, 64, 64)\n",
" n_rows = (len(faces) - 1) // n_cols + 1\n",
" plt.figure(figsize=(n_cols, n_rows * 1.1))\n",
" for index, (face, label) in enumerate(zip(faces, labels)):\n",
" plt.subplot(n_rows, n_cols, index + 1)\n",
" plt.imshow(face, cmap=\"gray\")\n",
" plt.axis(\"off\")\n",
" plt.title(label)\n",
" plt.show()\n",
"\n",
"for cluster_id in np.unique(best_model.labels_):\n",
" print(\"Cluster\", cluster_id)\n",
" in_cluster = best_model.labels_==cluster_id\n",
" faces = X_train[in_cluster]\n",
" labels = y_train[in_cluster]\n",
" plot_faces(faces, labels)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"About 2 out of 3 clusters are useful: that is, they contain at least 2 pictures, all of the same person. However, the rest of the clusters have either one or more intruders, or they have just a single picture.\n",
"\n",
"Clustering images this way may be too imprecise to be directly useful when training a model (as we will see below), but it can be tremendously useful when labeling images in a new dataset: it will usually make labelling much faster."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 11. Using Clustering as Preprocessing for Classification"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"*Exercise: Continuing with the Olivetti faces dataset, train a classifier to predict which person is represented in each picture, and evaluate it on the validation set.*"
]
},
{
"cell_type": "code",
"execution_count": 126,
"metadata": {},
2022-02-19 10:24:54 +01:00
"outputs": [
{
"data": {
"text/plain": [
"0.925"
]
},
"execution_count": 126,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from sklearn.ensemble import RandomForestClassifier\n",
"\n",
"clf = RandomForestClassifier(n_estimators=150, random_state=42)\n",
"clf.fit(X_train_pca, y_train)\n",
"clf.score(X_valid_pca, y_valid)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"*Exercise: Next, use K-Means as a dimensionality reduction tool, and train a classifier on the reduced set.*"
]
},
{
"cell_type": "code",
"execution_count": 127,
"metadata": {},
2022-02-19 10:24:54 +01:00
"outputs": [
{
"data": {
"text/plain": [
"0.7"
]
},
"execution_count": 127,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"X_train_reduced = best_model.transform(X_train_pca)\n",
"X_valid_reduced = best_model.transform(X_valid_pca)\n",
"X_test_reduced = best_model.transform(X_test_pca)\n",
"\n",
"clf = RandomForestClassifier(n_estimators=150, random_state=42)\n",
"clf.fit(X_train_reduced, y_train)\n",
" \n",
"clf.score(X_valid_reduced, y_valid)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Yikes! That's not better at all! Let's see if tuning the number of clusters helps."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"*Exercise: Search for the number of clusters that allows the classifier to get the best performance: what performance can you reach?*"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We could use a `GridSearchCV` like we did earlier in this notebook, but since we already have a validation set, we don't need K-fold cross-validation, and we're only exploring a single hyperparameter, so it's simpler to just run a loop manually:"
]
},
{
"cell_type": "code",
"execution_count": 128,
"metadata": {},
2022-02-19 10:24:54 +01:00
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"5 0.3875\n",
"10 0.575\n",
"15 0.6\n",
"20 0.6625\n",
"25 0.6625\n",
"30 0.6625\n",
"35 0.675\n",
"40 0.75\n",
"45 0.7375\n",
"50 0.725\n",
"55 0.7125\n",
"60 0.7125\n",
"65 0.7375\n",
"70 0.7375\n",
"75 0.7375\n",
"80 0.7875\n",
"85 0.75\n",
"90 0.75\n",
"95 0.7125\n",
"100 0.775\n",
"105 0.75\n",
"110 0.725\n",
"115 0.7625\n",
"120 0.7\n",
"125 0.75\n",
"130 0.725\n",
"135 0.7375\n",
"140 0.7625\n",
"145 0.6875\n"
]
}
],
"source": [
"from sklearn.pipeline import make_pipeline\n",
"\n",
"for n_clusters in k_range:\n",
" pipeline = make_pipeline(\n",
" KMeans(n_clusters=n_clusters, n_init=10, random_state=42),\n",
" RandomForestClassifier(n_estimators=150, random_state=42)\n",
" )\n",
" pipeline.fit(X_train_pca, y_train)\n",
" print(n_clusters, pipeline.score(X_valid_pca, y_valid))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Oh well, even by tuning the number of clusters, we never get beyond 80% accuracy. Looks like the distances to the cluster centroids are not as informative as the original images."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"*Exercise: What if you append the features from the reduced set to the original features (again, searching for the best number of clusters)?*"
]
},
{
"cell_type": "code",
"execution_count": 129,
"metadata": {},
"outputs": [],
"source": [
"X_train_extended = np.c_[X_train_pca, X_train_reduced]\n",
"X_valid_extended = np.c_[X_valid_pca, X_valid_reduced]\n",
"X_test_extended = np.c_[X_test_pca, X_test_reduced]"
]
},
{
"cell_type": "code",
"execution_count": 130,
"metadata": {},
2022-02-19 10:24:54 +01:00
"outputs": [
{
"data": {
"text/plain": [
"0.8125"
]
},
"execution_count": 130,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"clf = RandomForestClassifier(n_estimators=150, random_state=42)\n",
"clf.fit(X_train_extended, y_train)\n",
"clf.score(X_valid_extended, y_valid)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"That's a bit better, but still worse than without the cluster features. The clusters are not useful to directly train a classifier in this case (but they can still help when labelling new training instances)."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 12. A Gaussian Mixture Model for the Olivetti Faces Dataset"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"*Exercise: Train a Gaussian mixture model on the Olivetti faces dataset. To speed up the algorithm, you should probably reduce the dataset's dimensionality (e.g., use PCA, preserving 99% of the variance).*"
]
},
{
"cell_type": "code",
"execution_count": 131,
"metadata": {},
"outputs": [],
"source": [
"from sklearn.mixture import GaussianMixture\n",
"\n",
"gm = GaussianMixture(n_components=40, random_state=42)\n",
"y_pred = gm.fit_predict(X_train_pca)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"*Exercise: Use the model to generate some new faces (using the `sample()` method), and visualize them (if you used PCA, you will need to use its `inverse_transform()` method).*"
]
},
{
"cell_type": "code",
"execution_count": 132,
"metadata": {},
"outputs": [],
"source": [
"n_gen_faces = 20\n",
"gen_faces_reduced, y_gen_faces = gm.sample(n_samples=n_gen_faces)\n",
"gen_faces = pca.inverse_transform(gen_faces_reduced)"
]
},
{
"cell_type": "code",
"execution_count": 133,
"metadata": {},
2022-02-19 10:24:54 +01:00
"outputs": [
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 360x316.8 with 20 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plot_faces(gen_faces, y_gen_faces)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"*Exercise: Try to modify some images (e.g., rotate, flip, darken) and see if the model can detect the anomalies (i.e., compare the output of the `score_samples()` method for normal images and for anomalies).*"
]
},
{
"cell_type": "code",
"execution_count": 134,
"metadata": {},
2022-02-19 10:24:54 +01:00
"outputs": [
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 360x158.4 with 10 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"n_rotated = 4\n",
"rotated = np.transpose(X_train[:n_rotated].reshape(-1, 64, 64), axes=[0, 2, 1])\n",
"rotated = rotated.reshape(-1, 64*64)\n",
"y_rotated = y_train[:n_rotated]\n",
"\n",
"n_flipped = 3\n",
"flipped = X_train[:n_flipped].reshape(-1, 64, 64)[:, ::-1]\n",
"flipped = flipped.reshape(-1, 64*64)\n",
"y_flipped = y_train[:n_flipped]\n",
"\n",
"n_darkened = 3\n",
"darkened = X_train[:n_darkened].copy()\n",
"darkened[:, 1:-1] *= 0.3\n",
"y_darkened = y_train[:n_darkened]\n",
"\n",
"X_bad_faces = np.r_[rotated, flipped, darkened]\n",
"y_bad = np.concatenate([y_rotated, y_flipped, y_darkened])\n",
"\n",
"plot_faces(X_bad_faces, y_bad)"
]
},
{
"cell_type": "code",
"execution_count": 135,
"metadata": {},
"outputs": [],
"source": [
"X_bad_faces_pca = pca.transform(X_bad_faces)"
]
},
{
"cell_type": "code",
"execution_count": 136,
"metadata": {},
2022-02-19 10:24:54 +01:00
"outputs": [
{
"data": {
"text/plain": [
"array([-2.43643155e+07, -1.89785076e+07, -3.78112304e+07, -4.98187624e+07,\n",
" -3.20479025e+07, -1.37531223e+07, -2.92373893e+07, -1.05489052e+08,\n",
" -1.19575385e+08, -6.74256722e+07])"
]
},
"execution_count": 136,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"gm.score_samples(X_bad_faces_pca)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The bad faces are all considered highly unlikely by the Gaussian Mixture model. Compare this to the scores of some training instances:"
]
},
{
"cell_type": "code",
"execution_count": 137,
"metadata": {},
2022-02-19 10:24:54 +01:00
"outputs": [
{
"data": {
"text/plain": [
"array([1163.02020896, 1134.03637872, 1156.32132776, 1170.67602757,\n",
" 1141.45404815, 1154.35205101, 1091.32894383, 1111.41149448,\n",
" 1096.43049063, 1132.98982647])"
]
},
"execution_count": 137,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"gm.score_samples(X_train_pca[:10])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 13. Using Dimensionality Reduction Techniques for Anomaly Detection"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"*Exercise: Some dimensionality reduction techniques can also be used for anomaly detection. For example, take the Olivetti faces dataset and reduce it with PCA, preserving 99% of the variance. Then compute the reconstruction error for each image. Next, take some of the modified images you built in the previous exercise, and look at their reconstruction error: notice how much larger the reconstruction error is. If you plot a reconstructed image, you will see why: it tries to reconstruct a normal face.*"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We already reduced the dataset using PCA earlier:"
]
},
{
"cell_type": "code",
"execution_count": 138,
"metadata": {},
2022-02-19 10:24:54 +01:00
"outputs": [
{
"data": {
"text/plain": [
"array([[ 3.78, -1.85, -5.14, ..., -0.14, -0.21, 0.06],\n",
" [ 10.15, -1.53, -0.77, ..., 0.12, -0.14, -0.02],\n",
" [-10.02, 2.88, -0.92, ..., 0.07, -0. , 0.12],\n",
" ...,\n",
" [ 2.48, 2.96, 1.3 , ..., -0.02, 0.03, -0.15],\n",
" [ -3.22, 5.35, 1.39, ..., 0.06, -0.23, 0.16],\n",
" [ -0.92, -3.65, 2.26, ..., 0.14, -0.07, 0.06]],\n",
" dtype=float32)"
]
},
"execution_count": 138,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"X_train_pca.round(2)"
]
},
{
"cell_type": "code",
"execution_count": 139,
"metadata": {},
"outputs": [],
"source": [
"def reconstruction_errors(pca, X):\n",
" X_pca = pca.transform(X)\n",
" X_reconstructed = pca.inverse_transform(X_pca)\n",
" mse = np.square(X_reconstructed - X).mean(axis=-1)\n",
" return mse"
]
},
{
"cell_type": "code",
"execution_count": 140,
"metadata": {},
2022-02-19 10:24:54 +01:00
"outputs": [
{
"data": {
"text/plain": [
"0.00019205349"
]
},
"execution_count": 140,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"reconstruction_errors(pca, X_train).mean()"
]
},
{
"cell_type": "code",
"execution_count": 141,
"metadata": {},
2022-02-19 10:24:54 +01:00
"outputs": [
{
"data": {
"text/plain": [
"0.0047073546"
]
},
"execution_count": 141,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"reconstruction_errors(pca, X_bad_faces).mean()"
]
},
{
"cell_type": "code",
"execution_count": 142,
"metadata": {},
2022-02-19 10:24:54 +01:00
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAASUAAACQCAYAAABOF30FAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAAsTAAALEwEAmpwYAAB8iUlEQVR4nO39aYylaXbfB/7fu0XcuPuNuLFmRG61dXVtvS9Gs5tsGkKLstGUoaExoERBkCGPlhkINCwMZAnyB48JSSBmYH0YQIJtcoCB5oPRHtiUe+jmNNuguptstthrVXZV5RqZsceNu++LP0T+Tpz7VmTEzeqqyuxmHCCQGRE33vdZzvo/5zlPMB6PdUEXdEEX9LRQ5EkP4IIu6IIuyNOFUrqgC7qgp4oulNIFXdAFPVV0oZQu6IIu6KmiC6V0QRd0QU8VXSilC7qgC3qq6EIpXdAFXdBTRe+rUgqC4O8EQfCDIAhqD7++FQTBr7jfB0EQ/JMgCLaCIGgHQfCHQRB8+P0c0/tBU8wzHQTBfxMEwf2H8/xJEAR//0mO+b2gh3s3Dn3tPOlxvR8UBMFKEAS/EwTBfhAEnSAIXg+C4PNPelzvlp5m2Xy/PaX7kv6BpI9K+rik/7+k/zEIglce/v4/l/Sbkv6epE9I2pP0vwZBkHmfx/Ve03nz/G1JvyLpr0r6kKT/StJvBUHwV5/AWN9r+omkFff18pMdzntPQRDkJf1bSYGO9/FDOubZvSc4rJ+Wnl7ZHI/HH+iXpLKkv6XjDd6W9A/d75KS6pL+1gc9rvdrng///yNJ/2Xo99+Q9C+e9Dh/yjn+E0k/etLj+ADm+X+T9G+f9Dg+gHk+FbL5gWFKQRBEgyD4jyWlJX1T0lVJy5J+n8+Mx+O2pP9N0mc/qHG913TKPCXpjyT9B0EQrD/8zGclvSbpq09kkO8tXQuC4EEQBLeDIPjXQRBce9IDeh/oy5L+OAiC/08QBHtBEHwvCIK/GwRB8KQH9l7Q0yab77tSCoLg5SAIGpK6kv6fkn51PB7/UMeTlqTd0J/sut/9zNAZ85Sk/7Ok70m6FwRBX8de0j8Yj8f/8xMZ7HtHfyzpr0v6kqT/RMf79s0gCOaf5KDeB7om6W9LuiXpL0j6f0j6LUl/50kO6qelp1U2Y+/3C3SMObwmKS/pP5L0O0EQfMH9PnwiODjlZz8LdOo8x+Pxj3Qcl/97kv5DSXcl/YKkfx4EwZ3xePwz6y2Nx+P/xX8fBMG3dSy4v6FjHO3nhSKS/nQ8Hv9fH37/Z0EQPKtjpfQvntywfmp6KmXzfVdK4/G4J+nth9/+aRAEn5D093UM9krHmnfT/cmi3qmhn3p61DyDIPi7kv5rSX9lPB7/Tw9//4MgCF6T9J/p5yOEkySNx+NGEAQ/lvTskx7Le0zbkl4P/ewNSf+XJzCW94yeVtl8EnVKEUkzkm5L2pH07/OLIAhmJX1OJ1jMzzIxz/jDr2Ho90P9nNWJPdy/F3QsxD9P9G8lPR/62XM69np/nujpkM33Gc3/rYcTuaLjVPF/LWkk6UsPf/8PJNUk/WVJL0n615K2JGWedCbiPZ7nH+o4A/cFHYOIf11SW9Lfe9Jj/ynn/c8lff7hnD4l6X9+uJ+Xn/TY3uN5fkJSX9I/lPSMpL8iqSrp7zzpsf0Uc3pqZfP9nvh/r2Nr0tVxncPXJP0F9/tAx2nlbUkdHQPALz3pDXsf5rks6b+T9OChMrqh49AteNJj/ynnDaP2Hs7tf5D04pMe1/s011+R9P2HfPqmjpMXP7P79zTLZvBwABd0QRd0QU8F/VxhGhd0QRf0s08XSumCLuiCniq6UEoXdEEX9FTRhVK6oAu6oKeKziye/OY3vzlOJBKamZnR7OysIpHIO5DyWCymdrutr33ta3rjjTf0l//yX1aj0VC321UkElEymdTs7Kzi8bgikYgSiYSCIFAsFlMkElE0GrXnDgYDjUYjRSIR9ft9dbtdHR0daWtrSzdu3NBbb72lcrmswWCgV155Rb/xG7+hV155RZVKRfv7+9rf39d4PFY6nVaxWNTs7Kyef/75c88n/dZv/dZ4cXFR+Xxes7OzGo1GGg6H6vf7Gg6Py4ui0aiGw6FmZ2eVTCbVbDY1Ozur2dlZzczMaDQaKRqNqtfrqV6vS5Kt2WAwULfbtTXr9XrqdDrq9/sTaxqPxzU7O6tYLKZut6vBYKB+v29/PxgMbDxBECgSiWg4HKrZbOof/+N/fO48P/KRj4wHg4EGg4EkKRKJKAgCdbtdSVKj0VC9Xlcul9Nf+2t/TZVKRV/96lcVi8WUTqeVSqW0urqqpaUl5fN5pVIpRaNRtdtt5XI5JZNJ2+ejoyO9/fbb2tvbI5tj/45Go3eMbTweKwgC+cQLR8tGo5FmZma0sbGhf/bP/tmZ83zttdfGrBHzhPr9vr2jXq/b9zMzM4rH45KkWCxm/wZBYLzqeWBhYUGXL1/W+vq6stmsksmkotGoYrGY1tbWlE6nNRwOValUtLe3p2984xv6d//u39kc/bzYB78Gb7zxxrl7+ZOf/GT8xhtv6Pvf/77i8bh+8IMfaG9vT6urq3ruuefU6/UkSYlEQuPxWKPRSL1ez/g1FosZj0ciEY1GI+P78Xisfr9vP2MvYrGYPQtZjkajGo/HGg6H6nQ6CoJA0WhUiURCo9FI4/FYpVJJ9+/f17/6V/9Kly9f1muvvaYvfvGL+vVf//VT53mmUspms5qZmVE0GrWfwcjD4dCUSKVSUaPR0OLiour1unq9nvr9vnq9no6OjjQYDBQEgVZXV7W8vGwTR7CYLBvFgkhSLpdTKpXSxsaGPv7xj+vevXuqVqv61Kc+pdFopO985zvq9/uKx+OKx+MKgkDNZlP1el2j0UjPPx+ueXsnLS0tKZ1O20L2ej0NBgOfPrUxd7tdY85Wq2Xr4xXr3NycKd1er2cKaXZ2VtFoVP1+X4lEQp1OR51OR+PxWNFoVPF43P4OQYCpUE79ft/WiTVqt9vnzlGSXn75ZSUSCSUSCUkyQYLR2u22Dg4ONDs7q42NDWUyGX3pS18yZQkzx2Ixm8d4PFYkElGtVlO9Xre1gH+azaY6nY6Gw6EpVAge8N+f9i/zzWaz584x/I7BYKBYLKa5uTkzOL1eT7lczhRKtVrV4eGhBoOB5ufntba2pnw+r2w2q3g8boak0WioVqvp4OBAb731lvb29vTss8/q0qVLKhQKkqS5uTnNzc2p1+tpbm5OxWJRL730kjY3N7W/v/8OhYSSHA6HE3J2HrXbbTPe0WhUR0dHSiQSeuaZZ2x/I5GIZmZmjGdnZmY0Nzdn70SOI5GIOQjIHrLZbrdNQbPXOCMon8FgYM4Gim0wGJg8ttttbWxsaH5+XpVKRblcTq1W65FzO1MpwYAIHkKH0hmNRtre3tabb76pjY0NJZNJPfvss7ZYLPZwOFSv19PNmzeVz+dVKpUmFI8k+6zftHg8blZckjKZjF5++WX1+31tb2/r937v91Sv17WxsaGlpSUFQWCCHolEFI/H9eUvf/ncDS4UCpqZmTGPh7njiaAoPeNEo1E1m02l02kTxH6/b89JJBI292QyqUQioXg8rsFgYEzAnHu9nobDobrdrlkklE4QBIrH40okEur1ehMWqNfrqdfrmQI7j5599llTRIwtGo2a9Y5Go/rQhz6kfr+v/f19dTodzc3NKRKJKJVKKZvNanZ2VnNzc8rlctrd3VWv15tQmoxpNBopFotpeXlZnU5H3W5X/X7f/u+9Yu89eG9iPB6r1Wqp2+1qdXVVa2tr586RNUM5zc7OKpFIaG5uTplMRoPBQFtbWyqXy7p//74ymYwKhYKef/55Pffcc3rmmWdUKBTM60PQ+v2+Wq2W6vW6KpWKjo6OjM+Ojo5sv8bjsS5fvqxsNqtisaggCMxrRzmw5sxXOvGWpqWjoyPzcDqdjg4PD/Wxj31M6XRao9FIs7Oz6nQ6arfbmpmZMZ4LOwBhz/C0McEnXtGgoOBX+NTLNB6uJM3MzOj69ev6/ve/r2w2q0ql8si5ncnN3r2MRqOmKBBWFNKrr76qg4MDbW9
"text/plain": [
"<Figure size 360x158.4 with 10 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plot_faces(X_bad_faces, y_bad)"
]
},
{
"cell_type": "code",
"execution_count": 143,
"metadata": {},
2022-02-19 10:24:54 +01:00
"outputs": [
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 360x158.4 with 10 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"X_bad_faces_reconstructed = pca.inverse_transform(X_bad_faces_pca)\n",
"plot_faces(X_bad_faces_reconstructed, y_bad)"
]
},
2016-09-27 23:31:21 +02:00
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
2016-09-27 23:31:21 +02:00
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
2016-09-27 23:31:21 +02:00
"language": "python",
"name": "python3"
2016-09-27 23:31:21 +02:00
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
2016-09-27 23:31:21 +02:00
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.10.13"
2016-09-27 23:31:21 +02:00
}
},
"nbformat": 4,
2020-04-06 09:13:12 +02:00
"nbformat_minor": 4
2016-09-27 23:31:21 +02:00
}