|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934 |
- {
- "cells": [
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "# k-Means"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "\n",
- "根据训练样本中是否包含标签信息,机器学习可以分为 **监督学习** 和 **无监督学习**。`聚类算法`是典型的无监督学习,其训练的样本中值包含`样本的特征`,**不包含样本的标签信息**。在聚类算法中,利用样本的特征,将具有相似特征空间分布的样本划分到同一类别中。\n",
- "\n",
- "\n",
- ""
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## 1. 方法\n",
- "\n",
- "由于具有出色的速度和良好的可扩展性,K-Means最经典的聚类方法。***k-Means算法是一个重复移动类中心点(重心,centroids)的过程***:\n",
- "* 移动中心点到其包含成员的平均位置;\n",
- "* 然后重新划分其内部成员。\n",
- "\n",
- "`k`是算法中的超参数,表示类的数量;k-Means可以自动分配样本到不同的类,但是不能决定究竟要分几个类。`k`必须是一个比训练集样本数小的正整数。有时,类的数量是由问题内容指定的。例如,一个鞋厂有三种新款式,它想知道每种新款式都有哪些潜在客户,于是它调研客户,然后从数据里找出三类。也有一些问题没有指定聚类的数量,最优的聚类数量是不确定的。\n",
- "\n",
- "k-Means的参数是类的重心位置和其内部观测值的位置。与广义线性模型和决策树类似,k-Means参数的最优解也是以代价函数最小化为目标。k-Means代价函数公式如下:\n",
- "$$\n",
- "J = \\sum_{k=1}^{K} \\sum_{i \\in C_k} | x_i - u_k|^2\n",
- "$$\n",
- "\n",
- "$u_k$是第$k$个类的重心位置,定义为:\n",
- "$$\n",
- "u_k = \\frac{1}{|C_k|} \\sum_{i \\in C_k} x_i\n",
- "$$\n",
- "\n",
- "\n",
- "成本函数是各个类畸变程度(distortions)之和。每个类的畸变程度等于该类重心与其内部成员位置距离的平方和。若类内部的成员彼此间越紧凑则类的畸变程度越小,反之,若类内部的成员彼此间越分散则类的畸变程度越大。"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## 2. 算法\n",
- "求解成本函数最小化的参数就是一个重复配置每个类包含的观测值,并不断移动类重心的过程。\n",
- "\n",
- "输入:$T=\\{ x_1, x_2, ..., x_N\\}$,其中$x_i \\in \\mathbb{R}^D$,i=1,2...N\n",
- "\n",
- "输出:聚类集合$C_k$, 聚类中心$u_k$, 其中k=1,2,...K\n",
- "\n",
- "1. 初始化类的重心$u_k$,可以随机选择样本作为聚类中心\n",
- "2. 每次迭代的时候,把所有样本分配到离它们最近的类,即更新聚类集合$C_k$\n",
- "3. 然后把重心移动到该类全部成员位置的平均值那里,即更新$u_k$\n",
- "4. 若达到最大迭代步数,或两次迭代差小于设定的阈值则算法结束,否则重复步骤2\n",
- "\n"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## 3. 计算过程演示"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 1,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "image/png": "iVBORw0KGgoAAAANSUhEUgAAAWoAAAD4CAYAAADFAawfAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAAsTAAALEwEAmpwYAAAN7klEQVR4nO3dT2zkd3nH8c/H3sxmdqGAlMhVd6N6Dwi0QqqCVzRDVDTqcICC4NJDqMIBH3wpIfypUIJUcar2ghA50EpRMlwYwWGJqiqNSCrjOVQzWrG7iRR2F6QoQP4Q1OVAwVH1G7Lz9GC7s4286zHrn7+Px++XZGn9dx89Hr89/vnP1xEhAEBec6UHAADcGqEGgOQINQAkR6gBIDlCDQDJHanjjd51112xuLhYx5ue2ptvvqnjx48XnSELdjHBLibYxUSGXVy8ePE3EXH3ds+rJdSLi4u6cOFCHW96av1+X+12u+gMWbCLCXYxwS4mMuzC9i9v9jwufQBAcoQaAJIj1ACQHKEGgOQINQAkR6gBIDlCDQDJEWoASI5QA0ByhBoAkiPUAJAcoQaA5Ag1ACRHqAEgOUINAMkRagBIjlADQHJThdr2l2xftv0T29+zfWfdgwEANuwYatsnJH1B0pmI+ICkeUkP1D0YgPoMh0P1ej0Nh8PSo2AK0176OCKpafuIpGOSflXfSADqNBwO1el01O121el0iPUBsOPhthHxuu1vSHpF0v9Iei4innv7y9lekbQiSQsLC+r3+3s86u6sr68XnyELdjHBLqRer6eqqjQej1VVlbrdrqqqKj1WUelvFxFxywdJ75H0I0l3S7pD0r9KevBWr7O0tBSlra2tlR4hDXYxwS4iBoNBNJvNmJubi2azGYPBoPRIxWW4XUi6EDdp6jSXPj4q6ecRcS0i/iDpKUkfruWzBoDatVotra6uanl5Waurq2q1WqVHwg52vPShjUse99k+po1LHx1JF2qdCkCtWq2Wqqoi0gfEjveoI+K8pHOSLkl6cfN1Hq95LgDApmnuUSsivi7p6zXPAgDYBr+ZCADJEWoASI5QA0ByhBoAkiPUAJAcoQaA5Ag1ACRHqAEgOUINAMkRagBIjlADQHKEGgCSI9QAkByhBoDkCDVqNxwOdfbsWQ5RFbu4UZZdHIQT2af6e9TAH2vrxOvRaKRGo3Goj35iFxNZdrE1R1VV6vV6ad8n3KNGrfr9vkajka5fv67RaJT7pOeasYuJLLvYmmM8Hqd+nxBq1KrdbqvRaGh+fl6NRkPtdrv0SMWwi4ksu9iaY25uLvX7hEsfqNXWidf9fl/tdjvll5X7hV1MZNnF1hzdblfLy8tp3yeEGrVrtVppPwD2G7uYyLKLg3AiO5c+ACA5Qg0AyRFqAEiOUANAcoQaAJIj1ACQHKEGgOQINQAkR6gBIDlCDQDJEWoASI5QA0ByhBoAkiPUAJDcVKG2/W7b52z/1PZV23n/HiAAzJhp/x71Y5J+GBF/a7sh6ViNMwEAbrDjPWrb75L0EUlPSlJEjCLitzXPBey5g3DaNLCdaS59nJJ0TdJ3bD9v+wnbx2ueC9hTW6dNd7tddTodYo0DZZpLH0ckfVDSQxFx3vZjkh6R9I83vpDtFUkrkrSwsFD8NN/19fXiM2TBLqRer6eqqjQej1VVlbrdrqqqKj1WUdwuJtLvIiJu+SDpTyX94obH/0rSv9/qdZaWlqK0tbW10iOkwS4iBoNBNJvNmJubi2azGYPBoPRIxXG7mMiwC0kX4iZN3fHSR0T8WtKrtt+3+aSOpCv1fNoA6rF12vTy8rJWV1dTH2QKvN20P/XxkKTe5k98vCzpc/WNBNTjIJw2DWxnqlBHxAuSztQ7CgBgO/xmIgAkR6gBIDlCDQDJEWoASI5QA0ByhBoAkiPUAJAcoQaA5Ag1ACRHqAEgOUINAMkRagBIjlADQHKEGgCSI9TAPhoOhzp79ixnNopd7Ma0BwcAuE1bB+yORiM1Go1DfdIMu9gd7lED+6Tf72s0Gun69esajUa5D1OtGbvYHUIN7JN2u61Go6H5+Xk1Gg212+3SIxXDLnaHSx/APtk6YLff76vdbh/qL/XZxe4QamAftVotorSJXUyPSx8AkByhBoDkCDUAJEeoASA5Qg0AyRFqAEiOUANAcoQaAJIj1ACQHKEGgOQINQAkR6gBIDlCDQDJEWoASI5QA0ByU4fa9rzt520/XedAAID/bzf3qB+WdLWuQWYRpywD2AtTnfBi+6SkT0j6J0lfrnWiGcEpywD2yrRHcX1L0lclvfNmL2B7RdKKJC0sLBQ/VXh9fb3oDL1eT1VVaTweq6oqdbtdVVVVZJbSu8iEXUywi4n0u4iIWz5I+qSkf978d1vS0zu9ztLSUpS2trZW9P8fDAbRbDZjfn4+ms1mDAaDYrOU3kUm7GKCXUxk2IWkC3GTpk5zj/p+SZ+y/TeS7pT0J7a/GxEP1vOpYzZwyjKAvbJjqCPiUUmPSpLttqR/INLT4ZRlAHuBn6MGgOSm/WaiJCki+pL6tUwCANgW96gBIDlCDQDJEWoASI5QA0ByhBoAkiPUAJAcoQaA5Ag1ACRHqAEgOUINAMkRagBIjlADQHKEGgCSI9QAkByhRu04jR24Pbv6e9TAbnEaO3D7uEeNWvX7fY1GI12/fl2j0Sj3Sc9AUoQatWq322o0Gpqfn1ej0VC73S49EnDgcOkDteI0duD2EWrUjtPYgdvDpQ8ASI5QA0ByhBoAkiPUAJAcoQaA5Ag1ACRHqAEgOUINAMkRagBIjlADQHKEGgCSI9QAkByhBoDkCDUAJLdjqG3fY3vN9hXbl20/vB+DAQA2TPP3qN+S9JWIuGT7nZIu2v6PiLhS82wAAE1xjzoi3oiIS5v//r2kq5JO1D0Y9sZwOFSv1+MEcOAA29U1atuLku6VdL6WabCntk4A73a76nQ6xBo4oKY+isv2OyT9QNIXI+J32zx/RdKKJC0sLBQ/bXp9fb34DKX1ej1VVaXxeKyqqtTtdlVVVemxiuJ2McEuJtLvIiJ2fJB0h6RnJX15mpdfWlqK0tbW1kqPUNxgMIhmsxlzc3PRbDZjMBiUHqk4bhcT7GIiwy4kXYibNHWan/qwpCclXY2Ib9b6WQN7ausE8OXlZa2urnLALHBATXPp435Jn5X0ou0XNp/2tYh4prapsGdarZaqqiLSwAG2Y6gj4j8leR9mAQBsg99MBIDkCDUAJEeoASA5Qg0AyRFqAEiOUANAcoQaAJIj1ACQHKEGgOQINQAkR6gBIDlCDQDJEWoASI5QA0ByhBoAkiPUAJAcoQaA5Ag1ACRHqAEgOUINAMkRagBIjlADQHKEGgCSI9QAkByhBoDkCDUAJEeoASA5Qg0AyRFqAEiOUANAcoQaAJIj1ACQHKEGgOQINQAkR6gBILmpQm37Y7Z/Zvsl24/UPRQAYGLHUNuel/RtSR+XdFrSZ2yfrnuw2zEcDtXr9TQcDkuPAgC3bZp71B+S9FJEvBwRI0nfl/Tpesf64w2HQ3U6HXW7XXU6HWIN4MA7MsXLnJD06g2PvybpL9/+QrZXJK1I0sLCgvr9/l7Mt2u9Xk9VVWk8HquqKnW7XVVVVWSWLNbX14u9P7JhFxPsYiL7LqYJ9VQi4nFJj0vSmTNnot1u79Wb3pWjR4/+X6yPHj2q5eVltVqtIrNk0e/3Ver9kQ27mGAXE9l3Mc2lj9cl3XPD4yc3n5ZSq9XS6uqqlpeXtbq6eugjDeDgm+Ye9Y8lvdf2KW0E+gFJf1frVLep1WqpqioiDWAm7BjqiHjL9uclPStpXlI3Ii7XPhkAQNKU16gj4hlJz9Q8CwBgG/xmIgAkR6gBIDlCDQDJEWoASI5QA0ByhBoAkiPUAJAcoQaA5Ag1ACRHqAEgOUINAMkRagBIjlADQHKEGgCSI9QAkByhBoDkHBF7/0bta5J+uedveHfukvSbwjNkwS4m2MUEu5jIsIs/j4i7t3tGLaHOwPaFiDhTeo4M2MUEu5hgFxPZd8GlDwBIjlADQHKzHOrHSw+QCLuYYBcT7GIi9S5m9ho1AMyKWb5HDQAzgVADQHIzGWrbH7P9M9sv2X6k9Dyl2L7H9prtK7Yv23649Ewl2Z63/bztp0vPUpLtd9s+Z/untq/abpWeqRTbX9r82PiJ7e/ZvrP0TNuZuVDbnpf0bUkfl3Ra0mdsny47VTFvSfpKRJyWdJ+kvz/Eu5CkhyVdLT1EAo9J+mFEvF/SX+iQ7sT2CUlfkHQmIj4gaV7SA2Wn2t7MhVrShyS9FBEvR8RI0vclfbrwTEVExBsRcWnz37/XxgfkibJTlWH7pKRPSHqi9Cwl2X6XpI9IelKSImIUEb8tOlRZRyQ1bR+RdEzSrwrPs61ZDPUJSa/e8PhrOqRxupHtRUn3SjpfeJRSviXpq5LGheco7ZSka5K+s3kZ6Anbx0sPVUJEvC7pG5JekfSGpP+OiOfKTrW9WQw13sb2OyT9QNIXI+J3pefZb7Y/Kem/IuJi6VkSOCLpg5L+JSLulfSmpEP5fRzb79HGV9unJP2ZpOO2Hyw71fZmMdSvS7rnhsdPbj7tULJ9hzYi3YuIp0rPU8j9kj5l+xfauBT217a/W3akYl6T9FpEbH1ldU4b4T6MPirp5xFxLSL+IOkpSR8uPNO2ZjHUP5b0XtunbDe08c2Bfys8UxG2rY1rkVcj4pul5yklIh6NiJMRsaiN28OPIiLlPae6RcSvJb1q+32bT+pIulJwpJJekXSf7WObHysdJf3G6pHSA+y1iHjL9uclPauN7+J2I+Jy4bFKuV/SZyW9aPuFzad9LSKeKTcSEnhIUm/zjszLkj5XeJ4iIuK87XOSLmnjJ6SeV9JfJedXyAEguVm89AEAM4VQA0ByhBoAkiPUAJAcoQaA5Ag1ACRHqAEguf8FNFbkKND8AT8AAAAASUVORK5CYII=\n",
- "text/plain": [
- "<Figure size 432x288 with 1 Axes>"
- ]
- },
- "metadata": {
- "needs_background": "light"
- },
- "output_type": "display_data"
- }
- ],
- "source": [
- "%matplotlib inline\n",
- "import matplotlib.pyplot as plt\n",
- "import numpy as np\n",
- "\n",
- "X0 = np.array([7, 5, 7, 3, 4, 1, 0, 2, 8, 6, 5, 3])\n",
- "X1 = np.array([5, 7, 7, 3, 6, 4, 0, 2, 7, 8, 5, 7])\n",
- "plt.figure()\n",
- "plt.axis([-1, 9, -1, 9])\n",
- "plt.grid(True)\n",
- "plt.plot(X0, X1, 'k.');"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "假设K-Means初始化时,将第一个类的重心设置在第5个样本,第二个类的重心设置在第11个样本.那么我们可以把每个实例与两个重心的距离都计算出来,将其分配到最近的类里面。计算结果如下表所示:\n",
- "\n",
- "\n",
- "新的重心位置和初始聚类结果如下图所示。第一类用X表示,第二类用点表示。重心位置用稍大的点突出显示。\n",
- "\n",
- "\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 2,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "image/png": "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\n",
- "text/plain": [
- "<Figure size 432x288 with 1 Axes>"
- ]
- },
- "metadata": {
- "needs_background": "light"
- },
- "output_type": "display_data"
- }
- ],
- "source": [
- "C1 = [1, 4, 5, 9, 11]\n",
- "C2 = list(set(range(12)) - set(C1))\n",
- "X0C1, X1C1 = X0[C1], X1[C1]\n",
- "X0C2, X1C2 = X0[C2], X1[C2]\n",
- "plt.figure()\n",
- "plt.title('1st iteration results')\n",
- "plt.axis([-1, 9, -1, 9])\n",
- "plt.grid(True)\n",
- "plt.plot(X0C1, X1C1, 'rx')\n",
- "plt.plot(X0C2, X1C2, 'g.')\n",
- "plt.plot(4,6,'rx',ms=12.0)\n",
- "plt.plot(5,5,'g.',ms=12.0);"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "现在我们重新计算两个类的重心,把重心移动到新位置,并重新计算各个样本与新重心的距离,并根据距离远近为样本重新归类。结果如下表所示:\n",
- "\n",
- "\n",
- "\n",
- "画图结果如下:"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 3,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "image/png": "iVBORw0KGgoAAAANSUhEUgAAAWoAAAEICAYAAAB25L6yAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAAsTAAALEwEAmpwYAAAUz0lEQVR4nO3dfZBddX3H8feXDQmEKKjBpULCpg+KjI61CeLCaHcbxpFC1Zm2FMWgpk5aWiw6WitSFLXUqe1YdVQciqEFtmYyaFtEWtGwa32IlASYIgRba0ICgsQHHjbobh6+/eOe9S7hZvcu2Zvz2933a2Zn99577jnf8927nz33d+69v8hMJEnlOqzuAiRJEzOoJalwBrUkFc6glqTCGdSSVDiDWpIKZ1Br2kTEmyPiGwe4bWlEDEdE16Gua1wN50XEzXVt/2BFRE9EZETMq7sWHVoG9RwWEQsi4rMRcV9EPB4Rd0bEmZ3YVmZuz8xFmbm32vZQRLy1E9uq1v+UUMvMgcx8Vae2eah1uocqh0E9t80DdgC/CRwN/CWwPiJ66iyqHXUemU/GI15NN4N6DsvMXZl5WWZuy8x9mXkjsBVYDhARfRFxf0S8MyIejogHI+ItY/ePiOdExA0R8VhE/BfwKwfa1vgj3Ii4HHgF8MlqOOST1TInRcRXIuInEfHdiDhn3P3/MSKuiIibImIX0B8RZ0XEHdX2d0TEZeM2+Z/V90eqbfTuPzQTEadFxG0R8Wj1/bRxtw1FxIci4pvVs42bI2LxAfZtrE9/EREPAVdHxGER8Z6I+L+I+HFErI+IZ1fLHxER11XXP1Jtu7u6bVtEnDFu3ZdFxHUttvmUHkbD31e/q8ci4q6IeNGBfieaOQxq/UIVFs8H7h539XE0jraPB/4Q+FREPKu67VPAz4FfAlZXX5PKzEuArwMXVsMhF0bEUcBXgH8GngucC3w6Ik4ed9c3AJcDzwC+AewCzgeOAc4CLoiI11XLvrL6fky1jY377euzgS8BnwCeA3wU+FJEPGe/7b2lqmc+8K4Jdus44NnAicAa4G3A62g8W3ke8FMa/QJ4E42eLqm2/cfAzyZY91O06iHwqmq/n1+t/xzgx1NZr8pkUAuAiDgcGAD+KTPvHXfTbuCDmbk7M28ChoEXVEMPvwu8rzoy/w7wTwdRwtnAtsy8OjP3ZOYdwOeB3x+3zL9l5jero/+fZ+ZQZt5VXf5v4HM0grEdZwH/m5nXVtv7HHAv8Dvjlrk6M/8nM38GrAd+fYL17QPen5kj1fJ/DFySmfdn5ghwGfB71bDIbhoB/auZuTczN2fmY23WPZHdNP6JnQREZm7JzAenYb2qmUEtIuIw4FpgFLhwv5t/nJl7xl1+AlgEHEtzjHvMfQdRxonAqdVQwCMR8QhwHo0j1THjt0VEnBoRgxGxMyIepRGOLYcnWnhei3rvo/HMYcxD434e2+8D2ZmZPx93+UTgX8btyxZgL9BNo9dfBtZFxA8i4iPVP8qDkpm3AJ+kceT+cERcGRHPPNj1qn4G9RwXEQF8lkaA/G5m7m7zrjuBPTSevo9ZOoVN7/+xjTuAr2XmMeO+FmXmBRPc55+BG4AlmXk08BkgDrDs/n5AI0zHWwo80PYePFmr/Tlzv/05IjMfqJ6dfCAzTwZOo/Fs4vzqfruAhePWcxwH9pR9zMxPZOZy4GQaQyB//jT3RwUxqHUF8ELgd6qn7G2pXmb3BeCyiFhYjSW/aQrb/SHwy+Mu3wg8PyJWRcTh1dcpEfHCCdbxDOAnmfnziHgZjTHlMTtpDEf8cst7wk3V9t5QneD8AxrhduMU9mEinwEuj4gTASLi2Ih4bfVzf0S8uBo+eozGkMW+6n53AudW+78C+L0JtvGkHlb9OrU6Ot9F4/zBvgPdWTOHQT2HVSHyRzTGXh+qXj0wHBHntbmKC2kMBzwE/CNw9RQ2/3EaY7Y/jYhPZObjNE6GnUvjaPch4G+ABROs40+AD0bE48D7aIwjA5CZT9A48fjNavjh5ePvmJk/pnEk+04aJ9zeDZydmT+awj5Mtn83ADdX9X0bOLW67TjgehohvQX4Go3hEIBLabx65qfAB2g8a5hoG7/oIfBM4B+q+95X7dffTtP+qEbhxAGSVDaPqCWpcAa1JBXOoJakwhnUklS4jnx4zOLFi7Onp6cTq27brl27OOqoo2qtoRT2osleNNmLphJ6sXnz5h9l5rGtbutIUPf09LBp06ZOrLptQ0ND9PX11VpDKexFk71oshdNJfQiIg74zl6HPiSpcAa1JBXOoJakwhnUklQ4g1qSCmdQS1LhDGpJKpxBLUmFM6glqXAGtSQVzqCWpMIZ1JJUOINakgpnUEtS4QxqSSqcQS1JhTOoJalwbQV1RLwjIu6OiO9ExOci4ohOFyapAz7yERgcfPJ1g4ON61WsSYM6Io4H/gxYkZkvArqAcztdmKQOOOUUOOecZlgPDjYun3JKvXVpQu3OmTgPODIidgMLgR90riRJHdPfD+vXwznn0HPmmfDv/9643N9fd2WaQGTm5AtFXARcDvwMuDkzz2uxzBpgDUB3d/fydevWTXOpUzM8PMyiRYtqraEU9qLJXjT0rF1Lz7XXsm3VKratXl13ObUr4XHR39+/OTNXtLwxMyf8Ap4F3AIcCxwO/Cvwxonus3z58qzb4OBg3SUUw1402YvMvOWWzMWLc+uqVZmLFzcuz3ElPC6ATXmATG3nZOIZwNbM3JmZu4EvAKcd/P8PSYfc2Jj0+vWNI+lqGOQpJxhVlHaCejvw8ohYGBEBrAS2dLYsSR1x221PHpMeG7O+7bZ669KEJj2ZmJm3RsT1wO3AHuAO4MpOFyapA9797qde19/vycTCtfWqj8x8P/D+DtciSWrBdyZKUuEMakkqnEEtSYUzqCWpcAa1JBXOoJakwhnUklQ4g1qSCmdQS1LhDGpJKpxBLUmFM6glqXAGtSQVzqBW5zjjdZO9aCqlF6XU0QaDWp3jjNdN9qKplF6UUkcb2p2FXJq6cTNec8EFcMUVc3fGa3vRVEovZtCM7B5Rq7P6+xt/jB/6UON7gX8Eh4y9aCqlF1UdPddeW/TvxKBWZw0ONo6YLr208X0uT6JqL5pK6UVVx7ZVq4r+nRjU6pxxM17zwQ/O7Rmv7UVTKb2YQTOyG9TqHGe8brIXTaX0opQ62uDJRHWOM1432YumUnpRSh1t8IhakgpnUEtS4QxqzVyt3ll2IIW+40xqh0GtmWv/d5YdSMHvOJPaYVBr5hr/DrcDhfX4l4IVeJJIaodBrZltorA2pDVLGNSa+VqFtSGtWcTXUWt2KOWDfqQO8Ihas0cpH/QjTTODWrNHKR/0I00zg1qzQykf9CN1gEGtma/VicN2XronzRAGtWa2iV7dYVhrlmgrqCPimIi4PiLujYgtEdHb6cKkSbXzEjzDWrNAu0fUHwf+IzNPAl4CbOlcSVKb9v884YmWu/jiJ3/OsJ/9oRlk0tdRR8TRwCuBNwNk5igw2tmypDa0+jzhVsY+E2T9+sbl8Ufi0gzQzhtelgE7gasj4iXAZuCizNzV0cqk6TKDZpuWWonMnHiBiBXAt4HTM/PWiPg48FhmXrrfcmuANQDd3d3L161b16GS2zM8PMyiRYtqraEU9qKhZ+1aeq69lm2rVjXmyJvjfFw0ldCL/v7+zZm5ouWNmTnhF3AcsG3c5VcAX5roPsuXL8+6DQ4O1l1CMexFZt5yS+bixbl11arMxYsbl+c4HxdNJfQC2JQHyNRJTyZm5kPAjoh4QXXVSuCeafgHIh0aM2i2aamVdl/18TZgICL+G/h14K87VpE03WbQbNNSK219el5m3gm0HjuRSjeDZpuWWvGdiZJUOINakgpnUEtS4QxqSSqcQS1JhTOoJalwBrUkFc6glqTCGdSSVDiDWpIKZ1BLUuEMakkqnEEtSYUzqCWpcAa1dAht3LGRD3/9w2zcsbHuUmpnL9rX1udRSzp4G3dsZOU1KxndO8r8rvlsOH8DvUt66y6rFvZiajyilg6RoW1DjO4dZW/uZXTvKEPbhuouqTb2YmoMaukQ6evpY37XfLqii/ld8+nr6au7pNrYi6lx6EM6RHqX9LLh/A0MbRuir6dvTj/VtxdTY1BLh1Dvkl5DqWIv2ufQhyQVzqCWpMIZ1JJUOINakgpnUEtS4QxqSSqcQS1JhTOoJalwBrUkFc6glqTCGdSSVDiDWpIKZ1BLUzRw1wA9H+vhsA8cRs/Hehi4a6DukjTL+el50hQM3DXAmi+u4YndTwBw36P3seaLawA478Xn1VmaZjGPqKUpuGTDJb8I6TFP7H6CSzZcUlNFmgvaDuqI6IqIOyLixk4WJJVs+6Pbp3S9NB2mckR9EbClU4XMRs6yPPssPXrplK6XpkNbQR0RJwBnAVd1tpzZY2yW5UsHL2XlNSsN61ni8pWXs/DwhU+6buHhC7l85eU1VaS5IDJz8oUirgc+DDwDeFdmnt1imTXAGoDu7u7l69atm+ZSp2Z4eJhFixbVtv2B7QOs3bqWfezjMA5j9bLVnLe0npNNdfeiJNPRi6/+8KtctfUqHh55mOcueC5vXfZWzug+Y5oqPHR8XDSV0Iv+/v7Nmbmi5Y2ZOeEXcDbw6ernPuDGye6zfPnyrNvg4GCt2//W9m/lkX91ZHZ9oCuP/Ksj81vbv1VbLXX3oiT2osleNJXQC2BTHiBT23l53unAayLit4EjgGdGxHWZ+cZp+CcyaznLsqTpMmlQZ+bFwMUAEdFHY+jDkG6DsyxLmg6+jlqSCjeldyZm5hAw1JFKJEkteUQtSYUzqCWpcAa1JBXOoJakwhnUklQ4g1qSCmdQS1LhDGpJKpxBLUmFM6glqXAGtSQVzqCWpMIZ1JJUOINakgpnUKvjnI1dOjhT+jxqaarGZmMf3TvK/K75bDh/g7PeSFPkEbU6amjbEKN7R9mbexndO8rQtqG6S5JmHINaHdXX08f8rvl0RRfzu+bT19NXd0nSjOPQhzrK2dilg2dQq+OcjV06OA59SFLhDGpJKpxBLUmFM6glqXAGtSQVzqCWpMIZ1JJUOINakgpnUEtS4QxqSSqcQS1JhTOoJalwBrUkFc6glqTCTRrUEbEkIgYj4p6IuDsiLjoUhUmSGtr5POo9wDsz8/aIeAawOSK+kpn3dLg2SRJtHFFn5oOZeXv18+PAFuD4Them6bFxx0YGtg84A7g0g01pjDoieoCXArd2pBpNq7EZwNduXcvKa1Ya1tIM1fZUXBGxCPg88PbMfKzF7WuANQDd3d0MDQ1NV41Py/DwcO011G1g+wAje0bYxz5G9oywdnAtI0tH6i6rVj4umuxFU+m9iMycfKGIw4EbgS9n5kcnW37FihW5adOmaSjv6RsaGqKvr6/WGuo2dkQ9smeEBfMWsOH8DXN+7kIfF032oqmEXkTE5sxc0eq2dl71EcBngS3thLTKMTYD+Oplqw1paQZrZ+jjdGAVcFdE3Fld997MvKljVWna9C7pZWTpiCEtzWCTBnVmfgOIQ1CLJKkF35koSYUzqCWpcAa1JBXOoJakwhnUklQ4g1qSCmdQS1LhDGpJKpxBLUmFM6glqXAGtSQVzqCWpMIZ1JJUOINakgpnUEtS4QxqSSqcQS1JhTOoJalwBrUkFc6glqTCGdSSVDiDWpIKZ1BLUuEMakkqnEEtSYUzqCWpcAa1JBXOoJakwhnUklQ4g1qSCmdQS1LhDGpJKpxBLUmFM6glqXAGtSQVrq2gjohXR8R3I+J7EfGeThclSWqaNKgjogv4FHAmcDLw+og4udOFHYyNOzYysH2AjTs21l2KJB20do6oXwZ8LzO/n5mjwDrgtZ0t6+nbuGMjK69Zydqta1l5zUrDWtKMN6+NZY4Hdoy7fD9w6v4LRcQaYA1Ad3c3Q0ND01HflA1sH2Bkzwj72MfInhHWDq5lZOlILbWUYnh4uLbfR2nsRZO9aCq9F+0EdVsy80rgSoAVK1ZkX1/fdK16ShbsWMDAjkZYL5i3gNX9q+ld0ltLLaUYGhqirt9HaexFk71oKr0X7Qx9PAAsGXf5hOq6IvUu6WXD+RtYvWw1G87fMOdDWtLM184R9W3Ar0XEMhoBfS7who5WdZB6l/QysnTEkJY0K0wa1Jm5JyIuBL4MdAFrM/PujlcmSQLaHKPOzJuAmzpciySpBd+ZKEmFM6glqXAGtSQVzqCWpMIZ1JJUOINakgpnUEtS4QxqSSqcQS1JhTOoJalwBrUkFc6glqTCGdSSVDiDWpIKZ1BLUuEMakkqXGTm9K80Yidw37SveGoWAz+quYZS2Isme9FkL5pK6MWJmXlsqxs6EtQliIhNmbmi7jpKYC+a7EWTvWgqvRcOfUhS4QxqSSrcbA7qK+suoCD2osleNNmLpqJ7MWvHqCVptpjNR9SSNCsY1JJUuFkZ1BHx6oj4bkR8LyLeU3c9dYmIJRExGBH3RMTdEXFR3TXVKSK6IuKOiLix7lrqFBHHRMT1EXFvRGyJiN66a6pLRLyj+tv4TkR8LiKOqLumVmZdUEdEF/Ap4EzgZOD1EXFyvVXVZg/wzsw8GXg58KdzuBcAFwFb6i6iAB8H/iMzTwJewhztSUQcD/wZsCIzXwR0AefWW1Vrsy6ogZcB38vM72fmKLAOeG3NNdUiMx/MzNurnx+n8Qd5fL1V1SMiTgDOAq6qu5Y6RcTRwCuBzwJk5mhmPlJrUfWaBxwZEfOAhcAPaq6npdkY1McDO8Zdvp85Gk7jRUQP8FLg1ppLqcvHgHcD+2quo27LgJ3A1dUw0FURcVTdRdUhMx8A/g7YDjwIPJqZN9dbVWuzMai1n4hYBHweeHtmPlZ3PYdaRJwNPJyZm+uupQDzgN8ArsjMlwK7gDl5HicinkXj2fYy4HnAURHxxnqram02BvUDwJJxl0+orpuTIuJwGiE9kJlfqLuempwOvCYittEYCvutiLiu3pJqcz9wf2aOPbO6nkZwz0VnAFszc2dm7ga+AJxWc00tzcagvg34tYhYFhHzaZwcuKHmmmoREUFjLHJLZn607nrqkpkXZ+YJmdlD4/FwS2YWeeTUaZn5ELAjIl5QXbUSuKfGkuq0HXh5RCys/lZWUuiJ1Xl1FzDdMnNPRFwIfJnGWdy1mXl3zWXV5XRgFXBXRNxZXffezLypvpJUgLcBA9WBzPeBt9RcTy0y89aIuB64ncYrpO6g0LeS+xZySSrcbBz6kKRZxaCWpMIZ1JJUOINakgpnUEtS4QxqSSqcQS1Jhft/uEEZ1c5o3CIAAAAASUVORK5CYII=\n",
- "text/plain": [
- "<Figure size 432x288 with 1 Axes>"
- ]
- },
- "metadata": {
- "needs_background": "light"
- },
- "output_type": "display_data"
- }
- ],
- "source": [
- "C1 = [1, 2, 4, 8, 9, 11]\n",
- "C2 = list(set(range(12)) - set(C1))\n",
- "X0C1, X1C1 = X0[C1], X1[C1]\n",
- "X0C2, X1C2 = X0[C2], X1[C2]\n",
- "plt.figure()\n",
- "plt.title('2nd iteration results')\n",
- "plt.axis([-1, 9, -1, 9])\n",
- "plt.grid(True)\n",
- "plt.plot(X0C1, X1C1, 'rx')\n",
- "plt.plot(X0C2, X1C2, 'g.')\n",
- "plt.plot(3.8,6.4,'rx',ms=12.0)\n",
- "plt.plot(4.57,4.14,'g.',ms=12.0);"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "我们再重复一次上面的做法,把重心移动到新位置,并重新计算各个样本与新重心的距离,并根据距离远近为样本重新归类。结果如下表所示:\n",
- "\n",
- "\n",
- "画图结果如下:\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 4,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "image/png": "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\n",
- "text/plain": [
- "<Figure size 432x288 with 1 Axes>"
- ]
- },
- "metadata": {
- "needs_background": "light"
- },
- "output_type": "display_data"
- }
- ],
- "source": [
- "C1 = [0, 1, 2, 4, 8, 9, 10, 11]\n",
- "C2 = list(set(range(12)) - set(C1))\n",
- "X0C1, X1C1 = X0[C1], X1[C1]\n",
- "X0C2, X1C2 = X0[C2], X1[C2]\n",
- "plt.figure()\n",
- "plt.title('3rd iteration results')\n",
- "plt.axis([-1, 9, -1, 9])\n",
- "plt.grid(True)\n",
- "plt.plot(X0C1, X1C1, 'rx')\n",
- "plt.plot(X0C2, X1C2, 'g.')\n",
- "plt.plot(5.5,7.0,'rx',ms=12.0)\n",
- "plt.plot(2.2,2.8,'g.',ms=12.0);"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "再重复上面的方法就会发现类的重心不变了,k-Means会在条件满足的时候停止重复聚类过程。通常,条件是前后两次迭代的成本函数值的差达到了限定值,或者是前后两次迭代的重心位置变化达到了限定值。如果这些停止条件足够小,k-Means就能找到最优解,不过这个最优解不一定是全局最优解。\n",
- "\n"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## 4. Program"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 5,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "image/png": "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\n",
- "text/plain": [
- "<Figure size 1080x648 with 1 Axes>"
- ]
- },
- "metadata": {
- "needs_background": "light"
- },
- "output_type": "display_data"
- }
- ],
- "source": [
- "# This line configures matplotlib to show figures embedded in the notebook, \n",
- "# instead of opening a new window for each figure. More about that later. \n",
- "# If you are using an old version of IPython, try using '%pylab inline' instead.\n",
- "%matplotlib inline\n",
- "\n",
- "# import librarys\n",
- "import numpy as np\n",
- "from sklearn.datasets import make_blobs\n",
- "import matplotlib.pyplot as plt\n",
- "import random\n",
- "\n",
- "# 生成数据\n",
- "centers = [(7, 0), (0, 0), (5, 5)]\n",
- "n_samples = 500\n",
- "\n",
- "X, y = make_blobs(n_samples=n_samples, n_features=2, \n",
- " cluster_std=1.0, centers=centers, \n",
- " shuffle=True, random_state=42)\n",
- "\n",
- "# 画出数据\n",
- "plt.figure(figsize=(15, 9))\n",
- "\n",
- "marksamples = ['or', 'ob', 'og', 'ok', '^r', '^b', '<g'] # 样本图形标记\n",
- "for i in range(len(X)):\n",
- " markindex = y[i]\n",
- " plt.plot(X[i, 0], X[i, 1], marksamples[markindex], markersize=10)\n",
- " \n",
- "plt.savefig(\"fig-res-k-means_data.pdf\")\n",
- "plt.show()\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 9,
- "metadata": {},
- "outputs": [],
- "source": [
- "# k-means\n",
- "\n",
- "def calc_distance(v1, v2):\n",
- " \"\"\"\n",
- " 计算两个向量的距离\n",
- " \n",
- " v1 - 特征1\n",
- " v2 - 特征2\n",
- " \"\"\"\n",
- " return np.sum(np.square(v1-v2))\n",
- "\n",
- "def rand_cluster_cents(X, k):\n",
- " \"\"\"\n",
- " 初始化聚类中心:通过在区间范围随机产生的值作为新的中心点\n",
- " \n",
- " X - 数据样本\n",
- " k - 聚类个数\n",
- " \"\"\"\n",
- "\n",
- " # 样本数\n",
- " n=np.shape(X)[0]\n",
- " \n",
- " # 生成随机下标列表\n",
- " dataIndex=list(range(n))\n",
- " random.shuffle(dataIndex)\n",
- " centroidsIndex = dataIndex[:k]\n",
- " \n",
- " # 返回随机的聚类中心\n",
- " return X[centroidsIndex, :]\n",
- "\n",
- "def kmeans(X, k):\n",
- " \"\"\"\n",
- " kMeans算法\n",
- " \n",
- " X - 数据样本\n",
- " k - 聚类个数\n",
- " \"\"\"\n",
- " # 样本总数\n",
- " n = np.shape(X)[0]\n",
- " \n",
- " # 分配样本到最近的簇:存[簇序号,距离的平方] (n行 x 2列)\n",
- " clusterAssment = np.zeros((n, 2))\n",
- "\n",
- " # step1: 通过随机产生的样本点初始化聚类中心\n",
- " centroids = rand_cluster_cents(X, k)\n",
- " print('最初的中心=', centroids)\n",
- "\n",
- " iterN = 0\n",
- " \n",
- " while True: \n",
- " clusterChanged = False\n",
- " \n",
- " # step2:分配到最近的聚类中心对应的簇中\n",
- " for i in range(n):\n",
- " minDist = np.inf;\n",
- " minIndex = -1\n",
- " for j in range(k):\n",
- " # 计算第i个样本到第j个中心点的距离\n",
- " distJI = calc_distance(centroids[j, :], X[i, :])\n",
- " if distJI < minDist:\n",
- " minDist = distJI\n",
- " minIndex = j\n",
- " \n",
- " # 样本上次分配结果跟本次不一样,标志位clusterChanged置True\n",
- " if clusterAssment[i, 0] != minIndex:\n",
- " clusterChanged = True\n",
- " clusterAssment[i, :] = minIndex, minDist ** 2 # 分配样本到最近的簇\n",
- " \n",
- " iterN += 1\n",
- " sse = sum(clusterAssment[:, 1])\n",
- " print('the SSE of %d' % iterN + 'th iteration is %f' % sse)\n",
- " \n",
- " # step3:更新聚类中心\n",
- " for cent in range(k): # 样本分配结束后,重新计算聚类中心\n",
- " ptsInClust = X[clusterAssment[:, 0] == cent, :]\n",
- " centroids[cent, :] = np.mean(ptsInClust, axis=0)\n",
- " \n",
- " # 如果聚类重心没有发生改变,则退出迭代\n",
- " if not clusterChanged:\n",
- " break\n",
- " \n",
- " return centroids, clusterAssment\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 15,
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "最初的中心= [[5.44933657 0.06856297]\n",
- " [1.68714164 0.88163976]\n",
- " [1.8820245 1.34542005]]\n",
- "the SSE of 1th iteration is 120663.858114\n",
- "the SSE of 2th iteration is 7006.354257\n",
- "the SSE of 3th iteration is 3567.793025\n",
- "the SSE of 4th iteration is 3502.239035\n"
- ]
- }
- ],
- "source": [
- "# 进行k-means聚类\n",
- "k = 3 # 用户定义聚类数\n",
- "mycentroids, clusterAssment = kmeans(X, k)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 16,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "image/png": "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\n",
- "text/plain": [
- "<Figure size 432x288 with 1 Axes>"
- ]
- },
- "metadata": {
- "needs_background": "light"
- },
- "output_type": "display_data"
- },
- {
- "data": {
- "image/png": "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\n",
- "text/plain": [
- "<Figure size 432x288 with 1 Axes>"
- ]
- },
- "metadata": {
- "needs_background": "light"
- },
- "output_type": "display_data"
- }
- ],
- "source": [
- "def datashow(dataSet, k, centroids, clusterAssment, fnFig=None): # 二维空间显示聚类结果\n",
- " from matplotlib import pyplot as plt\n",
- " num, dim = np.shape(dataSet) # 样本数num ,维数dim\n",
- "\n",
- " if dim != 2:\n",
- " print('sorry,the dimension of your dataset is not 2!')\n",
- " return 1\n",
- " marksamples = ['or', 'ob', 'og', 'ok', '^r', '^b', '<g'] # 样本图形标记\n",
- " if k > len(marksamples):\n",
- " print('sorry,your k is too large,please add length of the marksample!')\n",
- " return 1\n",
- " # 绘所有样本\n",
- " for i in range(num):\n",
- " markindex = int(clusterAssment[i, 0]) # 矩阵形式转为int值, 簇序号\n",
- " # 特征维对应坐标轴x,y;样本图形标记及大小\n",
- " plt.plot(dataSet[i, 0], dataSet[i, 1], marksamples[markindex], markersize=6)\n",
- "\n",
- " # 绘中心点\n",
- " markcentroids = ['o', '*', '^'] # 聚类中心图形标记\n",
- " label = ['0', '1', '2']\n",
- " c = ['yellow', 'pink', 'red']\n",
- " for i in range(k):\n",
- " plt.plot(centroids[i, 0], centroids[i, 1], markcentroids[i], markersize=15, label=label[i], c=c[i])\n",
- " #plt.legend(loc='upper left') #图例\n",
- " plt.xlabel('feature 1')\n",
- " plt.ylabel('feature 2')\n",
- "\n",
- " plt.title('k-means cluster result') # 标题\n",
- " if fnFig != None: plt.savefig(fnFig)\n",
- " plt.show()\n",
- " \n",
- " \n",
- "# 画出实际图像\n",
- "def trgartshow(dataSet, k, labels, fnFig=None):\n",
- " from matplotlib import pyplot as plt\n",
- "\n",
- " num, dim = np.shape(dataSet)\n",
- " label = ['0', '1', '2']\n",
- " marksamples = ['ob', 'or', 'og', 'ok', '^r', '^b', '<g']\n",
- " # 通过循环的方式,完成分组散点图的绘制\n",
- " for i in range(num):\n",
- " plt.plot(dataSet[i, 0], dataSet[i, 1], marksamples[int(labels[i])], markersize=6)\n",
- "\n",
- " \n",
- " # 添加轴标签和标题\n",
- " plt.xlabel('feature 1')\n",
- " plt.ylabel('feature 2')\n",
- " plt.title('true result') # 标题\n",
- "\n",
- " # 显示图形\n",
- " if fnFig != None: plt.savefig(fnFig)\n",
- " plt.show()\n",
- " # label=labels.iat[i,0]\n",
- " \n",
- "# 绘图显示\n",
- "datashow(X, k, mycentroids, clusterAssment, \"fig-res-k-means_predict.pdf\")\n",
- "trgartshow(X, 3, y, \"fig-res-k-means_groundtruth.pdf\")"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## 5. 利用sklearn进行聚类\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 6,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "<Figure size 432x288 with 0 Axes>"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "data": {
- "image/png": "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\n",
- "text/plain": [
- "<Figure size 288x288 with 1 Axes>"
- ]
- },
- "metadata": {
- "needs_background": "light"
- },
- "output_type": "display_data"
- }
- ],
- "source": [
- "from sklearn.datasets import load_digits\n",
- "import matplotlib.pyplot as plt \n",
- "from sklearn.cluster import KMeans\n",
- "\n",
- "# load digital data\n",
- "digits, dig_label = load_digits(return_X_y=True)\n",
- "\n",
- "# draw one digital\n",
- "plt.gray() \n",
- "plt.matshow(digits[0].reshape([8, 8])) \n",
- "plt.show() \n",
- "\n",
- "# calculate train/test data number\n",
- "N = len(digits)\n",
- "N_train = int(N*0.8)\n",
- "N_test = N - N_train\n",
- "\n",
- "# split train/test data\n",
- "x_train = digits[:N_train, :]\n",
- "y_train = dig_label[:N_train]\n",
- "x_test = digits[N_train:, :]\n",
- "y_test = dig_label[N_train:]\n",
- "\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 7,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "image/png": "iVBORw0KGgoAAAANSUhEUgAAAWoAAAA9CAYAAACEJCMYAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAAsTAAALEwEAmpwYAAAP0ElEQVR4nO2da2xU1RbH/3tmGOhjrCAvKQ9BEQT1VoKoeBMlEawabfSDgK8YNRgVEz5owgc0AeMDRMVEoxBzFUwIagVzVRDQIJBiIiCPy6NgwSKtthQstpTptJ3u+6Gdzdqr7fTMmenMka5f0nTtWTPn/OfMOfucvfbaeyutNQRBEATv4su0AEEQBCE+UlELgiB4HKmoBUEQPI5U1IIgCB5HKmpBEASPIxW1IAiCx3FUUSulCpVSR5RSZUqp+T0tSnSIDtEhOi5WHW5Q3eVRK6X8AI4CmA6gAsBOALO11ofifKbLjYZCIaucn59v7EAgYPmqqqqMrbXGmTNnutSptVaJ6PD7/Vb5yiuvNHZLS4vlO3nypKWD+xPV4fNduD+OGDHCeu9ll11m7NbWVstXXV1t6aiqqoJSypQT1UG55JJLrPLo0aON3dTUZPl+//13S8f58+e72mzCx2PUqFHWewcMGGDsU6dOWb4//vjD0sGPV6I64tG3b19j03MFsPVrrXHo0CFkZ2dDKYVz586lVMeQIUOMPWjQIMv366+/Wjr475aMjv79+1vl4cOHG5tfS+Fw2NJRVlaGUCgEn8+H2tpa+Hw+KKXQ2tqK1tbWbnXQeuGKK66w3puVldWljubmZktHaWkpcnNz4fP5cPbsWeu9iR6PwYMHd1mOd90CwF9//WXp6k4HAAQ6e5ExBUCZ1vo4ACil1gAoAtBlRc2JVSYAMHnyZMv3xhtvGJufDIsXLzZ2dXU11q9fj2AwCABobGx0uvtOufTSS63y8uXLrX1RXnjhBWNHIhHU1NQktW96ci1YsMDyPfbYY8bm3/Gtt94y9smTJ7Fq1Sr069cPANDQ0JCUpltvvdUqr1y50tgVFRWW79lnnzV2fX09Dh48mNS+s7Ozjf3qq69avpkzZxr7vffes3yLFi0ydnNzM+rq6pLSEQ9aMa1evdry5ebmGvuXX37B008/jYKCAgDAli1bALRdA24Gl/HK59FHHzX2nDlzLN/dd99t7HA4jMrKSvP5aDSasA563d5xxx2Wb8mSJcamN1MA2L9/v7EPHDiARYsWmc9/+eWXANquAV5ZdgWtF95++23Ld8MNNxg7JyfH8tHrdM+ePZg3bx5uu+02AMBnn33maN8U+ls8/PDDlm/u3LnGrq+vt3zvvvuuVV6zZo2x6U0tHk4q6nwAJ0m5AsBN/E1KqTkA5vDXU8X58+etE6crelpH7ITPtI76+npPHI94T23p1BHvaTqdOqqrq83NM5M6otGoJ86PmpoaqwL1+XzWk266dFRXV1sPSF3R0zrc4qSidoTWegWAFUBiTblUIzpEh+gQHf90HRwnFXUlABpIHd7+mmNo05A2zwBgzJgxxuZN16KiImOXlpaipKTENLNofNIp9AmDNt8B4Oabbzb2iy++aPloWCFefNop06ZNM3asKRbj448/Nva4ceMs3/3332/sMWPG4NtvvzUxy+PHjyesgzYpV6xYYfnoseJhlffff9/Y+/fvx5w5c5CXlwcAOH36dMI6pk+fbuwZM2ZYvrKyMmNPnTrV8l1zzTXGrqurs5rcbqDfmYY6AGD+/At9T+PHj7d8tO9k5MiR0FqbmGVsm25DH7RpD9ihsnXr1lk+/qQaCARM30NtbS2Atua703OYhgefeeYZy0f7j/bt22f5rr32WmOPHz8e4XDYxPgjkQiAtrCe0+NBw3L33nuv5Tty5Iixv/nmG8tH+1IqKipQU1OD0tJSR/vsDHq+vfbaa5bv888/NzZvycyaNcsqf/3118Z2GvpwkvWxE8BYpdRopVQQwCwA/3W09RQyduxYtLS0oKWlxdUJnyp4zDBTTJw4Ec3NzWhubs7o8ZgwYQKi0Sii0WhGdfBO6kxRUFCA+vp6nDt3LqPHJBgMWr9La2ur1emZLq6//nrU1dWhvr7e6OFJA+lg2LBhaGpqQiQScRwm8xLdHjGtdYtSai6AjQD8AP6jtU6u98gFfr8feXl5cTM/0oGTuF86CAQCGDhwIKqqqjJaQQYCAeTm5uLvv//OmAbAW7/LpEmTsHXrVmitoZTKiDalFHJyckwrNZZpkW4CgQCmTp2KDRs2QGsNv9+fkRuGz+dDfn6+q5anF3B0a9Narwew3u1OaK9+LGsjxrFjx7r0dXbxx5rYNMXFKTQEw5sjtCd/1apVlo+nWCULbX7xnnu6LxpiAIDDhw9b5XA4bI6tm4ryxhtvNDZv6j/00EPG3rlzp+XjTe4pU6YY+/vvv09YB+2g5RkVNPTx1FNPWb4+ffokvK94DBw40Ng00wewQ1SVlXbkj6c2KqUwadIkAMD27dsTvpHSzrdXXnnF8p04ccLY/HfgoSH6UPPjjz8mpAGwW4+ffvqp5du+fbuxeThi6NChVjkSiZjjsW3bNtPcd/pkS3+XWOgkxuuvv27szZs3W75YuCdGspliNC2Thn4A4IsvvjB2LOMnBg2ZAHY95DRUKCMTBUEQPI5U1IIgCB5HKmpBEASPk5buVxpX+vPPPy3f1VdfbWyeUUHjT4C7OCxl2LBhxuajIOloxJtussfz0KG5gB0ndNORR+PyfFj0Sy+9ZGwe21q7dq1VTnY04uWXX25sPvrwp59+MjaPye7Zs8cq0xQyNzHqHTt2GJsfj8LCQmPzgSQ8Bpks9Hs8+OCDlo/GU+l5BKDDSFU+xD5RaIoi/f6AnVbKz49bbrnFKn/33XfG3rRpU8I66HfmA5vuuusuY/O+Ax57pjFrNxkXNG2Xx5mff/55Y9NpDwDgo48+ssp8yoFEoamAvE6gfQl8Wgg+0pmPoHSCPFELgiB4HKmoBUEQPE5aQh+02cRTmWgIgjcneFqY03k2uoLui85SB9ij/nhzkzZlAeDll182drKj4fh32rp1q7HpaEkAePzxx60yHYnlZmIkOvcBb57RtCE+4o03G2n6pRvovvi26Ci38vJyy5fq0AcNafFJe2hz9YEHHrB8PPQRbzZBJ9x5551d+uikZnxUKw/J8PS9RKGhSD5pF71GeMiBp8klO4nZzz//bOwPP/zQ8tF981Gc/PgUFxcbm6f5OYGGLBcuXGj5aGokTzPmvycNjTi9buWJWhAEweNIRS0IguBxHIU+lFLlAOoBRAG0aK0nx//Exc3hw4c9MefH0aNHMzY0mLJs2TL07ds34zq8wunTpzM2dJxSXFyMPn36ZFxHSUkJ/H5/xnVEIpGMa3BLIjHqaVrrxKdGgz1hDk99ozFeHgvlqzmUl5ebH9zNLHY0NZDHWWl8kg+Xve+++6xyXl4eFi5ciFAohCeeeMK87lQTTTOLDYmPQdPb+ATkfOL8rKwsPPLII8jOzsbSpUsd7Zty6NCFtR/4saa/GY8b87SwaDSKwsJCZGVlWQswOIVO0nPddddZPrqyCk8L5PMLK6WQlZUFpZSr1EV6fnzwwQeWj37ne+65x/Lx1DWttdHhdPoBWoEcOHDA2LTPArDjsHylmW3btlnlxsZG9O/fH36/31U8n16PfAg67TvgfTg8fhuJRJK6kdO0Oj4JP+3H4ZP5jxw50ione37QOoOnCscWRAA61mN8Rkh6LtEUynhI6EMQBMHjOH2i1gA2tU+kvbx9cm2LdK2M0F3mR7p0LFmyxKz71tlsYOnSUVxcHPdJJR06lFJYvz7+nF3pOh7dTbyTLh3dzTOcLh18AFGmdHSXZdHbzo9EcVpR/1trXamUGgxgs1KqVGtttbPSsTJCLOyhte6ywk6HjgULFmDAgAGoq6vD3LlzO41HpkPH7NmzEQqF0NDQ0KGpnk4dRUVFyMnJQTgc7jDzYDp19OvXDz6fL+6Cu+nQkZWVBZ/Ph9bW1ozqGDp0KAKBAKLRaIeRp+nUEQt7aK27rCh70/nhBqfTnFa2/z+llFqHtgVvt8X/1AXo3ZTH7Gh+Kp+2kk+9SWOSbqYepauJb9iwwfJdddVVneoFOg43p6s/B4NBKKUQDAYdx71ojPrJJ5+0fDT2xVfkpitQA21z7PJ9JrKSyN69e43Nb3x0EVE+5JXHs3nsOFHoSiLPPfec5YtNjwnY010CHaeTLCkpMfbSpUuhlEJ2drbj+Gy8oco03tlZbJxC/W5yqunip3R4PWDn+/MVgN58802rzIf+JwpdfJYOnwbsc5H3nfDxD07X1ewKejxvv/12y0dXB5owYYLlo3FjAGbhArfQ65aveLNr1y5j87xxvpA2hbbG4w2v7zZGrZTKUUqFYjaAGQAOxP9U6qEru2RyovxwOGwuvnA4jJaWloxMhN7Q0GAugM4WC02njtjJn8mVMxobG80NtqmpCU1NTRlZSSQcDnviPE3FknGpIJPHgOKV+sMtTs7kIQDWtT81BACs1lo766pMIeFw2PH6Yj3J2bNnTa92bFmhTFQINTU1+OqrrwBcqCAzkXpUU1OD3377Le375dTW1uKTTz4B0HY8gsFghxFi6eDMmTMZX+0GcDfy7mKmsbHRMzcvNzhZius4gH8lsxN64vJmEm2u8VQ12kzJzs62/G7SjegTH2+6rFy50th0tQbATj8aN26cNXR77dq15gnb6RMlbVZPnDjR8s2cOdPY/ILnaYNdhYKcnpC0qc+Hp9PFOvn25s2bZ5WTfZKmN2Cekkib2Hz6AfregoICq4n5zjvvGHv37t0Ja+LNdXoz4qt70N8pFApZ0xN015kXgz7l0SH1NPwA2KEProOmW6YCeuPnq8fQ47NlyxbLl+onVhoS5YtS0xkDly1bZvk2btyYUl00jHX06FHLt3jxYmPT0CjQMQXvhx9+SFiTpOcJgiB4HKmoBUEQPI5U1IIgCB5H9UQPqFKqBkADAFdDzhkDHWxnlNZ6EH9RdHhaxwmH2xAdouNi0OFES6c6ALQFs3viD8AuL2xHdHhTh2xDttGbtpHsdiT0IQiC4HGkohYEQfA4PVlRd5i4KUPbER2p/XwqtyPbkG30lm0ktZ0e6UwUBEEQUoeEPgRBEDyOVNSCIAgep0cqaqVUoVLqiFKqTCk1P4ntlCul/qeU2quU2tX9J0SH6BAdouPi0gEg9XnUAPwAjgEYAyAIYB+ACS63VQ5goOgQHaJDdPRGHbG/nniingKgTGt9XGvdBGANgKIe2I/oEB2iQ3Rc7DoA9EzoIx/ASVKuaH/NDbG1Gne3r2UmOkSH6BAdvUkHAOdrJmaKbtdqFB2iQ3SIjotdR088UVcCGEHKw9tfSxhN1moEEFurUXSIDtEhOnqLDrORlP6h7Sn9OIDRuBCEn+hiOzkAQsTeAaBQdIgO0SE6eouO2F/KQx9a6xal1FwAG9HWc/ofrfVBF5tKaq1G0SE6RIfo+KfriCFDyAVBEDyOjEwUBEHwOFJRC4IgeBypqAVBEDyOVNSCIAgeRypqQRAEjyMVtSAIgseRiloQBMHj/B/yv5/mcRNijQAAAABJRU5ErkJggg==\n",
- "text/plain": [
- "<Figure size 432x288 with 10 Axes>"
- ]
- },
- "metadata": {
- "needs_background": "light"
- },
- "output_type": "display_data"
- }
- ],
- "source": [
- "# do kmeans\n",
- "kmeans = KMeans(n_clusters=10, random_state=0).fit(x_train)\n",
- "\n",
- "# kmeans.labels_ - output label\n",
- "# kmeans.cluster_centers_ - cluster centers\n",
- "\n",
- "# draw cluster centers\n",
- "fig, axes = plt.subplots(nrows=1, ncols=10)\n",
- "for i in range(10):\n",
- " img = kmeans.cluster_centers_[i].reshape(8, 8)\n",
- " axes[i].imshow(img)"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## 6. 深入思考\n",
- "\n",
- "1. 如何计算聚类的精度?\n",
- "2. 如何匹配聚类的类别和真实类别?\n"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## 7. 评估聚类性能\n",
- "\n",
- "### 7.1 方法1 - ARI\n",
- "\n",
- "如果被用来评估的数据本身带有正确的类别信息,则利用Adjusted Rand Index(ARI)对聚类结果进行评估,ARI与分类问题中计算准确性的方法类似,兼顾了类簇无法和分类标记一一对应的问题。\n",
- "\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 8,
- "metadata": {
- "scrolled": true
- },
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "ari_train = 0.687021\n"
- ]
- }
- ],
- "source": [
- "from sklearn.metrics import adjusted_rand_score\n",
- "\n",
- "ari_train = adjusted_rand_score(y_train, kmeans.labels_)\n",
- "print(\"ari_train = %f\" % ari_train)"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "contingency表的定义:\n",
- "\n",
- "\n",
- "其中$X$为真实类别,$Y$为聚类的簇\n"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "#### 7.1.1 RI\n",
- "为了方便理解ARI,先讨论一下RI,也就是rand index,是ARI的基础方法。\n",
- "\n",
- "假如有两类,那么针对这两类的的RI评价指标为:\n",
- "\n",
- "$$\n",
- "R = \\frac{a + b}{a+b+c+d}\n",
- "$$\n",
- "\n",
- "a,b,c,d分别代表的含义为:\n",
- "* a : 应该在一类,最后聚类到一类的数量,\n",
- "* b : 不应该在一类,最后聚类结果也没把他们聚类在一起的数量。\n",
- "* c和d那么就是应该在一起而被分开的和不应该在一起而被迫在一起的。毕竟强扭的瓜不甜,c和d固然是错误的。\n",
- "\n",
- "所以从R的表达式中可以看出,a和b是对的,这样能够保证R在0到1之间,而且,聚类越准确,指标越接近于1.\n",
- "\n",
- "这里有一个关键性的问题,就是什么叫数量?怎么去计算?准确的说,是配对的数量。比如说a是应该在一起而真的幸福的在一起了的数量,这显然就应该像人类一样按照小夫妻数量计算,但是我们的样本可不管一夫一妻制,任意选两个就是一个配对,所以,就是 $n(n-1)/2$ 这样来计算,也就是组合数,n个当中选两个的选法。同时我们看到,分母其实是所有配对的总和,所以,我们最后可以写成这样:\n",
- "\n",
- "$$\n",
- "R = \\frac{a + b}{a+b+c+d} = \\frac{a + b}{\\binom{n}{2}}\n",
- "$$"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "#### 7.1.2 ARI\n",
- "\n",
- "有了先前RI的感性理解之后,接下来解释一下ARI。\n",
- "\n",
- "RI有一个缺点,就是惩罚力度不够,换句话说,大家普遍得分比较高,没什么区分度,遍地80分。这样的话,往往是考试的制度不合适,于是就诞生出了ARI,这个指标相对于RI就很有区分度了。\n",
- "\n",
- "$$\n",
- "ARI = \\frac{Index - ExpctedIndex}{MaxIndex - ExpectedIndex}\n",
- "$$\n",
- "\n",
- "具体的公式是:\n",
- "$$\n",
- "ARI = \\frac{ \\sum_{ij} \\binom{n_{ij}}{2} - \\left[ \\sum_i \\binom{a_i}{2} \\sum_j \\binom{b_j}{2} \\right] / \\binom{n}{2} }{ \\frac{1}{2} \\left[ \\sum_i \\binom{a_i}{2} + \\sum_j \\binom{b_j}{2} \\right] - \\left[ \\sum_i \\binom{a_i}{2} \\sum_j \\binom{b_j}{2} \\right] / \\binom{n}{2} }\n",
- "$$\n",
- "\n",
- "ARI取值范围为[-1,1],值越大越好,反映两种划分的重叠程度,使用该度量指标需要数据本身有类别标记。\n",
- "\n",
- "* $ \\sum_{ij} \\binom{n_{ij}}{2}$ : $n_{ij}$代表的是聚类之后在$i$类,应该在$j$类的样本数量,很显然,这一求和,就是RI中的a,应该在一起而真的在一起的数量。\n",
- "\n",
- "* $\\frac{1}{2} \\left[ \\sum_i \\binom{a_i}{2} + \\sum_j \\binom{b_j}{2} \\right]$ : 是如果聚类是完全对的,那么就应该是$a$, $b$的所有组合可能之和,所以在表达式里面叫做MaxIndex。\n",
- "\n",
- "* $\\left[ \\sum_i \\binom{a_i}{2} \\sum_j \\binom{b_j}{2} \\right] / \\binom{n}{2}$ 是a的期望\n",
- "$$\n",
- "E(\\sum_{ij} \\binom{n_{ij}}{2}) = \\sum_i \\binom{n_i}{2} \\sum_j \\binom{n_j}{2} / \\binom{n}{2}\n",
- "$$\n",
- "\n",
- "假设配对矩阵是这样的,共有n(n-1)/2个配对方法。在行方向计算出可能取到的配对数,在列方向计算可能取到的配对数,相乘以后,除以总的配对数,这就是a的期望了。"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "\n",
- "\n",
- "* [ARI聚类效果评价指标](https://blog.csdn.net/qtlyx/article/details/52678895)\n",
- "* [ARI reference](https://davetang.org/muse/2017/09/21/adjusted-rand-index/)\n",
- "* [聚类性能评估-ARI(调兰德指数)](https://zhuanlan.zhihu.com/p/145856959)\n"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "\n",
- "### 7.2 方法2 - 轮廓系数\n",
- "如果被用来评估的数据没有所属类别,则使用轮廓系数(Silhouette Coefficient)来度量聚类结果的质量,评估聚类的效果。**轮廓系数同时兼顾了聚类的凝聚度和分离度,取值范围是[-1,1],轮廓系数越大,表示聚类效果越好。** \n",
- "\n",
- "轮廓系数的具体计算步骤: \n",
- "1. 对于已聚类数据中第i个样本$x_i$,计算$x_i$与其同一类簇内的所有其他样本距离的平均值,记作$a_i$,用于量化簇内的凝聚度 \n",
- "2. 选取$x_i$外的一个簇$b$,计算$x_i$与簇$b$中所有样本的平均距离,遍历所有其他簇,找到最近的这个平均距离,记作$b_i$,用于量化簇之间分离度 \n",
- "3. 对于样本$x_i$,轮廓系数为$sc_i = \\frac{b_i−a_i}{max(b_i,a_i)}$ \n",
- "4. 最后,对所有样本集合$\\mathbf{X}$求出平均值,即为当前聚类结果的整体轮廓系数。"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 21,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "image/png": "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\n",
- "text/plain": [
- "<Figure size 720x720 with 6 Axes>"
- ]
- },
- "metadata": {
- "needs_background": "light"
- },
- "output_type": "display_data"
- },
- {
- "data": {
- "image/png": "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\n",
- "text/plain": [
- "<Figure size 720x720 with 1 Axes>"
- ]
- },
- "metadata": {
- "needs_background": "light"
- },
- "output_type": "display_data"
- }
- ],
- "source": [
- "import numpy as np\n",
- "from sklearn.cluster import KMeans\n",
- "from sklearn.metrics import silhouette_score\n",
- "import matplotlib.pyplot as plt\n",
- "\n",
- "plt.rcParams['figure.figsize']=(10,10)\n",
- "plt.subplot(3,2,1)\n",
- "\n",
- "x1=np.array([1,2,3,1,5,6,5,5,6,7,8,9,7,9]) #初始化原始数据\n",
- "x2=np.array([1,3,2,2,8,6,7,6,7,1,2,1,1,3])\n",
- "X=np.array(list(zip(x1,x2))).reshape(len(x1),2)\n",
- "\n",
- "plt.xlim([0,10])\n",
- "plt.ylim([0,10])\n",
- "plt.title('Instances')\n",
- "plt.scatter(x1,x2)\n",
- "\n",
- "colors=['b','g','r','c','m','y','k','b']\n",
- "markers=['o','s','D','v','^','p','*','+']\n",
- "\n",
- "clusters=[2,3,4,5,8]\n",
- "subplot_counter=1\n",
- "sc_scores=[]\n",
- "for t in clusters:\n",
- " subplot_counter +=1\n",
- " plt.subplot(3,2,subplot_counter)\n",
- " kmeans_model=KMeans(n_clusters=t).fit(X) #KMeans建模\n",
- "\n",
- " for i,l in enumerate(kmeans_model.labels_):\n",
- " plt.plot(x1[i],x2[i],color=colors[l],marker=markers[l],ls='None')\n",
- "\n",
- " plt.xlim([0,10])\n",
- " plt.ylim([0,10])\n",
- "\n",
- " sc_score=silhouette_score(X,kmeans_model.labels_,metric='euclidean') #计算轮廓系数\n",
- " sc_scores.append(sc_score)\n",
- "\n",
- " plt.title('k=%s,silhouette coefficient=%0.03f'%(t,sc_score))\n",
- "\n",
- "plt.figure()\n",
- "plt.plot(clusters,sc_scores,'*-') #绘制类簇数量与对应轮廓系数关系\n",
- "plt.xlabel('Number of Clusters')\n",
- "plt.ylabel('Silhouette Coefficient Score')\n",
- "plt.savefig('fig-res-k-means_silhouette_coef.pdf')\n",
- "plt.show() "
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## 8. 如何确定K\n",
- "\n",
- "利用“肘部观察法”可以粗略地估计相对合理的聚类个数。K-means模型最终期望*所有数据点到其所属的类簇距离的平方和趋于稳定,所以可以通过观察这个值随着K的走势来找出最佳的类簇数量。理想条件下,这个折线在不断下降并且趋于平缓的过程中会有斜率的拐点,这表示从这个拐点对应的K值开始,类簇中心的增加不会过于破坏数据聚类的结构*。\n",
- "\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 22,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "image/png": "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\n",
- "text/plain": [
- "<Figure size 432x288 with 1 Axes>"
- ]
- },
- "metadata": {
- "needs_background": "light"
- },
- "output_type": "display_data"
- }
- ],
- "source": [
- "%matplotlib inline\n",
- "import numpy as np\n",
- "from sklearn.cluster import KMeans\n",
- "from scipy.spatial.distance import cdist\n",
- "import matplotlib.pyplot as plt\n",
- "\n",
- "cluster1=np.random.uniform(0.5,1.5,(2,10))\n",
- "cluster2=np.random.uniform(5.5,6.5,(2,10))\n",
- "cluster3=np.random.uniform(3,4,(2,10))\n",
- "\n",
- "X=np.hstack((cluster1,cluster2,cluster3)).T\n",
- "plt.scatter(X[:,0],X[:,1])\n",
- "plt.xlabel('x1')\n",
- "plt.ylabel('x2')\n",
- "plt.show()"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 23,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "image/png": "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\n",
- "text/plain": [
- "<Figure size 432x288 with 1 Axes>"
- ]
- },
- "metadata": {
- "needs_background": "light"
- },
- "output_type": "display_data"
- }
- ],
- "source": [
- "K=range(1,10)\n",
- "meandistortions=[]\n",
- "\n",
- "for k in K:\n",
- " kmeans=KMeans(n_clusters=k)\n",
- " kmeans.fit(X)\n",
- " meandistortions.append(\\\n",
- " sum(np.min(cdist(X,kmeans.cluster_centers_,'euclidean'),axis=1))/X.shape[0])\n",
- "\n",
- "plt.plot(K,meandistortions,'bx-')\n",
- "plt.xlabel('k')\n",
- "plt.ylabel('Average Dispersion')\n",
- "plt.title('Selecting k with the Elbow Method')\n",
- "plt.show()"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "从上图可见,类簇数量从1降到2再降到3的过程,更改K值让整体聚类结构有很大改变,这意味着新的聚类数量让算法有更大的收敛空间,这样的K值不能反映真实的类簇数量。而当K=3以后再增大K,平均距离的下降速度显著变缓慢,这意味着进一步增加K值不再会有利于算法的收敛,同时也暗示着K=3是相对最佳的类簇数量。"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## 参考资料\n",
- "* [机器学习聚类算法之K-Means](https://www.biaodianfu.com/k-means.html)"
- ]
- }
- ],
- "metadata": {
- "jupytext_formats": "ipynb,py",
- "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.7.9"
- }
- },
- "nbformat": 4,
- "nbformat_minor": 2
- }
|