{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "## This notebook shows an application of kneed in selecting the optimal number of clusters from kmeans clustering algorithm." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "%matplotlib inline" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Look at the K means tutorial posted [here](https://pythonprogramminglanguage.com/kmeans-elbow-method/)" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# clustering dataset\n", "# determine k using elbow method\n", " \n", "from sklearn.cluster import KMeans\n", "from sklearn import metrics\n", "from scipy.spatial.distance import cdist\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", " \n", "x1 = np.array([3, 1, 1, 2, 1, 6, 6, 6, 5, 6, 7, 8, 9, 8, 9, 9, 8])\n", "x2 = np.array([5, 4, 5, 6, 5, 8, 6, 7, 6, 7, 1, 2, 1, 2, 3, 2, 3])\n", " \n", "plt.plot()\n", "plt.xlim([0, 10])\n", "plt.ylim([0, 10])\n", "plt.title('Dataset')\n", "plt.scatter(x1, x2)\n", "plt.show()\n", " \n", "# create new plot and data\n", "plt.plot()\n", "X = np.array(list(zip(x1, x2))).reshape(len(x1), 2)\n", "colors = ['b', 'g', 'r']\n", "markers = ['o', 'v', 's']\n", " \n", "# k means determine k\n", "distortions = []\n", "K = range(1,10)\n", "for k in K:\n", " kmeanModel = KMeans(n_clusters=k).fit(X)\n", " kmeanModel.fit(X)\n", " distortions.append(sum(np.min(cdist(X, kmeanModel.cluster_centers_, 'euclidean'), axis=1)) / X.shape[0])\n", "\n", "# Plot the elbow\n", "plt.plot(K, distortions, 'bx-')\n", "plt.xlabel('k')\n", "plt.ylabel('Distortion')\n", "plt.title('The Elbow Method showing the optimal k')\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## focus on the second plot showing the distortion as a function of k clusters" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "range(1, 10) \n", " [3.4577032384495707, 1.7687413573405673, 0.8819889697423957, 0.7587138847606585, 0.6635212812400347, 0.5808803063754726, 0.5093717077076824, 0.42618267462691206, 0.3529411764705882]\n" ] } ], "source": [ "print(K, '\\n', distortions)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Use kneed to determine best k" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "import sys\n", "sys.path.append('..')\n", "\n", "from kneed import KneeLocator" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "kn = KneeLocator(list(K), distortions, S=1.0, curve='convex', direction='decreasing')" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "3" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "kn.knee" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.xlabel('k')\n", "plt.ylabel('Distortion')\n", "plt.title('The Elbow Method showing the optimal k')\n", "plt.plot(K, distortions, 'bx-')\n", "plt.vlines(kn.knee, plt.ylim()[0], plt.ylim()[1], linestyles='dashed')\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.4" } }, "nbformat": 4, "nbformat_minor": 2 }