358 lines
38 KiB
Text
358 lines
38 KiB
Text
{
|
|
"cells": [
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 1,
|
|
"id": "063e4e3e",
|
|
"metadata": {
|
|
"slideshow": {
|
|
"slide_type": "skip"
|
|
}
|
|
},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/html": [
|
|
"\n",
|
|
"<style>\n",
|
|
".output_png {\n",
|
|
" display: table-cell;\n",
|
|
" text-align: center;\n",
|
|
" vertical-align: middle;\n",
|
|
"}\n",
|
|
"</style>\n"
|
|
],
|
|
"text/plain": [
|
|
"<IPython.core.display.HTML object>"
|
|
]
|
|
},
|
|
"execution_count": 1,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"from IPython.core.display import HTML\n",
|
|
"\n",
|
|
"HTML(\n",
|
|
" \"\"\"\n",
|
|
"<style>\n",
|
|
".output_png {\n",
|
|
" display: table-cell;\n",
|
|
" text-align: center;\n",
|
|
" vertical-align: middle;\n",
|
|
"}\n",
|
|
"</style>\n",
|
|
"\"\"\"\n",
|
|
")\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 2,
|
|
"id": "370d673f",
|
|
"metadata": {
|
|
"slideshow": {
|
|
"slide_type": "skip"
|
|
}
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"import numpy as np\n",
|
|
"import matplotlib.pyplot as plt\n",
|
|
"\n",
|
|
"plt.rcParams[\"figure.figsize\"] = (10, 5)\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "019ab614",
|
|
"metadata": {
|
|
"slideshow": {
|
|
"slide_type": "slide"
|
|
}
|
|
},
|
|
"source": [
|
|
"# A connectivity-based algorithm: Agglomerative clustering\n",
|
|
"\n",
|
|
"## Outline\n",
|
|
"\n",
|
|
"- Algorithm\n",
|
|
"- scikit-learn implementation\n",
|
|
"- Choose K\n",
|
|
"- Linkage"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "ec775a8c",
|
|
"metadata": {
|
|
"slideshow": {
|
|
"slide_type": "subslide"
|
|
}
|
|
},
|
|
"source": [
|
|
"### Toy data generation"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 3,
|
|
"id": "13f522d1",
|
|
"metadata": {
|
|
"slideshow": {
|
|
"slide_type": "-"
|
|
}
|
|
},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"image/png": "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",
|
|
"text/plain": [
|
|
"<Figure size 720x360 with 1 Axes>"
|
|
]
|
|
},
|
|
"metadata": {
|
|
"needs_background": "light"
|
|
},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"means = [np.array([1, 1]), np.array([5, 5]), np.array([5, 1])]\n",
|
|
"covariance = np.array([[0.25, 0], [0, 0.25]])\n",
|
|
"n_points = 10\n",
|
|
"\n",
|
|
"data = [\n",
|
|
" np.random.multivariate_normal(mean=means[i], cov=covariance, size=n_points)\n",
|
|
" for i in range(3)\n",
|
|
"]\n",
|
|
"all_data = np.r_[data[0], data[1], data[2]]\n",
|
|
"\n",
|
|
"plt.scatter(all_data[:, 0], all_data[:, 1])\n",
|
|
"plt.show()\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "babc0d81",
|
|
"metadata": {
|
|
"slideshow": {
|
|
"slide_type": "slide"
|
|
}
|
|
},
|
|
"source": [
|
|
"## Agglomerative clustering algorithm\n",
|
|
"\n",
|
|
"__Objective__: Recursively merges pair of clusters of sample data.\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "2f77e30b",
|
|
"metadata": {
|
|
"slideshow": {
|
|
"slide_type": "slide"
|
|
}
|
|
},
|
|
"source": [
|
|
"## K-means using scikit-learn"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 4,
|
|
"id": "58cc2222",
|
|
"metadata": {
|
|
"slideshow": {
|
|
"slide_type": "-"
|
|
}
|
|
},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"image/png": "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",
|
|
"text/plain": [
|
|
"<Figure size 720x360 with 1 Axes>"
|
|
]
|
|
},
|
|
"metadata": {
|
|
"needs_background": "light"
|
|
},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"from sklearn.cluster import AgglomerativeClustering\n",
|
|
"\n",
|
|
"ac = AgglomerativeClustering(n_clusters=3)\n",
|
|
"clusters = ac.fit_predict(all_data)\n",
|
|
"\n",
|
|
"plt.scatter(all_data[:, 0], all_data[:, 1], c=clusters)\n",
|
|
"plt.show()\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "1abc56c1",
|
|
"metadata": {
|
|
"slideshow": {
|
|
"slide_type": "subslide"
|
|
}
|
|
},
|
|
"source": [
|
|
"### Visualize dendrogram"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 5,
|
|
"id": "d52284a0",
|
|
"metadata": {
|
|
"slideshow": {
|
|
"slide_type": "-"
|
|
}
|
|
},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"Plot Dendrogram\n"
|
|
]
|
|
},
|
|
{
|
|
"data": {
|
|
"image/png": "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",
|
|
"text/plain": [
|
|
"<Figure size 720x360 with 1 Axes>"
|
|
]
|
|
},
|
|
"metadata": {
|
|
"needs_background": "light"
|
|
},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"from scipy.cluster.hierarchy import dendrogram\n",
|
|
"\n",
|
|
"print(\"Plot Dendrogram\")\n",
|
|
"\n",
|
|
"ac = AgglomerativeClustering(n_clusters=3, compute_distances=True)\n",
|
|
"clusters = ac.fit(all_data)\n",
|
|
"\n",
|
|
"children = ac.children_\n",
|
|
"distances = ac.distances_\n",
|
|
"n_observations = np.arange(2, children.shape[0] + 2)\n",
|
|
"\n",
|
|
"linkage_matrix = np.c_[children, distances, n_observations]\n",
|
|
"\n",
|
|
"dendrogram(linkage_matrix, labels=ac.labels_)\n",
|
|
"plt.show()\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "cc1f919a",
|
|
"metadata": {
|
|
"slideshow": {
|
|
"slide_type": "slide"
|
|
}
|
|
},
|
|
"source": [
|
|
"## Choose optimal number of clusters K\n",
|
|
"\n",
|
|
"Plot the height of the different successive merges.\\\n",
|
|
"Find the elbow."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 6,
|
|
"id": "7676f1a2",
|
|
"metadata": {
|
|
"slideshow": {
|
|
"slide_type": "-"
|
|
}
|
|
},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"image/png": "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",
|
|
"text/plain": [
|
|
"<Figure size 720x360 with 1 Axes>"
|
|
]
|
|
},
|
|
"metadata": {
|
|
"needs_background": "light"
|
|
},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"x = np.arange(3 * n_points - 1, 0, -1)\n",
|
|
"y = ac.distances_\n",
|
|
"\n",
|
|
"plt.bar(x, y)\n",
|
|
"plt.show()\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "9b95a0d2",
|
|
"metadata": {
|
|
"slideshow": {
|
|
"slide_type": "slide"
|
|
}
|
|
},
|
|
"source": [
|
|
"## Linkage\n",
|
|
"\n",
|
|
"The linkage represent how the similarity between different groups of points is computed.\n",
|
|
"\n",
|
|
"Different linkages in scikit-learn:\n",
|
|
"- __average__: uses the average of the distances of each observation of the two sets.\n",
|
|
"- __complete__: linkage uses the maximum distances between all observations of the two sets.\n",
|
|
"- __single__: uses the minimum of the distances between all observations of the two sets.\n",
|
|
"- __ward__: minimizes the variance of the clusters being merged."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "f823699e",
|
|
"metadata": {
|
|
"slideshow": {
|
|
"slide_type": "subslide"
|
|
}
|
|
},
|
|
"source": [
|
|
"#### Visualization of the influence of different linkage strategies\n",
|
|
"\n",
|
|
"<img src=\"images/aggloClustering_linkage_comparison.png\" width=\"500px\"/>"
|
|
]
|
|
}
|
|
],
|
|
"metadata": {
|
|
"celltoolbar": "Slideshow",
|
|
"kernelspec": {
|
|
"display_name": "Python 3 (ipykernel)",
|
|
"language": "python",
|
|
"name": "python3"
|
|
},
|
|
"language_info": {
|
|
"codemirror_mode": {
|
|
"name": "ipython",
|
|
"version": 3
|
|
},
|
|
"file_extension": ".py",
|
|
"mimetype": "text/x-python",
|
|
"name": "python",
|
|
"nbconvert_exporter": "python",
|
|
"pygments_lexer": "ipython3",
|
|
"version": "3.8.10"
|
|
}
|
|
},
|
|
"nbformat": 4,
|
|
"nbformat_minor": 5
|
|
}
|