{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Density based clustering basics" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Go to:\n", " \n", " - [Notebook configuration](algorithm_explained.ipynb#Notebook-configuration)\n", " - [Helper function definitions](algorithm_explained.ipynb#Helper-function-definitions)\n", " - [Density criteria](algorithm_explained.ipynb#Density-criteria)\n", " - [Identification of connected components](algorithm_explained.ipynb#Identification-of-connected-components-of-points)\n", " - [CommonNN clustering in detail](algorithm_explained.ipynb#CommonNN-clustering-in-detail)" ] }, { "cell_type": "markdown", "metadata": { "ExecuteTime": { "end_time": "2020-06-18T14:43:18.762282Z", "start_time": "2020-06-18T14:43:18.760198Z" } }, "source": [ "## Notebook configuration" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "ExecuteTime": { "end_time": "2021-10-04T21:11:56.059338Z", "start_time": "2021-10-04T21:11:54.459374Z" } }, "outputs": [], "source": [ "from collections import deque\n", "from itertools import islice\n", "import sys\n", "\n", "import matplotlib as mpl\n", "from matplotlib import animation\n", "import matplotlib.pyplot as plt\n", "import networkx\n", "import numpy as np\n", "import scipy\n", "from scipy.integrate import quad\n", "from scipy import stats\n", "from scipy.spatial import cKDTree\n", "import sklearn\n", "from sklearn import datasets\n", "from sklearn.preprocessing import StandardScaler\n", "\n", "import cnnclustering\n", "from cnnclustering import cluster\n", "from cnnclustering import _types, _fit" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Print Python and package version information:" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "ExecuteTime": { "end_time": "2021-10-04T21:11:56.065495Z", "start_time": "2021-10-04T21:11:56.061474Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Python: 3.8.8 (default, Mar 11 2021, 08:58:19) [GCC 8.3.0]\n", "Packages:\n", " matplotlib: 3.3.4\n", " networkx: 2.5\n", " numpy: 1.20.1\n", " scipy: 1.6.1\n", " sklearn: 0.24.1\n", " cnnclustering: 0.4.3\n" ] } ], "source": [ "# Version information\n", "print(\"Python: \", *sys.version.split(\"\\n\"))\n", "\n", "print(\"Packages:\")\n", "for package in [mpl, networkx, np, scipy, sklearn, cnnclustering]:\n", " print(f\" {package.__name__}: {package.__version__}\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We use [Matplotlib](https://matplotlib.org/) to create plots. The `matplotlibrc` file in the root directory of the `CommonNNClustering` repository is used to customize the appearance of the plots." ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "ExecuteTime": { "end_time": "2021-10-04T21:11:56.078184Z", "start_time": "2021-10-04T21:11:56.070322Z" } }, "outputs": [], "source": [ "# Matplotlib configuration\n", "mpl.rc_file(\n", " \"../../matplotlibrc\",\n", " use_default_template=False\n", ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Helper function definitions" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The following functions will be used throughout this notebook." ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "ExecuteTime": { "end_time": "2021-10-04T21:11:56.083771Z", "start_time": "2021-10-04T21:11:56.079873Z" } }, "outputs": [], "source": [ "def gauss(x, sigma, mu):\n", " \"\"\"Gaussian PDF\"\"\"\n", " return (1 / (sigma * np.sqrt(2 * np.pi)) * np.exp(-1 / 2 * ((x - mu) / sigma)**2))\n", " \n", "def multigauss(x, sigmas, mus):\n", " \"\"\"Multimodal gaussian PDF as linear combination of gaussian PDFs\"\"\"\n", " assert len(sigmas) == len(mus)\n", " \n", " out = np.zeros_like(x)\n", " for s, m in zip(sigmas, mus):\n", " out += gauss(x, s, m)\n", " return out / len(sigmas)" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "ExecuteTime": { "end_time": "2021-10-04T21:11:56.093436Z", "start_time": "2021-10-04T21:11:56.085071Z" } }, "outputs": [], "source": [ "def determine_cuts(x, a, cutoff):\n", " \"\"\"Find points in 1D space where density cutoff is crossed\n", " \n", " Args:\n", " x: coordinate\n", " a: density\n", " cutoff: density cutoff\n", " \n", " Returns:\n", " cuts: Array of coordinates where cutoff is crossed\n", " \"\"\"\n", " \n", " cuts = []\n", " dense = False # Assume low density on left border\n", " for index, value in enumerate(a[1:], 1):\n", " if dense:\n", " if value < cutoff:\n", " dense = False\n", " cuts.append((x[index] + x[index - 1]) / 2) \n", " else:\n", " if value >= cutoff:\n", " dense = True\n", " cuts.append((x[index] + x[index - 1]) / 2)\n", " \n", " return np.asarray(cuts)" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "ExecuteTime": { "end_time": "2021-10-04T21:11:56.103086Z", "start_time": "2021-10-04T21:11:56.094996Z" } }, "outputs": [], "source": [ "class multigauss_distribution(stats.rv_continuous):\n", " \"\"\"Draw samples from a multimodal gaussian distribution\"\"\"\n", " \n", " def __init__(self, sigmas, mus, *args, **kwargs):\n", " super().__init__(*args, **kwargs)\n", " self._sigmas = sigmas\n", " self._mus = mus\n", "\n", " def _pdf(self, x):\n", " return multigauss(x, sigmas=self._sigmas, mus=self._mus)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Density criteria" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Density-based clustering defines clusters as *dense* regions in space, separated by *sparse* regions. But what is dense and what is sparse? This is commonly defined by a threshold (a density criterion) that determines the outcome of the clustering. In the case where we have a density function defined on a continuous coordinate, the density criterion manifests itself as a density iso-surface. Regions in which the density is higher than a cutoff set as density criterion qualify as *dense*, and therefore represent a cluster. On the other hand, regions in which the density falls below the density criterion are considered *sparse* and do not constitute a part of a cluster. We can illustrate this on the example of a bimodal gaussian distribution in one dimension." ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "ExecuteTime": { "end_time": "2021-10-04T21:11:56.540744Z", "start_time": "2021-10-04T21:11:56.105125Z" } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "xlimit = (-8, 8)\n", "x = np.linspace(*xlimit, 101)\n", "\n", "fig, ax = plt.subplots()\n", "ax.plot(x, multigauss(x, sigmas=[1, 1.5], mus=[-2, 2]))\n", "ax.set(**{\n", " \"xlim\": xlimit,\n", " \"xlabel\": \"$x$\",\n", " \"ylabel\": \"probability density\"\n", "})\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We have two maxima in the distribution. An intuitive classification\n", "would separate the two peaks into two different clusters. In threshold-based density based clustering we define the two clusters as the regions of high density where we have low density in between. By applying an iso-value cutoff on the density, we can specify what should be considered high or low density. In a dense region, the density is at least as high as the density criterion requires." ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "ExecuteTime": { "end_time": "2021-10-04T21:11:56.827788Z", "start_time": "2021-10-04T21:11:56.545605Z" } }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAArYAAAGuCAYAAABlbkWHAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAABcSAAAXEgFnn9JSAAB6ZklEQVR4nO3dd3xUVfrH8c9JJYQSqkjvVREBARdcQIori4gK9oJ1Fd2166rrb9V11dVV1gJi770AdkUBaYrSew89QAik98z5/TGTISET0ia5M5Pv+/Wa1+TeO/feJ5PJzDPnPuccY61FRERERCTYhTkdgIiIiIiIPyixFREREZGQoMRWREREREKCElsRERERCQlKbEVEREQkJCixFREREZGQoMRWREREREKCElsRERERCQlKbEVEREQkJCixFREREZGQoMRWREREREKCElsRERERCQkRTgdQ2xhj9gN1gd1OxyIiIiLisDZAprW2hT8OZqy1/jiOlJMxJjU6Orp+p06dnA5FpMIyMjK8P8fGxjoYSe0U7M9/sMcfiPScSrDbtm0bOTk5adbaBv44nlpsa97uTp069Vy3bp3TcYhUSH5+PgsXLvQuDxkyhIgIvYXUlGB//oM9/kCk51RCQa9evVi/fr3frmKrxlZEREREQoISWxEREREJCUpsRURERCQkKLEVERERkZCgxFZEREREQoISWxEREREJCUpsRURERCQkKLEVERERkZCgxFZEREREQoISWxEREREJCUpsRURERCQkKLEVERERkZAQ4XQAlWGMqQs8DlwE1AN+BG631saXY99+wJNAP2A/MAe431qbfMzjIoD7geuApsAvwF3W2hX++01ExN9ycgv4aflelmxI5FBKNnUiw+nZvhFjBrXhxCZ1nQ5PRESqUdAltsYYA8wEBgCvAPHAbcBCY8yp1tqDx9n3ZGAR8CHwPnASMBkYbYwZaK1NKvLwF4ErgNeBVcC1wM+ex23w9+8lIlU3f1UCz3y8hoPJ2cXW/7L+IG9+t5kLhnbgpnE9iI4KdyhCERGpTkGX2ALnAqOA0dba2QDGmO+BTcCDwF+Ps++zwEvW2lsLVxhjvsLd4vt/wK2edafibqm9wVr7imfdR7iT6CeBc/z8O4lIFVhree2bTbz+zeZSH1Pgsnw8dzsrthxiyi2n07h+dA1GKCIiNSEYa2zPAdYVJrUA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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "density_criterion = 0.1\n", "\n", "xlimit = (-8, 8)\n", "x = np.linspace(*xlimit, 1001)\n", "pdf = multigauss(x, sigmas=[1, 1.5], mus=[-2, 2])\n", "cuts = determine_cuts(x, pdf, density_criterion)\n", "density_criterion_ = np.full_like(x, density_criterion)\n", "dense = np.maximum(pdf, density_criterion_)\n", "\n", "fig, ax = plt.subplots()\n", "ax.plot(x, pdf)\n", "ax.plot(x, density_criterion_, linestyle=\"--\", color=\"k\")\n", "ax.fill_between(x, density_criterion_, dense)\n", "for cut in cuts:\n", " ax.axvline(cut, color=\"gray\", alpha=0.5)\n", "\n", "ax.annotate(\n", " \"density criterion\", (xlimit[0] * 0.975, density_criterion * 1.03),\n", " fontsize=\"small\"\n", ")\n", "\n", "ax.annotate(\"0\", (cuts[0] * 1.2, 0))\n", "ax.annotate(\"1\", (cuts[1] * 2, 0))\n", "ax.annotate(\"0\", (cuts[2] * 0.2, 0))\n", "ax.annotate(\"2\", (cuts[3] * 0.8, 0))\n", "ax.annotate(\"0\", (cuts[3] * 1.2, 0))\n", "\n", "ax.annotate(\n", " \"dense\",\n", " xy=(2.2, multigauss(2.2, sigmas=[1, 1.5], mus=[-2, 2])),\n", " xytext=(cuts[3] * 1.2, density_criterion * 1.5),\n", " arrowprops={\"arrowstyle\": \"->\"}\n", ")\n", "\n", "ax.annotate(\n", " \"sparse\",\n", " xy=(4, multigauss(4., sigmas=[1, 1.5], mus=[-2, 2])),\n", " xytext=(cuts[3] * 1.2, density_criterion * 1.2),\n", " arrowprops={\"arrowstyle\": \"->\"}\n", ")\n", "\n", "ax.set(**{\n", " \"xlim\": xlimit,\n", " \"xlabel\": \"$x$\",\n", " \"ylabel\": \"probability density\"\n", "})\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": { "ExecuteTime": { "end_time": "2020-06-19T09:13:41.465492Z", "start_time": "2020-06-19T09:13:41.442533Z" } }, "source": [ "Choosing the density criterion in this way, defines the two clusters as we would have expected. We can label the regions, i.e. we can assign a number to them, that denotes their cluster membership. We use 0 to indicate that a region is not part of any cluster and positive integers as cluster numbers. When we vary the density criterion, we can influence the outcome of the clustering by changing the definition of what is dense enough to be a cluster. This could leave us with both density maxima in one cluster, clusters of different broadness, or no cluster at all." ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "ExecuteTime": { "end_time": "2021-10-04T21:11:57.270238Z", "start_time": "2021-10-04T21:11:56.829715Z" } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "fig, Ax = plt.subplots(2, 2)\n", "ax = Ax.flatten()\n", "\n", "for i, d in enumerate([0.05, 0.09, 0.15, 0.22]):\n", " density_criterion = d\n", "\n", " xlimit = (-8, 8)\n", " x = np.linspace(*xlimit, 1001)\n", " pdf = multigauss(x, sigmas=[1, 1.5], mus=[-2, 2])\n", " cuts = determine_cuts(x, pdf, density_criterion)\n", " density_criterion_ = np.full_like(x, density_criterion)\n", " dense = np.maximum(pdf, density_criterion_)\n", "\n", "\n", " ax[i].plot(x, pdf)\n", " ax[i].plot(x, density_criterion_, linestyle=\"--\", color=\"k\")\n", " ax[i].fill_between(x, density_criterion_, dense)\n", " for cut in cuts:\n", " ax[i].axvline(\n", " cut,\n", " color=\"gray\",\n", " alpha=0.5,\n", " linewidth=1,\n", " zorder=0\n", " )\n", "\n", "\n", " ax[i].set(**{\n", " \"xlim\": xlimit,\n", " })\n", " \n", "fig.tight_layout()\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "When we operate on data sets (in maybe high dimensional spaces), however, we normally do not have a continuous description of the density that we can directly use. Instead we may have sample points from an underlying (unknown) distribution. To apply a density based clustering on them, we need to approximate the density in some way. For this approximation, a number of different possibilities exist, which provide a different notion of what density is or how it could be estimated from scattered data. To illustrate this, let's draw samples from the above used bimodal distribution to emulate data points." ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "ExecuteTime": { "end_time": "2021-10-04T21:11:57.758949Z", "start_time": "2021-10-04T21:11:57.273771Z" } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "distribution = multigauss_distribution(\n", " sigmas=[1, 1.5], mus=[-2, 2], a=-8, b=8, seed=11\n", ")\n", "samples = distribution.rvs(size=20)\n", "\n", "xlimit = (-8, 8)\n", "x = np.linspace(*xlimit, 1001)\n", "pdf = multigauss(x, sigmas=[1, 1.5], mus=[-2, 2])\n", "\n", "fig, ax = plt.subplots()\n", "ax.plot(x, pdf, color=\"gray\", linestyle=\"--\", alpha=0.5)\n", "\n", "ax.set(**{\n", " \"xlim\": xlimit,\n", " \"xlabel\": \"$x$\",\n", " \"ylabel\": \"probability density\"\n", "})\n", "\n", "ax.plot(samples, np.zeros_like(samples), linestyle=\"\",\n", " marker=\"|\", markeredgewidth=0.75, markersize=15) \n", "\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In the following we look into how density is deduced from points in terms of the following methods:\n", " \n", " - DBSCAN\n", " - Jarvis-Patrick\n", " - CommonNN\n", " \n", "In general, point density can be expressed in simple terms by the number of points $n$ found on a volume $V$." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### DBSCAN" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In DBSCAN, local point density is expressed for each point as the number of neighbouring points $k_r$ with respect to a neighbour search radius $r$.\n", "The density criterion is formulated as such: Points that have at least $k$ nearest neighbours in their neighbourhood $r$ qualify as part of a dense region, i.e. a cluster. Points that fulfill the density criterion can be also referred to as *core points*. Additionally it is possible to describe points that do not fulfill the density criterion themselves but are neighbours of those core points as *edge points*. For our samples above this could look as shown below if we choose the density criterion to be $k=1$ and $r=0.5$. To determine the number of neighbours for each point, we calculated pairwise point distances and compare them to $r$." ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "ExecuteTime": { "end_time": "2021-10-04T21:11:57.765502Z", "start_time": "2021-10-04T21:11:57.760431Z" }, "run_control": { "marked": true } }, "outputs": [ { "data": { "text/plain": [ "array([ True, True, True, True, True, True, True, True, False,\n", " True, True, True, True, True, True, False, True, True,\n", " False, True])" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Density criterion\n", "r = 0.5 # Neighbour search radius\n", "k = 1 # Minimum number of neighbours\n", "\n", "n_neighbours = np.array([\n", " # Neighbour within r?\n", " len(np.where((0 < x) & (x <= r))[0])\n", " # distance matrix\n", " for x in np.absolute(np.subtract.outer(samples, samples))\n", "])\n", "\n", "dense = n_neighbours >= k # Point is part of dense region?\n", "dense" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "ExecuteTime": { "end_time": "2021-10-04T21:11:57.982458Z", "start_time": "2021-10-04T21:11:57.766968Z" } }, "outputs": [ { "data": { "image/png": "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/CZtbc709a9/ndra2pRfn/rUpwKJaamfl6KiIsLhMOAl9gcPHlRZgsyLemxFstDq1avJz8/n1KlTtLS00NnZycMPP8yHP/xh7r777qDDm9Xu3bt54hOfyIte9CL+8i//kkceeYTPfOYz/OxnP+O+++4LpE7YOcdzn/tc7r//fl796lezbt06PvGJT/CkJz2JnTt30tjYmNZ4du3axXXXXcdFF13Eu9/9boqKiviP//gPrrnmGh544AE2bdqU1niCEPRzMj09zate9Sr27dsHwHXXXbek7V3IN77xjXOm8mtvb097HOl4XioqKli3bh1HjhwB4PTp09TW1upTKZk755y+0vgF7NmyZYsT8cPk5KQ7evSoA1xeXp5rampygOvo6Ag6tJSuv/569/d///dJ+37xi1844Jz96XL77bc7wP3sZz+L7zt06JDLz893b3jDG9Iez8033+xe8YpXuHA4HN/X1dXlzMy9/vWvT3s8QQj6Ofn0pz/trr/+ege49773vUve3my+9KUvZdTfc7qel0gk4h566CH361//2v361792v/3tb93w8LBv15fMsmXLFgfscT7lWSpFEMliRUVFrFy5kj/+8Y/09/dzyy23BB3SrAYGBvjd737Hu971rqT9T33qU7nhhhv4xje+EUhcP/zhD9m6dSs33nhjfF97ezs333wz3/rWt9L+Meh73/tePvnJTyYNBmxubqa2tjajS0z8FORzMjw8zPve9z7+4i/+YsnayFbpel7MjC1btsRrayORCHv37o2XKIicjxJbkSxXUlLC9u3bqaqqCjqU86qpqeHWW29l5cqV5xzbvn07vb29nD17Nu1x/fznP2fHjh3n7L/yyivp7e3lxIkTaY1n69atScuMAuzfv5++vj4uu+yytMYSlCCfk49+9KMUFhby3Oc+d8nayFbpfF6Ki4u5+OKL49tjY2M8+uijqreVC1JiK5IlnHP09/dn9Qv7y172spT7e3p6yM/PPyehW2rT09N0dnayfv36c47F9h04cCCtMc3U29vLy1/+curq6njd614XaCzpEORz0t3dzb/+67/ylre8heLi4iVpYyG+/vWvc/HFF1NXV8fNN99Md3d32mMI4nlZsWIFq1evjm+fOnUqaZpDkVSU2IpkidOnT/Pwww/z4IMPJq04lu1CoRD33HMPT37yk9OeTAwPDwOknDYpNtPExMREWmOK+a//+i+uuuoqVq9ezbFjx/jRj360LAbQBPmcvOc976Gmpibj/oH4wAc+wA033MAHP/hBHnroIR7/+Mdz5syZtMYQ1POybt06qqur49sHDx5kcHDQ93YkdyixFckCzjmOHz8OwMjISNrf1JbSRz7yEXp6evjnf/7ntLcdmws41eIW+fn5gDflUBBqa2u57LLLePKTn8zk5CS33347oVAokFjSKajn5JFHHuFLX/oS73nPe+KJWqa49dZb+fSnP83f/d3f8eMf/5jOzk4+8pGPpDWGoJ6XWL1tUVFRfN/k5KTv7Uju0HRfIlng7NmzSQsyJH48l80eeughPvCBD/ClL32Ja665Ju3tl5eXA6RMGKenpwHSXh4R84IXvIAXvOAFAOzcuZOnPOUpnDlzhi9+8YuBxJMuQT0n73jHO1i3bh2vfOUrfb/2Qr3whS/kT//0T5Pq0jdv3syOHTv4+te/zsc+9rG0xRLk30pxcTFbt25l3759bNmyJePHE0iw1GMrkuGcc0mj4evr6+NvMtnsyJEjPPOZz+Rf/uVfeMlLXhJIDLE3yFRLdw4NDQEkfQwalMsuu4yXvvSl3HrrrRw8eDDocJZUEM/Jr3/9a+644w7e8Y53MDk5ycjICCMjI4DXCzkyMhJISUppaSmrVq3CzJL2r1mzhu7u7vjPIx2C/luprq7mqquuUlIrF6TEViTD9fb2xt9kwXtTy3Y9PT3ceOONvPrVr+atb31rYHEUFBTQ0NDA4cOHzzkWGwiTKXWt27ZtA+Dhhx8OOJKlFcRz8tvf/haA17zmNVRWVlJZWcm6desA+NCHPkRlZSWvfe1rfW1zMSYnJzGzeAlAOmTC30qqMohsHkwrS0OlCCIZzDmXtFxlQ0MDlZWVAUa0eH19fTztaU/jec97Hu973/uCDoenP/3p/PKXv2R6ejppTfr777+fzZs3p73sY//+/WzevPmc/bGR8LlShnI+6X5OXvGKV/Anf/InSfsGBgZ41rOexctf/nJe8YpXpH0FOoDOzk7a2tqS9jnn2LdvHxs2bEj7JzeZ9rcSDofZt28ftbW1tLS0pLVtyVzqsRXJYCdPnmR8fDy+vXbt2uCC8cHIyAg33XQTT3rSk/jYxz52zkesQXjOc55DT08P3/zmN+P7Dhw4wB133MEzn/nMtMYyNjbGjTfeyAMPPJC0f2RkhK9+9au0tbWxffv2tMYUhHQ/J6tXr+ZJT3pS0tfjH//4pGMXXXSR7+2eT29vL1deeSU7d+5M2n/bbbfR0dERyMwNmfS3Mj09za5duzhz5gwHDx7MqQG1sjjqsRXJUOFwOKm2dtWqVbP20Nx2220A7Nq1C4A77riDxsZGGhoauPbaa5c81rl63vOex9mzZ7n++uv57ne/e87xZzzjGWnvhXre857HE5/4RF7/+tdz4sQJ8vLy+NSnPkVjYyNvf/vb0xpLWVkZ73nPe7jmmmt43vOexw033MD09DSf+9znOHnyJD/84Q8zan7VpZJJz0lQ6uvrefrTn84111zDs5/9bG644QaOHDnCJz7xCa677jre8IY3pD2mTHpeIpFIUt3z3r172b59e0bUxEvA/FqbV19z+wL2bNmyxYlcyJEjR+Jrpf/mN79x4+Pjsz4WSPl17bXXpi/gOZgtzthXR0dHIHENDQ25173uda6hocFVVla65z3veYHF4pxz99xzj7v55pvdmjVrXH19vfuzP/szt3PnzsDiCULQz0lvb68D3Hvf+960tTnT1NSU+8QnPuEuvfRSV15e7i655BL3/ve/301PTwcWU9DPS6KRkRF35513xl8nf/e737nBwcFAYpGF27JliwP2OJ/yLHMqvE4rM9uzZcuWLXv27Ak6FMlg4XCYe++9Nz6NzurVq1Ou+CMispwNDAywa9cuIpEI4A1y2759e9aPRVhOtm7dyt69e/c657b6cT3V2IpkoPz8fK644goaGxspKirKiZkQRET8VlNTw9atW+P1+qFQiIcffjhpJhlZXpTYimSo4uJitmzZwpVXXpnWaX1ERLJJXV1dyuQ2tgywLC9KbEUyXOK0OiIicq76+nq2bNkST26np6f54x//yMDAQLCBSdopsRXJIOFwOOgQRESyUkNDAxdffHE8uQ2Hw/T39wcclaSbEluRDNHf3899991Hb29v0KGIiGSlxsZGtm3bRl5eHs3NzVk/97fMnxJbkQwwPT3N/v37mZqaYs+ePRw5ciTokEREslJdXR2XX345GzduzIhFYCS9lNiKBMw5x/79+5mcnATAzGhoaAg4KhGR7FVeXp4yqT158iShUCiAiCRdlNiKBOzEiROcPXs2vr1+/XrNwSgi4rOenh7279/Pzp07GRsbCzocWSJKbEUC1N/fn1R2UFdX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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "xlimit = (-8, 8)\n", "x = np.linspace(*xlimit, 1001)\n", "pdf = multigauss(x, sigmas=[1, 1.5], mus=[-2, 2])\n", "\n", "fig, ax = plt.subplots()\n", "ax.plot(x, pdf, color=\"gray\", linestyle=\"--\", alpha=0.5)\n", "\n", "ax.set(**{\n", " \"xlim\": xlimit,\n", " \"xlabel\": \"$x$\",\n", " \"ylabel\": \"probability density\"\n", "})\n", "\n", "for i, s in enumerate(samples):\n", " if dense[i]:\n", " c = \"#396ab1\"\n", " else:\n", " c = \"gray\"\n", " ax.plot(s, 0, linestyle=\"\",\n", " marker=\"|\", markeredgewidth=0.75, markersize=15,\n", " color=c)\n", "\n", "labels = [\n", " (-4, \"1\"),\n", " (-2.8, \"2\"),\n", " (-1.8, \"0\"),\n", " (-0.8, \"3\"),\n", " (1, \"0\"),\n", " (1.8, \"4\"),\n", " (2.8, \"5\"),\n", " (3.8, \"0\"),\n", "]\n", "\n", "for position, l in labels:\n", " ax.annotate(l, (position, 0.02))\n", "\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In this case we end up with 5 clusters, that are dense enough regions separated by low density areas. Like a change in the density iso-value as the density criterion for the continuous density function, a change of the cluster parameters $k$ and $r$ will determine the cluster result. Note, that we assigned the labels to the clusters by visual inspection. We will show later how to identify these isolated regions (connected components of core points) automatically. For this we additionally need to define when two points are actually part of the same dense region, meaning we need to define connectivity between points. In the case of DBSCAN, checking the density-criterion and checking the connectivity of two points are basically two separate tasks." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Common-nearest-neighbours clustering" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "While the DBSCAN approach to threshold-based density-based clustering estimates point density locally per point, we determine the density between two points in CommonNN clustering. As a consequence, checking the density-criterion and defining if two points are connected become essentially the same thing. Two points that fulfill the density requirement together are automatically identified as part of the same cluster. The density threshold (points per volume) is formulated as such: Two points that share a minimum number of *c* common neighbours with respect to a neighbour search radius *r* are considered *dense*. The figure below illustrates this. The green and the blue point pass the density-criterion check for CommonNN cutoffs of $c\\leq2$ because they share the two yellow points as their common neighbours. " ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "ExecuteTime": { "end_time": "2021-10-04T21:11:57.987094Z", "start_time": "2021-10-04T21:11:57.984115Z" } }, "outputs": [], "source": [ "# samples2D = np.vstack([np.random.normal((-1, 0), (0.4, 0.4), (10, 2)), np.random.normal((1, 0), (0.4, 0.4), (10, 2))])\n", "samples2D = np.load(\"algorithm_explained/samples2D.npy\")" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "ExecuteTime": { "end_time": "2021-10-04T21:11:58.182912Z", "start_time": "2021-10-04T21:11:57.988494Z" } }, "outputs": [ { "data": { "text/plain": [ "[[], [], None]" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Density criterion / density reachability in 2D\n", "fig, ax = plt.subplots(figsize=(3.33, 2.05))\n", "r = 0.5\n", "c = 2\n", "\n", "neighbourhoods = np.array([\n", " # Neighbour within r?\n", " np.where((0 < x) & (x <= r))[0]\n", " # distance matrix\n", " for x in np.sqrt(np.subtract.outer(samples2D[:, 0], samples2D[:, 0])**2 + np.subtract.outer(samples2D[:, 1], samples2D[:, 1])**2)\n", " ], dtype=object)\n", "\n", "for node, neighbours in enumerate(neighbourhoods):\n", " for other_node in neighbours:\n", " if np.intersect1d(neighbours, neighbourhoods[other_node]).shape[0] >= c:\n", " # Density criterion fullfilled\n", " ax.plot(*zip(samples2D[node], samples2D[other_node]), color=\"brown\", alpha=0.25, linewidth=0.75, zorder=0)\n", "\n", "source = 12\n", "member = 15\n", "intersection = [13, 18]\n", "classification = np.zeros(samples2D.shape[0])\n", "classification[source] = 1\n", "classification[member] = 2\n", "classification[intersection] = 3\n", "\n", "ax.plot(*zip(samples2D[source], samples2D[member]), color=\"brown\", alpha=1, linewidth=0.75, zorder=0)\n", "\n", "ax.annotate(\n", " \"\", (samples2D[member][0] - r, samples2D[member][1]), samples2D[member],\n", " arrowprops={\n", " \"shrink\": 0, \"width\": 0.75, \"headwidth\": 3, \"headlength\": 3,\n", " \"facecolor\": \"k\", \"linewidth\": 0\n", " },\n", " zorder=0\n", " )\n", "\n", "ax.annotate(\n", " \"$r$\", (samples2D[member][0] - r/2, samples2D[member][1] + 0.05),\n", " fontsize=8\n", " )\n", "\n", "ax.scatter(*samples2D.T, s=15, c=classification, linewidth=1, edgecolor=\"k\")\n", "neighbourhood = mpl.patches.Circle(\n", " samples2D[source], r,\n", " facecolor=\"None\",\n", " edgecolor=\"k\", linewidth=0.75\n", " )\n", "neighbourhood2 = mpl.patches.Circle(\n", " samples2D[member], r,\n", " facecolor=\"None\",\n", " edgecolor=\"k\", linewidth=0.75\n", " )\n", "ax.add_patch(neighbourhood)\n", "ax.add_patch(neighbourhood2)\n", "ax.set(**{\n", " \"xticks\": (),\n", " \"yticks\": (),\n", " \"aspect\": \"equal\"\n", "})" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "How the density criterion check and the clustering could be implemented should be explained further down." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Summary on density criteria" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "A point is part of a dense region if the point ...\n", "\n", " - DBSCAN: ... has at least $k_r$ neighbours within a radius $r$\n", " - Jarvis-Patrick: ... shares at least $c$ common neighbours with a another point among their $k$ nearest neighbours\n", " - CommonNN: ... shares at least $c$ common neighbours with a another point with respect to a radius $r$\n", " \n", "Two points are part of the same dense region ...\n", " - DBSCAN: ... if at least one of them is dense and the two points are neighbours\n", " - Jarvis-Patrick: ... if they together pass the density criterion\n", " - CommonNN: ... if they together pass the density criterion" ] }, { "cell_type": "markdown", "metadata": { "ExecuteTime": { "end_time": "2020-06-19T12:52:43.477733Z", "start_time": "2020-06-19T12:52:43.475271Z" } }, "source": [ "## Identification of connected components of points" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Classifying points as part of a dense or a sparse region according to a density criterion, is only one aspect of assigning points to clusters. We still need to identify groups of points that are part of the same region. In this context, the term *density reachable* is often used to describe the situation where a point is directly connected to a dense point. We also use the term *density connected* for points that are part of the same dense region, i.e. they are directly or indirectly connected to any other point in the region by a chain of density reachable points. In other words, it is not enough to know which points are dense but we also need to be aware of the relationship between dense points. As mentioned earlier, for CommonNN clustering density reachability is a direct consequence of how the density-criterion is checked. For DBSCAN, this is a separate definition.\n", "\n", "When we express the connectivity relationship between points in a graph, the problem of identifying clusters of density connected points comes down to finding connected components of nodes within this graph. In the above example, we where primarily interested in the information if a point was part of a dense region by checking the density criterion. Let's now construct a density graph instead in which each dense point constitutes a node and each vertex represent the density reachability between two points. We neglect the concept of edge points (points that are not dense but density reachable from a dense point) for the sake of simplicity here. It should be noted, that the inclusion of edge points may also lead to ambiguous clustering results in the case where a low density point is a neighbour of two or more dense points in different clusters." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### DBSCAN" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "ExecuteTime": { "end_time": "2021-10-04T21:11:58.272678Z", "start_time": "2021-10-04T21:11:58.184426Z" } }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAwsAAAHgCAYAAADquvHSAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAABcSAAAXEgFnn9JSAAByDUlEQVR4nO3deVxU5f4H8M+wDgoDKgIj4oYaKCAqpN0ouqJpaeHS5k0z1zQttOW6kiVqWl3LsizX7NI1KyiuS4uimVaamuiQ4JYijCyiMoPIsM35/eFlfo4M+8ycM8Pn/Xr5CuHMOd8xxPM5z/N9HpkgCAKIiIiIiIju4CB2AUREREREJE0MC0REREREZBLDAhERERERmcSwQEREREREJjEsEBERERGRSQwLRERERERkEsMCERERERGZxLBAREREREQmMSwQEREREZFJDAtERERERGQSwwIREREREZnEsEBERERERCYxLBARERERkUkMC0REREREZBLDAhERERERmeQkdgFERERERGISBAF5Wh1Uag0ycouhLa1ARZUezo4OULg5I1jpgTB/L/gqXCGTycQu16oYFoiIiIioRVKpNUg8lIXUzAIU3iir93hvd1fEBPlg/MDOCPH3tEKF4pMJgiCIXQQRERERkTUIgoCdqlysP3ABJ3KKmnye8AAvTInqiuGhSrsebWBYICIiIqIWIV+rw/xkFfaeLjDbOWOCfLB8VCh8FXKznVNKGBaIiIiIyO6lpKkRn5IOra7S7OdWyJ2QEBuC2HB/s59bbAwLRERERGTX1u4/j5XfZ1r8OvOGBWF6dKDFr2NNXDqViIiIiOyWtYICAKz4PhMf7z9vlWtZC8MCEREREdmllDS11YJCtRXfZyIlTW3Va1qS3U5D4nq5RERERC1XvlaHIe/ut0iPQn0UcifsnhNtF03PdhcWuF4uERERUcsmCAImbzlq1lWPGismyAcbnomw+YfSdhEWuF4uERGR7eEsALKUHScvY9bW42KXgTVj+2JEWAexy2gWmw8LXC+XiIjItnAWAFnayI9+QVp2kdhlIDzAC98+f6/YZTSLTYcFrpdLRERkGzgLgKxFpdbgkTUHxS7DYMesKJsOuTYbFrheLhERkW3gLACyprlJJ7HtaLbYZRg8FRmAFaPDxC6jyWxy6VSul0tERGQbUtLUGPLufrM3mqZmFmDIu/vt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IqI7jB/YWewSjIwbIE49DAtERERERHcI8fdEeICX2GUAAMIDvBAiUh8FwwIRERERkQlTorqKXQIAcetgWCAiIiIiMmF4qBKD7hK3dyEmyAfDQ5WiXZ9hgYiIiIjIBJlMhjdHh0IhdxLl+gq5E5aPChWlsbkawwIRERERUS18FXIkxIaIcu2E2BD4KuSiXLsawwIRERERUR1iw/0xb1iQVa85b1gQYsP9rXpNUxgWiIiIiIjqMT06EHOtFBjmDQvC9OhAq1yrPjJBEASxiyAiIiIisgUpaWrEp6RDq6s0+7kVcickxIZIYkShGsMCEREREVEj5Gt1mJ+swt7TBWY7Z0yQD5aPChW9R+FODAtERERERI0kCAJ2qnKx4eAFpGUXNfk8fQO8MDmqK4aHKkVd9ag2DAtERERERM2QrtYg8XAW9mQUoPBGWb3He7u7YnCwD8YN6CzazswNxbBARERERGQGgiAgX1sGlVqDjFwttLoKlFfq4eLkAIXcGcFKBcI6ekpuqlFdGBaIiIiIiMgkLp1KREREREQmMSwQEREREZFJDAtERERERGQSwwIREREREZnEsEBERERERCYxLBARERERkUkMC0REREREZBLDAhERERERmcSwQEREREREJjEsEBERERGRSQwLRERERERkEsMCERERERGZxLBAREREREQmMSwQEREREZFJ/we45VuXEpGIEgAAAABJRU5ErkJggg==\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Density criterion\n", "r = 0.5 # Neighbour search radius\n", "k = 1 # Minimum number of neighbours\n", "\n", "neighbourhoods = [\n", " # Neighbour within r?\n", " np.where((0 < x) & (x <= r))[0]\n", " # distance matrix\n", " for x in np.absolute(np.subtract.outer(samples, samples))\n", "]\n", "\n", "n_neighbours = np.asarray([len(x) for x in neighbourhoods])\n", "dense = n_neighbours >= k\n", "\n", "# Construct graph as dictionary\n", "# keys: dense points, values: density reachable points\n", "graph = {}\n", "for i, point in enumerate(neighbourhoods):\n", " if dense[i]:\n", " graph[i] = neighbourhoods[i][dense[neighbourhoods[i]]]\n", "\n", "G = networkx.Graph(graph)\n", "pos = networkx.spring_layout(G, iterations=10, seed=7)\n", "networkx.draw(G, pos=pos)\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": { "ExecuteTime": { "end_time": "2020-06-19T13:56:04.569929Z", "start_time": "2020-06-19T13:56:04.548535Z" } }, "source": [ "Once such a graph is constructed, graph traversal algorithms can be used to find the connected components of nodes within the graph. A generic way to do so using a breadth-first-search algorithm could look like this:" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "ExecuteTime": { "end_time": "2021-10-04T21:11:58.278830Z", "start_time": "2021-10-04T21:11:58.274188Z" } }, "outputs": [], "source": [ "labels = {} # Cluster label assignments\n", "visited = {k: False for k in graph} # Node has been assigned\n", "queue = deque() # First-in-first-out queue\n", "current = 1 # Current cluster number\n", "\n", "for point, connected in graph.items():\n", " # Source node\n", " if visited[point]:\n", " continue\n", " \n", " labels[point] = current\n", " visited[point] = True\n", " \n", " while True:\n", " for reachable in connected:\n", " if visited[reachable]:\n", " continue\n", " \n", " labels[reachable] = current\n", " visited[reachable] = True\n", " queue.append(reachable)\n", " \n", " if not queue:\n", " break\n", " \n", " point = queue.popleft()\n", " connected = graph[point]\n", " \n", " current += 1" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "ExecuteTime": { "end_time": "2021-10-04T21:11:58.291057Z", "start_time": "2021-10-04T21:11:58.280660Z" } }, "outputs": [ { "data": { "text/plain": [ "{0: 1,\n", " 11: 1,\n", " 14: 1,\n", " 17: 1,\n", " 19: 1,\n", " 1: 2,\n", " 6: 2,\n", " 16: 2,\n", " 2: 3,\n", " 4: 3,\n", " 5: 3,\n", " 7: 3,\n", " 3: 4,\n", " 10: 4,\n", " 9: 5,\n", " 12: 5,\n", " 13: 5}" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "labels" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "ExecuteTime": { "end_time": "2021-10-04T21:11:58.438883Z", "start_time": "2021-10-04T21:11:58.293112Z" } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "networkx.draw(G, pos=pos, with_labels=True, node_color=[x[1] for x in sorted(labels.items())])\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "ExecuteTime": { "end_time": "2021-10-04T21:11:58.674222Z", "start_time": "2021-10-04T21:11:58.440592Z" } }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAArYAAAGuCAYAAABlbkWHAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAABcSAAAXEgFnn9JSAABhOElEQVR4nO3dd5xcV33//9dn22wv2iJtU1vJkiVh2ZILGIgLsQkONcGUEEiooQYwAQIJ9ZeEmgQSSkIxJaEbDF/AhF5csI2xsGQ1S6u1tE3SStv7lPP7Y4pnViNptXt37szs+/l47GPm3jv3ns/u7M589sznnGPOOUREREREcl2B3wGIiIiIiHhBia2IiIiI5AUltiIiIiKSF5TYioiIiEheUGIrIiIiInlBia2IiIiI5AUltiIiIiKSF5TYioiIiEheUGIrIiIiInlBia2IiIiI5AUltiIiIiKSF5TYioiIiEheKPI7gOXGzI4D5UC337GIiIiI+KwdmHTOrfLiYuac8+I6Mk9mNhoIBKo6Ojr8DkVERETEV52dnczMzIw556q9uJ56bDOvu6OjY8vevXv9jkNERETEV1u3bmXfvn2efYqtGlsRERERyQtKbEVEREQkLyixFREREZG8oMRWRERERPKCElsRERERyQtKbEVEREQkLyixFREREZG8oMRWRERERPKCElsRERERyQtKbEVEREQkLyixFREREZG8oMRWRERERPJCTia2ZlZuZh83s+NmNm5m3zWzdfM8d6eZ/dzMhs3sgJl9ysxq0zyuyMzebWbHzGwyds5lnn8zIuKpcDiMc87vMERExAc5l9iamQHfBf4K+B/gbcAW4C4zazrPuY8D7ga6gbcAPwJeDjxgZvVzHv5p4J3AD4A3A1XAr83sYs++GRHx1KlTp7j//vs5ceLEGcecc/T39xMOh32ITEREMqHI7wAW4FnADcCNzrmfApjZj4GDwLuAN5zj3I8D/+2ce2N8h5n9APgZ8G7gjbF9lwGvAF7lnPtsbN83gC7gw8AzPP6eRGQRnHMcPXqURx99FICuri6ampooKHjsf/cTJ05w8OBBent7ueSSSygpKfEpWhERWSo512NLNKncG09qAZxzncC3gOfHenTPECs3+CPgX5L3O+d+DvwCeGHS7qcDI8AXkx43DPwX8KdmVunB9yEiHklOagFmZ2cZGRlJbE9N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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "xlimit = (-8, 8)\n", "x = np.linspace(*xlimit, 1001)\n", "pdf = multigauss(x, sigmas=[1, 1.5], mus=[-2, 2])\n", "\n", "fig, ax = plt.subplots()\n", "ax.plot(x, pdf, color=\"gray\", linestyle=\"--\", alpha=0.5)\n", "\n", "ax.set(**{\n", " \"xlim\": xlimit,\n", " \"xlabel\": \"$x$\",\n", " \"ylabel\": \"probability density\"\n", "})\n", "\n", "colors = ['#396ab1', '#da7c30', '#3e9651', '#cc2529', '#6b4c9a']\n", "for i, s in enumerate(samples):\n", " if dense[i]:\n", " c = colors[labels[i] - 1]\n", " else:\n", " c = \"gray\"\n", " ax.plot(s, 0, linestyle=\"\",\n", " marker=\"|\", markeredgewidth=0.75, markersize=15,\n", " color=c)\n", "\n", "labels_ = [\n", " (-4, \"2\"),\n", " (-2.8, \"1\"),\n", " (-1.8, \"0\"),\n", " (-0.8, \"3\"),\n", " (1, \"0\"),\n", " (1.8, \"4\"),\n", " (2.8, \"5\"),\n", " (3.8, \"0\"),\n", "]\n", "\n", "for position, l in labels_:\n", " ax.annotate(l, (position, 0.02))\n", "\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## CommonNN clustering in detail" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In practice, one does not necessarily need to construct a density connectivity graph in its entirety beforehand. It is also possible to start from another input structure and explore the connectivity while traversing the structure. We will now show a variant of the CommonNN clustering procedure, starting from pre-computed neighbourhoods in more detail. For this, we generate a small example data set of 200 points in 2D." ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "ExecuteTime": { "end_time": "2021-10-04T21:11:58.741057Z", "start_time": "2021-10-04T21:11:58.679890Z" } }, "outputs": [ { "data": { "text/plain": [ "[[], [], None]" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "noisy_circles, _ = datasets.make_circles(\n", " n_samples=200,\n", " factor=.5,\n", " noise=.05,\n", " random_state=8\n", " )\n", "\n", "noisy_circles = StandardScaler().fit_transform(noisy_circles)\n", "\n", "fig, ax = plt.subplots()\n", "ax.plot(*noisy_circles.T, \"k.\")\n", "ax.set(**{\n", " \"xticks\": (),\n", " \"yticks\": (),\n", " \"aspect\": \"equal\"\n", "})" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We expect to find two clusters (an inner and an outer ring) in this data set. We will at first compute the neighbourhoods for all points with respect to a radius of $r$. Below we show the neighbourhood for the first point in the set." ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "ExecuteTime": { "end_time": "2021-10-04T21:11:58.747034Z", "start_time": "2021-10-04T21:11:58.743692Z" } }, "outputs": [], "source": [ "r = 0.7" ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "ExecuteTime": { "end_time": "2021-10-04T21:11:58.756122Z", "start_time": "2021-10-04T21:11:58.749576Z" } }, "outputs": [], "source": [ "def point_zoom(data, point, ax):\n", " ax.plot(*data.T, \"k.\")\n", " ax.plot(*data[point].T, \"r.\")\n", " \n", " neighbourhood = mpl.patches.Circle(\n", " data[point], r,\n", " edgecolor=\"k\",\n", " facecolor=\"grey\"\n", " )\n", " ax.add_patch(neighbourhood)\n", " \n", " limit_factor = 1.2\n", " ax.set_xlim(data[point][0] - r * limit_factor,\n", " data[point][0] + r * limit_factor)\n", " ax.set_ylim(data[point][1] - r * limit_factor,\n", " data[point][1] + r * limit_factor)\n", " ax.set(**{\n", " \"xticks\": (),\n", " \"yticks\": (),\n", " \"aspect\": \"equal\"\n", " })" ] }, { "cell_type": "code", "execution_count": 23, "metadata": { "ExecuteTime": { "end_time": "2021-10-04T21:11:58.825864Z", "start_time": "2021-10-04T21:11:58.759223Z" } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig, ax = plt.subplots()\n", "point_zoom(noisy_circles, 0, ax=ax)" ] }, { "cell_type": "code", "execution_count": 24, "metadata": { "ExecuteTime": { "end_time": "2021-10-04T21:11:58.832244Z", "start_time": "2021-10-04T21:11:58.827670Z" } }, "outputs": [], "source": [ "# Calculate neighbourhoods using a k-d tree\n", "tree = cKDTree(noisy_circles)\n", "neighbourhoods = [set(x) for x in tree.query_ball_point(noisy_circles, r)]\n", "for i, s in enumerate(neighbourhoods):\n", " # Avoid neighbour self-counting\n", " s.remove(i)" ] }, { "cell_type": "code", "execution_count": 25, "metadata": { "ExecuteTime": { "end_time": "2021-10-04T21:11:58.841202Z", "start_time": "2021-10-04T21:11:58.833733Z" } }, "outputs": [], "source": [ "def check_similarity(a, b, c):\n", " \"\"\"Check the CNN density criterion\"\"\"\n", " if len(a & b) >= c:\n", " return True\n", " return False\n", "\n", "def commonn_from_neighbourhoods(\n", " neighbourhoods, c, yield_iterations=False):\n", " \"\"\"Apply CNN clustering\n", " \n", " neighbourhoods:\n", " list of sets of point indices\n", " (neighbours of each point)\n", " c:\n", " Density reachable points need at least this many common\n", " nearest neighbours\n", " yield_iterations:\n", " Report state of clustering after each label assignment\n", " \"\"\"\n", " \n", " n = len(neighbourhoods) # Number of points\n", " visited = [False for _ in range(n)] # Track visited\n", " labels = [0 for _ in range(n)] # Output container\n", " queue = deque() # FIFO queue \n", " current = 1 # Cluster count\n", " \n", " for point in range(n):\n", " # Source node\n", " if visited[point]:\n", " continue\n", " \n", " visited[point] = True\n", "\n", " neighbours = neighbourhoods[point]\n", " if len(neighbours) <= c:\n", " continue\n", "\n", " labels[point] = current\n", "\n", " if yield_iterations:\n", " # Get current state of clustering\n", " yield (point, None, current, labels, visited)\n", "\n", " while True:\n", " for member in neighbours:\n", " if visited[member]:\n", " continue\n", " \n", " neighbour_neighbours = neighbourhoods[member]\n", " if len(neighbour_neighbours) <= c:\n", " continue\n", " \n", " if check_similarity(neighbours, neighbour_neighbours, c):\n", " labels[member] = current\n", " visited[member] = True\n", " queue.append(member)\n", " \n", " if yield_iterations:\n", " # Get current state of clustering\n", " yield (point, member, current, labels, visited)\n", "\n", " if not queue:\n", " break\n", "\n", " point = queue.popleft()\n", " neighbours = neighbourhoods[point]\n", "\n", " current += 1\n", " \n", " if not yield_iterations:\n", " yield labels" ] }, { "cell_type": "code", "execution_count": 26, "metadata": { "ExecuteTime": { "end_time": "2021-10-04T21:11:58.853085Z", "start_time": "2021-10-04T21:11:58.842795Z" } }, "outputs": [], "source": [ "def plt_iteration(\n", " data, iteration=None, ax=None, ax_props=None, color_list=None):\n", "\n", " if ax is None:\n", " fig, ax = plt.subplots()\n", " else:\n", " fig = ax.get_figure()\n", " \n", " ax_props_defaults = {\n", " \"xticks\": (),\n", " \"yticks\": (),\n", " \"aspect\": \"equal\"\n", " }\n", " \n", " if ax_props is not None:\n", " ax_props_defaults.update(ax_props)\n", " \n", " if iteration is not None:\n", " point, member, current, labels, visited = iteration\n", " \n", " if color_list is None:\n", " color_list = [\n", " \"black\"] + [\n", " i[\"color\"]\n", " for i in islice(mpl.rcParams[\"axes.prop_cycle\"], current)\n", " ]\n", "\n", " for cluster in range(current + 1):\n", " indices = np.where(np.asarray(labels) == cluster)[0]\n", " ax.plot(*data[indices].T, c=color_list[cluster],\n", " linestyle=\"\", marker=\".\")\n", " \n", " else:\n", " ax.plot(*data.T) \n", " \n", " ax.set(**ax_props_defaults)" ] }, { "cell_type": "code", "execution_count": 27, "metadata": { "ExecuteTime": { "end_time": "2021-10-04T21:11:58.921316Z", "start_time": "2021-10-04T21:11:58.854502Z" } }, "outputs": [], "source": [ "class AnimatedIterations:\n", " \"\"\"An animated scatter plot using matplotlib.animations.FuncAnimation.\"\"\"\n", " def __init__(self, data, iterations=None):\n", " self.data = data\n", " self.iterations = iter(iterations)\n", " self.highlights = deque(maxlen=5)\n", " self.sizes = np.ones(len(self.data)) * 10\n", "\n", " self.fig, self.ax = plt.subplots()\n", " self.animation = animation.FuncAnimation(\n", " self.fig, self.update, frames=200, interval=100,\n", " init_func=self.setup_plot, blit=True\n", " )\n", "\n", " def setup_plot(self):\n", " \"\"\"Initial drawing of the scatter plot.\"\"\"\n", " self.scatter = self.ax.scatter(\n", " *self.data.T,\n", " s=self.sizes,\n", " c=np.asarray([0 for _ in range(len(self.data))]),\n", " cmap=mpl.colors.LinearSegmentedColormap.from_list(\n", " \"cluster_map\",\n", " [\"black\"] + [\n", " i[\"color\"]\n", " for i in islice(mpl.rcParams[\"axes.prop_cycle\"], 2)\n", " ]\n", " ),\n", " vmin=0, vmax=2\n", " )\n", " # self.ax.axis([-10, 10, -10, 10])\n", " # For FuncAnimation's sake, we need to return the artist we'll be using\n", " # Note that it expects a sequence of artists, thus the trailing comma.\n", " return self.scatter,\n", "\n", " def update(self, i):\n", " \"\"\"Update the scatter plot.\"\"\"\n", " point, member, current, labels, visited = next(self.iterations)\n", " if member is None:\n", " self.highlights.append(point)\n", " else:\n", " self.highlights.append(member)\n", " \n", " for c, p in enumerate(self.highlights, 1):\n", " self.sizes[p] = c * 10\n", " \n", " # Set sizes\n", " self.scatter.set_sizes(self.sizes)\n", " \n", " # Set colors\n", " self.scatter.set_array(np.asarray(labels))\n", "\n", " # We need to return the updated artist for FuncAnimation to draw..\n", " # Note that it expects a sequence of artists, thus the trailing comma.\n", " return self.scatter,\n", "\n", "\n", "Animation = AnimatedIterations(\n", " noisy_circles,\n", " commonn_from_neighbourhoods(neighbourhoods, 5, yield_iterations=True)\n", ")\n", "# Animation.animation.save('algorithm_explained/iteration.mp4', dpi=300)\n", "plt.close()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Debug mode" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In the current version of the `cnnclustering` package, CommonNN clustering is in detail quite differently implemented than shown in the previous section. To get a closer look at what is going on during a clustering, we provide a fitter type that can yield the state of the assignment during a clustering procedure." ] }, { "cell_type": "code", "execution_count": 28, "metadata": { "ExecuteTime": { "end_time": "2021-10-04T21:11:58.928816Z", "start_time": "2021-10-04T21:11:58.923670Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Clustering(input_data=InputDataExtComponentsMemoryview, fitter=FitterExtBFSDebug(ngetter=NeighboursGetterExtBruteForce(dgetter=DistanceGetterExtMetric(metric=MetricExtEuclideanReduced), sorted=False, selfcounting=True), na=NeighboursExtVectorCPPUnorderedSet, nb=NeighboursExtVectorCPPUnorderedSet, checker=SimilarityCheckerExtSwitchContains, queue=QueueExtFIFOQueue, verbose=True, yielding=True), predictor=None)\n" ] } ], "source": [ "clustering = cluster.Clustering(noisy_circles, fitter=\"bfs_debug\")\n", "print(clustering)" ] }, { "cell_type": "markdown", "metadata": { "ExecuteTime": { "end_time": "2021-10-04T20:32:04.479929Z", "start_time": "2021-10-04T20:32:04.473349Z" } }, "source": [ "As the `fit` method of the debug fitter `_types.FitterExtBFSDebug` is returning generator, we can not invoke it directly from the `Clustering` object but have to call it manually." ] }, { "cell_type": "code", "execution_count": 29, "metadata": { "ExecuteTime": { "end_time": "2021-10-04T21:11:58.938948Z", "start_time": "2021-10-04T21:11:58.930809Z" }, "run_control": { "marked": true } }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" } ], "source": [ "clustering.labels = np.zeros(clustering._input_data.n_points, dtype=int)\n", "iterations = clustering.fitter.fit(\n", " clustering._input_data,\n", " clustering._labels,\n", " _types.ClusterParameters(0.7, 5)\n", ")\n", "iterations" ] }, { "cell_type": "code", "execution_count": 30, "metadata": { "ExecuteTime": { "end_time": "2021-10-04T21:11:58.946937Z", "start_time": "2021-10-04T21:11:58.940731Z" }, "run_control": { "marked": true } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "CommonNN clustering - FitterExtBFSDebug\n", "================================================================================\n", "200 points\n", "radius_cutoff : 0.7\n", "similarity_cutoff : 5\n", "similarity_cutoff_continuous : 0.0\n", "n_member_cutoff : 5\n", "current_start : 1\n", "\n", "New source: 0\n", " ... new cluster 1\n" ] } ], "source": [ "state = next(iterations)" ] }, { "cell_type": "code", "execution_count": 31, "metadata": { "ExecuteTime": { "end_time": "2021-10-04T21:11:58.955061Z", "start_time": "2021-10-04T21:11:58.948463Z" } }, "outputs": [ { "data": { "text/plain": [ "{'reason': 'assigned_source', 'init_point': 0, 'point': None, 'member': None}" ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" } ], "source": [ "state" ] }, { "cell_type": "code", "execution_count": 32, "metadata": { "ExecuteTime": { "end_time": "2021-10-04T21:11:58.963751Z", "start_time": "2021-10-04T21:11:58.956382Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " ... loop over 15 neighbours\n", " ... current neighbour 0\n", " ... already visited\n", "\n", " ... current neighbour 1\n", " ... successful check!\n", "\n" ] } ], "source": [ "state = next(iterations)" ] }, { "cell_type": "code", "execution_count": 33, "metadata": { "ExecuteTime": { "end_time": "2021-10-04T21:11:58.971271Z", "start_time": "2021-10-04T21:11:58.965457Z" } }, "outputs": [ { "data": { "text/plain": [ "{'reason': 'assigned_neighbour', 'init_point': 0, 'point': 0, 'member': 1}" ] }, "execution_count": 33, "metadata": {}, "output_type": "execute_result" } ], "source": [ "state" ] }, { "cell_type": "code", "execution_count": 34, "metadata": { "ExecuteTime": { "end_time": "2021-10-04T21:11:58.980312Z", "start_time": "2021-10-04T21:11:58.972547Z" } }, "outputs": [ { "data": { "text/plain": [ "array([1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", " 0, 0])" ] }, "execution_count": 34, "metadata": {}, "output_type": "execute_result" } ], "source": [ "clustering.labels" ] } ], "metadata": { "kernelspec": { "display_name": "cnnclustering38", "language": "python", "name": "cnnclustering38" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.8" }, "toc": { "base_numbering": 1, "nav_menu": {}, "number_sections": true, "sideBar": true, "skip_h1_title": true, "title_cell": "Table of Contents", "title_sidebar": "Contents", "toc_cell": false, "toc_position": { "height": "calc(100% - 180px)", "left": "10px", "top": "150px", "width": "344px" }, "toc_section_display": true, "toc_window_display": true }, "varInspector": { "cols": { "lenName": 16, "lenType": 16, "lenVar": 40 }, "kernels_config": { "python": { "delete_cmd_postfix": "", "delete_cmd_prefix": "del ", "library": "var_list.py", "varRefreshCmd": "print(var_dic_list())" }, "r": { "delete_cmd_postfix": ") ", "delete_cmd_prefix": "rm(", "library": "var_list.r", "varRefreshCmd": "cat(var_dic_list()) " } }, "types_to_exclude": [ "module", "function", "builtin_function_or_method", "instance", "_Feature" ], "window_display": false } }, "nbformat": 4, "nbformat_minor": 4 }