diff --git a/3_kmeans/1-k-means.ipynb b/3_kmeans/1-k-means.ipynb index fad3b28..6363188 100644 --- a/3_kmeans/1-k-means.ipynb +++ b/3_kmeans/1-k-means.ipynb @@ -41,19 +41,17 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 6, "metadata": {}, "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" } ], @@ -84,19 +82,17 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 7, "metadata": {}, "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" } ], @@ -128,19 +124,17 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 8, "metadata": {}, "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" } ], @@ -171,19 +165,17 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 9, "metadata": {}, "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" } ], @@ -219,7 +211,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 10, "metadata": {}, "outputs": [ { @@ -304,7 +296,7 @@ "4 5.0 3.6 1.4 0.2 Iris-setosa" ] }, - "execution_count": 12, + "execution_count": 10, "metadata": {}, "output_type": "execute_result" } @@ -329,35 +321,26 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 12, "metadata": { "lines_to_next_cell": 2 }, "outputs": [ { - "name": "stderr", - "output_type": "stream", - "text": [ - "/home/bushuhui/.virtualenv/dl/lib/python3.5/site-packages/ipykernel_launcher.py:2: SettingWithCopyWarning: \n", - "A value is trying to be set on a copy of a slice from a DataFrame\n", - "\n", - "See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n", - " \n", - "/home/bushuhui/.virtualenv/dl/lib/python3.5/site-packages/ipykernel_launcher.py:3: SettingWithCopyWarning: \n", - "A value is trying to be set on a copy of a slice from a DataFrame\n", - "\n", - "See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n", - " This is separate from the ipykernel package so we can avoid doing imports until\n", - "/home/bushuhui/.virtualenv/dl/lib/python3.5/site-packages/ipykernel_launcher.py:4: SettingWithCopyWarning: \n", - "A value is trying to be set on a copy of a slice from a DataFrame\n", - "\n", - "See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n", - " after removing the cwd from sys.path.\n" + "ename": "TypeError", + "evalue": "list indices must be integers or slices, not Series", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mTypeError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m()\u001b[0m\n\u001b[0;32m 4\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 5\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 6\u001b[1;33m \u001b[0mdataset\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mloc\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m'class'\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mdataset\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m'class'\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m==\u001b[0m\u001b[1;34m'Iris-setosa'\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 7\u001b[0m \u001b[0mdataset\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mloc\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m'class'\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mdataset\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m'class'\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m==\u001b[0m\u001b[1;34m'Iris-versicolor'\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 8\u001b[0m \u001b[0mdataset\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mloc\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m'class'\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mdataset\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m'class'\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m==\u001b[0m\u001b[1;34m'Iris-virginica'\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;36m2\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;31mTypeError\u001b[0m: list indices must be integers or slices, not Series" ] } ], "source": [ "#对类别进行编码,3个类别分别赋值0,1,2\n", + "\n", "dataset['class'][dataset['class']=='Iris-setosa']=0\n", "dataset['class'][dataset['class']=='Iris-versicolor']=1\n", "dataset['class'][dataset['class']=='Iris-virginica']=2" @@ -365,7 +348,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 13, "metadata": { "lines_to_next_cell": 2 }, @@ -374,7 +357,7 @@ "def originalDatashow(dataSet):\n", " #绘制原始的样本点\n", " num,dim=shape(dataSet)\n", - " marksamples=['ob'] #样本图形标记\n", + " marksamples=['ob'] #Sample graphic marking\n", " for i in range(num):\n", " plt.plot(datamat.iat[i,0],datamat.iat[i,1],marksamples[0],markersize=5)\n", " plt.title('original dataset')\n", @@ -385,7 +368,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 14, "metadata": { "lines_to_end_of_cell_marker": 2, "scrolled": true @@ -393,14 +376,12 @@ "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" } ], @@ -415,7 +396,7 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 15, "metadata": {}, "outputs": [], "source": [ @@ -470,7 +451,7 @@ " centroids = randChosenCent(dataSet, k)\n", " print('最初的中心=', centroids)\n", "\n", - " # 标志位,如果迭代前后样本分类发生变化值为Tree,否则为False\n", + " # 标志位,如果迭代前后样本分类发生变化值为True,否则为False\n", " clusterChanged = True\n", " # 查看迭代次数\n", " iterTime = 0\n", @@ -506,7 +487,7 @@ " \n", " # step3:更新聚类中心\n", " for cent in range(k): # 样本分配结束后,重新计算聚类中心\n", - " # 获取该簇所有的样本点\n", + " # 获取该簇所有的样本点,nonzero[0]表示A == cent的元素所在的行,如果没有[0],列也会表示\n", " ptsInClust = dataSet.iloc[nonzero(clusterAssment[:, 0].A == cent)[0]]\n", " # 更新聚类中心:axis=0沿列方向求均值。\n", " centroids[cent, :] = mean(ptsInClust, axis=0)\n", @@ -515,28 +496,18 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": 16, "metadata": {}, "outputs": [ { - "name": "stdout", - "output_type": "stream", - "text": [ - "最初的中心= [[6.2 2.2]\n", - " [6.3 2.5]\n", - " [7.7 3.8]]\n", - "the SSE of 1th iteration is 189.420000\n", - "the SSE of 2th iteration is 70.447978\n", - "the SSE of 3th iteration is 56.041643\n", - "the SSE of 4th iteration is 49.785857\n", - "the SSE of 5th iteration is 45.985699\n", - "the SSE of 6th iteration is 43.078623\n", - "the SSE of 7th iteration is 40.594295\n", - "the SSE of 8th iteration is 37.791783\n", - "the SSE of 9th iteration is 37.235470\n", - "the SSE of 10th iteration is 37.201302\n", - "the SSE of 11th iteration is 37.155048\n", - "the SSE of 12th iteration is 37.141172\n" + "ename": "NameError", + "evalue": "name 'kMeans' is not defined", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mNameError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m()\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[1;31m# 进行k-means聚类\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 2\u001b[0m \u001b[0mk\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;36m3\u001b[0m \u001b[1;31m# 用户定义聚类数\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 3\u001b[1;33m \u001b[0mmycentroids\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mclusterAssment\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mkMeans\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mdatamat\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mk\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[1;31mNameError\u001b[0m: name 'kMeans' is not defined" ] } ], @@ -575,7 +546,7 @@ " 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.legend(loc='upper left') #图例\n", " plt.xlabel('sepal length')\n", " plt.ylabel('sepal width')\n", "\n", @@ -648,7 +619,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## How to use sklearn to do the classifiction\n" + "## 利用sklearn进行分类\n" ] }, { @@ -801,7 +772,7 @@ "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}$求出平均值,即为当前聚类结果的整体轮廓系数。" + "4. 最后,对所有样本集合$\\mathbf{X}$求出平均值,即为当前聚类结果的整体轮廓系数。" ] }, { @@ -886,7 +857,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## How to determin the 'k'?\n", + "## 如何确定K\n", "\n", "利用“肘部观察法”可以粗略地估计相对合理的聚类个数。K-means模型最终期望*所有数据点到其所属的类簇距离的平方和趋于稳定,所以可以通过观察这个值随着K的走势来找出最佳的类簇数量。理想条件下,这个折线在不断下降并且趋于平缓的过程中会有斜率的拐点,这表示从这个拐点对应的K值开始,类簇中心的增加不会过于破坏数据聚类的结构*。\n", "\n" @@ -894,19 +865,17 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 18, "metadata": {}, "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" } ], @@ -930,19 +899,17 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 19, "metadata": {}, "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" } ], @@ -954,8 +921,7 @@ " kmeans=KMeans(n_clusters=k)\n", " kmeans.fit(X)\n", " meandistortions.append(\\\n", - " sum(np.min(cdist(X,kmeans.cluster_centers_,'euclidean'),\\\n", - " axis=1))/X.shape[0])\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", diff --git a/3_kmeans/1-k-means_EN.ipynb b/3_kmeans/1-k-means_EN.ipynb index 8227172..2fddac6 100644 --- a/3_kmeans/1-k-means_EN.ipynb +++ b/3_kmeans/1-k-means_EN.ipynb @@ -11,7 +11,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## 方法\n", + "## Method\n", "\n", "Because of the excellent speed and good expandability,K-Means cluster method is regarded as the most famous cluster method。***K-Means algorthms is a process which repeatly moves the center point,moving the center point of the class which is called centroids to the average position of all other members,and redivide the members of it.***\n", "\n", @@ -30,13 +30,12 @@ "u_k = \\frac{1}{|C_k|} \\sum_{x \\in C_k} x\n", "$$\n", "\n", + "Cost is the sum of each class distortions. Every class distortion equal to the sum of quare between centroids of this class and its inner members. The more compact the members inside the class are, the less the class distorts. On the contrary, the more disperse the members are more distort. \n", "\n", - "成本函数是各个类畸变程度(distortions)之和。每个类的畸变程度等于该类重心与其内部成员位置距离的平方和。若类内部的成员彼此间越紧凑则类的畸变程度越小,反之,若类内部的成员彼此间越分散则类的畸变程度越大。\n", - "\n", - "求解成本函数最小化的参数就是一个重复配置每个类包含的观测值,并不断移动类重心的过程。\n", - "1. 首先,类的重心是随机确定的位置。实际上,重心位置等于随机选择的观测值的位置。\n", - "2. 每次迭代的时候,K-Means会把观测值分配到离它们最近的类,然后把重心移动到该类全部成员位置的平均值那里。\n", - "3. 若达到最大迭代步数或两次迭代差小于设定的阈值则算法结束,否则重复步骤2。\n", + "The argument for minimizing the cost function is a process of repeatedly configuring the observations contained in each class and constantly moving the class's ctriod.\n", + "1. Firstly, class centriod is a random determined poisition. In fact, the poisition of centriod equal to observed value which being determined radomly.首\n", + "2. At each iteration, K-Means will assigns the observations to the class closest to them and move the centriod to the average value of all class members.\n", + "3. If the maximum number of iteration steps is reached or the difference between two iterations is less than the set threshold, the algorithm is finished, otherwise repeat step 2.\n", "\n" ] }, @@ -75,10 +74,10 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "假设K-Means初始化时,将第一个类的重心设置在第5个样本,第二个类的重心设置在第11个样本.那么我们可以把每个实例与两个重心的距离都计算出来,将其分配到最近的类里面。计算结果如下表所示:\n", + "When we intiate K-Means, set the centriod of the first class at the fifth sample and the centriod of the second class at the eleventh sample. Then we can calcualte the distance between each instance and two centriod, assigning them to the nearest class. The results are showing in the following talbe:\n", "![data_0](images/data_0.png)\n", "\n", - "新的重心位置和初始聚类结果如下图所示。第一类用X表示,第二类用点表示。重心位置用稍大的点突出显示。\n", + "New centriod position and initial cluster result are shown in the following graph. The fist class are shown in X and the second are represented in dot. The position of centriod are indicated in a larger dot.\n", "\n", "\n" ] @@ -120,11 +119,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "现在我们重新计算两个类的重心,把重心移动到新位置,并重新计算各个样本与新重心的距离,并根据距离远近为样本重新归类。结果如下表所示:\n", + "Now, we recalculate the centiod of two class, move centriod to the new poisition, recalculate the distance between each sample and new centriod and reclassify the sample according the distacne.\n", "\n", "![data_1](images/data_1.png)\n", "\n", - "画图结果如下:" + "The result of drawing are shown as follows:" ] }, { @@ -164,10 +163,10 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "我们再重复一次上面的做法,把重心移动到新位置,并重新计算各个样本与新重心的距离,并根据距离远近为样本重新归类。结果如下表所示:\n", + "Again, we move the center of mass to the new position, recalculate the distance between each sample and the new center of mass, and reclassify the samples according to the distance. The results are shown in the table below:\n", "![data_2](images/data_2.png)\n", "\n", - "画图结果如下:\n" + "The result of drawing are shown as follows:\n" ] }, { @@ -207,7 +206,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "再重复上面的方法就会发现类的重心不变了,K-Means会在条件满足的时候停止重复聚类过程。通常,条件是前后两次迭代的成本函数值的差达到了限定值,或者是前后两次迭代的重心位置变化达到了限定值。如果这些停止条件足够小,K-Means就能找到最优解。不过这个最优解不一定是全局最优解。\n", + "The centriod of class will remain the same when repeat the method, K-Means will stop cluster process when the condition are satisfied. Usually, the condition is that the difference value between two cost value of iteration are reaching the set value, or the change of the center of gravity position of the two iterations before and after reaches the limit value. If these stop conditions are small enough, k-means will find the optimal solution. But this is not necessarily the global optimal solution.\n", + "\n", "\n" ] }, @@ -220,7 +220,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 8, "metadata": {}, "outputs": [ { @@ -305,7 +305,7 @@ "4 5.0 3.6 1.4 0.2 Iris-setosa" ] }, - "execution_count": 12, + "execution_count": 8, "metadata": {}, "output_type": "execute_result" } @@ -339,26 +339,27 @@ "name": "stderr", "output_type": "stream", "text": [ - "/home/bushuhui/.virtualenv/dl/lib/python3.5/site-packages/ipykernel_launcher.py:2: SettingWithCopyWarning: \n", + "C:\\Users\\lenovo\\Anaconda3\\lib\\site-packages\\ipykernel_launcher.py:3: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame\n", "\n", "See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n", - " \n", - "/home/bushuhui/.virtualenv/dl/lib/python3.5/site-packages/ipykernel_launcher.py:3: SettingWithCopyWarning: \n", + " This is separate from the ipykernel package so we can avoid doing imports until\n", + "C:\\Users\\lenovo\\Anaconda3\\lib\\site-packages\\ipykernel_launcher.py:4: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame\n", "\n", "See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n", - " This is separate from the ipykernel package so we can avoid doing imports until\n", - "/home/bushuhui/.virtualenv/dl/lib/python3.5/site-packages/ipykernel_launcher.py:4: SettingWithCopyWarning: \n", + " after removing the cwd from sys.path.\n", + "C:\\Users\\lenovo\\Anaconda3\\lib\\site-packages\\ipykernel_launcher.py:5: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame\n", "\n", "See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n", - " after removing the cwd from sys.path.\n" + " \"\"\"\n" ] } ], "source": [ - "#对类别进行编码,3个类别分别赋值0,1,2\n", + "#Fixme-解决赋值的问题,参考https://www.jb51.net/article/138045.htm\n", + "#Coding the class and assign value 0, 1, 2 to each class.\n", "dataset['class'][dataset['class']=='Iris-setosa']=0\n", "dataset['class'][dataset['class']=='Iris-versicolor']=1\n", "dataset['class'][dataset['class']=='Iris-virginica']=2" @@ -373,9 +374,9 @@ "outputs": [], "source": [ "def originalDatashow(dataSet):\n", - " #绘制原始的样本点\n", + " #Draw original sample point.\n", " num,dim=shape(dataSet)\n", - " marksamples=['ob'] #样本图形标记\n", + " marksamples=['ob'] #Sample graphic marking\n", " for i in range(num):\n", " plt.plot(datamat.iat[i,0],datamat.iat[i,1],marksamples[0],markersize=5)\n", " plt.title('original dataset')\n", @@ -394,156 +395,159 @@ "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" } ], "source": [ - "#获取样本数据\n", + "#Get sample data\n", "datamat = dataset.loc[:, ['sepal-length', 'sepal-width']]\n", - "# 真实的标签\n", + "#True label\n", "labels = dataset.loc[:, ['class']]\n", - "#原始数据显示\n", + "#Show original data\n", "originalDatashow(datamat)" ] }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 12, "metadata": {}, "outputs": [], "source": [ "import random\n", "\n", "def randChosenCent(dataSet,k):\n", - " \"\"\"初始化聚类中心:通过在区间范围随机产生的值作为新的中心点\"\"\"\n", + " \"\"\"Initialize cluster center:By randomly generating a value over the interval as a new central point \"\"\"\n", "\n", - " # 样本数\n", + " # Sample numb\n", " m=shape(dataSet)[0]\n", - " # 初始化列表\n", + " # initialize list\n", " centroidsIndex=[]\n", " \n", - " #生成类似于样本索引的列表\n", + " #Generate a list similar to the sample index\n", " dataIndex=list(range(m))\n", " if False:\n", " for i in range(k):\n", - " #生成随机数\n", + " #Generate random number\n", " randIndex=random.randint(0,len(dataIndex))\n", - " #将随机产生的样本的索引放入centroidsIndex\n", + " #Put the sample index that generate randomly into centroidsIndex\n", " centroidsIndex.append(dataIndex[randIndex])\n", - " #删除已经被抽中的样本\n", + " #Delete the sample that has been choosen\n", " del dataIndex[randIndex]\n", " else:\n", " random.shuffle(dataIndex)\n", " centroidsIndex = dataIndex[:k]\n", " \n", - " #根据索引获取样本\n", + " #Get the sample by index\n", " centroids = dataSet.iloc[centroidsIndex]\n", " return mat(centroids)" ] }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 13, "metadata": {}, "outputs": [], "source": [ "\n", "def distEclud(vecA, vecB):\n", - " \"\"\"算距离, 两个向量间欧式距离\"\"\"\n", + " \"\"\"Calculate the Euclidean distance between two vector\"\"\"\n", " return sqrt(sum(power(vecA - vecB, 2))) #la.norm(vecA-vecB)\n", "\n", "\n", "def kMeans(dataSet, k):\n", - " # 样本总数\n", + " # The total number of sample\n", " m = shape(dataSet)[0]\n", - " # 分配样本到最近的簇:存[簇序号,距离的平方] (m行 x 2 列)\n", + " # Allocate sample to the nearest culster: save as [cluster number, square of distance](m_row x 2_column)\n", " clusterAssment = mat(zeros((m, 2)))\n", "\n", - " # step1: 通过随机产生的样本点初始化聚类中心\n", + " # step1: Initialize cluster center by the sample point that generate randomly\n", " centroids = randChosenCent(dataSet, k)\n", " print('最初的中心=', centroids)\n", "\n", - " # 标志位,如果迭代前后样本分类发生变化值为Tree,否则为False\n", + " # Flag bit,if the result of sample classification before and after iteration has changed, the value is True\n", " clusterChanged = True\n", - " # 查看迭代次数\n", + " # View the number of iterations\n", " iterTime = 0\n", " \n", - " # 所有样本分配结果不再改变,迭代终止\n", + " # All sample assignment results are no longer changed and the iteration terminates\n", " while clusterChanged:\n", " clusterChanged = False\n", " \n", - " # step2:分配到最近的聚类中心对应的簇中\n", + " # step2: Allocate to the nearest cluster corresponding to the nearest cluster center\n", " for i in range(m):\n", - " # 初始定义距离为无穷大\n", + " # Initially define distance as infinite\n", " minDist = inf;\n", - " # 初始化索引值\n", + " # Initialize index value初始化索引值\n", " minIndex = -1\n", - " # 计算每个样本与k个中心点距离\n", + " # Calculate the distance of each sample and k centriods\n", " for j in range(k):\n", - " # 计算第i个样本到第j个中心点的距离\n", + " # Calculate the distance between the ith smaple and jth centriods\n", " distJI = distEclud(centroids[j, :], dataSet.values[i, :])\n", - " # 判断距离是否为最小\n", + " # Judeg if the distance if the minimum\n", " if distJI < minDist:\n", - " # 更新获取到最小距离\n", + " # Update to get the minimum distance更新获取到最小距离\n", " minDist = distJI\n", - " # 获取对应的簇序号\n", + " # Get corresponding cluster numbers\n", " minIndex = j\n", - " # 样本上次分配结果跟本次不一样,标志位clusterChanged置True\n", + " # If the result of sample classification is not the same,mark clusterChanged to True\n", " if clusterAssment[i, 0] != minIndex:\n", " clusterChanged = True\n", - " clusterAssment[i, :] = minIndex, minDist ** 2 # 分配样本到最近的簇\n", + " clusterAssment[i, :] = minIndex, minDist ** 2 # Allocate smaple to nearest cluster\n", " \n", " iterTime += 1\n", " sse = sum(clusterAssment[:, 1])\n", " print('the SSE of %d' % iterTime + 'th iteration is %f' % sse)\n", " \n", - " # step3:更新聚类中心\n", - " for cent in range(k): # 样本分配结束后,重新计算聚类中心\n", - " # 获取该簇所有的样本点\n", + " # step3:Update cluster center\n", + " for cent in range(k): # When finished sample classification ,recalculate cluster center\n", + " # Get all sample point of this cluster,nonzero[0] represent the column of A == cent \n", + " #Without [0], column will also be shown\n", " ptsInClust = dataSet.iloc[nonzero(clusterAssment[:, 0].A == cent)[0]]\n", - " # 更新聚类中心:axis=0沿列方向求均值。\n", + " # Update cluster center: calculate average value according to column direction, axis=0.\n", " centroids[cent, :] = mean(ptsInClust, axis=0)\n", " return centroids, clusterAssment\n" ] }, { "cell_type": "code", - "execution_count": 25, + "execution_count": 14, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "最初的中心= [[6.2 2.2]\n", - " [6.3 2.5]\n", - " [7.7 3.8]]\n", - "the SSE of 1th iteration is 189.420000\n", - "the SSE of 2th iteration is 70.447978\n", - "the SSE of 3th iteration is 56.041643\n", - "the SSE of 4th iteration is 49.785857\n", - "the SSE of 5th iteration is 45.985699\n", - "the SSE of 6th iteration is 43.078623\n", - "the SSE of 7th iteration is 40.594295\n", - "the SSE of 8th iteration is 37.791783\n", - "the SSE of 9th iteration is 37.235470\n", - "the SSE of 10th iteration is 37.201302\n", - "the SSE of 11th iteration is 37.155048\n", - "the SSE of 12th iteration is 37.141172\n" + "最初的中心= [[4.8 3.4]\n", + " [5.5 2.4]\n", + " [5.3 3.7]]\n", + "the SSE of 1th iteration is 136.220000\n", + "the SSE of 2th iteration is 58.811902\n", + "the SSE of 3th iteration is 53.100129\n", + "the SSE of 4th iteration is 49.715722\n", + "the SSE of 5th iteration is 47.874761\n", + "the SSE of 6th iteration is 46.133064\n", + "the SSE of 7th iteration is 44.593439\n", + "the SSE of 8th iteration is 44.384855\n", + "the SSE of 9th iteration is 43.591498\n", + "the SSE of 10th iteration is 41.904928\n", + "the SSE of 11th iteration is 39.066514\n", + "the SSE of 12th iteration is 38.316500\n", + "the SSE of 13th iteration is 37.912536\n", + "the SSE of 14th iteration is 37.423306\n", + "the SSE of 15th iteration is 37.136261\n", + "the SSE of 16th iteration is 37.123702\n" ] } ], "source": [ - "# 进行k-means聚类\n", - "k = 3 # 用户定义聚类数\n", + "# Perform k-means clustering\n", + "k = 3 # Cluster numbers designed by customer\n", "mycentroids, clusterAssment = kMeans(datamat, k)" ] }, @@ -553,25 +557,25 @@ "metadata": {}, "outputs": [], "source": [ - "def datashow(dataSet, k, centroids, clusterAssment): # 二维空间显示聚类结果\n", + "def datashow(dataSet, k, centroids, clusterAssment): # Show cluster result in two dimensional space\n", " from matplotlib import pyplot as plt\n", - " num, dim = shape(dataSet) # 样本数num ,维数dim\n", + " num, dim = shape(dataSet) # sample numbers:num ,dimension: 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', ' len(marksamples):\n", " print('sorry,your k is too large,please add length of the marksample!')\n", " return 1\n", - " # 绘所有样本\n", + " # Draw all sample\n", " for i in range(num):\n", - " markindex = int(clusterAssment[i, 0]) # 矩阵形式转为int值, 簇序号\n", - " # 特征维对应坐标轴x,y;样本图形标记及大小\n", + " markindex = int(clusterAssment[i, 0]) # Change value to int form, cluster number\n", + " # The characteristic dimension corresponds to x,y; Sample graphic marking and size\n", " plt.plot(dataSet.iat[i, 0], dataSet.iat[i, 1], marksamples[markindex], markersize=6)\n", "\n", - " # 绘中心点\n", - " markcentroids = ['o', '*', '^'] # 聚类中心图形标记\n", + " # Draw center point\n", + " markcentroids = ['o', '*', '^'] # Cluster center graphic marking\n", " label = ['0', '1', '2']\n", " c = ['yellow', 'pink', 'red']\n", " for i in range(k):\n", @@ -580,18 +584,18 @@ " plt.xlabel('sepal length')\n", " plt.ylabel('sepal width')\n", "\n", - " plt.title('k-means cluster result') # 标题\n", + " plt.title('k-means cluster result') # Title\n", " plt.show()\n", " \n", " \n", - "# 画出实际图像\n", + "# Draw real graphic\n", "def trgartshow(dataSet, k, labels):\n", " from matplotlib import pyplot as plt\n", "\n", " num, dim = shape(dataSet)\n", " label = ['0', '1', '2']\n", " marksamples = ['ob', 'or', 'og', 'ok', '^r', '^b', '" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" } ], @@ -707,19 +709,17 @@ }, { "cell_type": "code", - "execution_count": 28, + "execution_count": 21, "metadata": {}, "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" } ], @@ -734,7 +734,7 @@ "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)" + " axes[i].imshow(img)\n" ] }, { @@ -747,13 +747,21 @@ "2. How to solve the uncertainty of some digital" ] }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, { "cell_type": "markdown", "metadata": {}, "source": [ - "## 评估聚类性能\n", + "## Value the performance of cluster\n", + "\n", + "Mehtod 1: If the data that has been valued have correct categories data, then use Adjusted Rand Index(ARI), ARI is similar to the method for accuracy calculating which considered the problem that the class cluster cannot correspond to the classification tag.\n", "\n", - "方法1: 如果被用来评估的数据本身带有正确的类别信息,则利用Adjusted Rand Index(ARI),ARI与分类问题中计算准确性的方法类似,兼顾了类簇无法和分类标记一一对应的问题。\n", "\n" ] }, @@ -794,14 +802,13 @@ "cell_type": "markdown", "metadata": {}, "source": [ + "Method 2: if the value that has been evaluated do not have categories, Silhouette Coefficient will be used to evaluate the performance of cluster result. **Silhouette Coefficient take into account both the cohesion and the separation of the clusters, the value range is [-1,1], the higher Silhouette Coefficient represent the better clustering effect will be** \n", "\n", - "\n", - "方法2: 如果被用来评估的数据没有所属类别,则使用轮廓系数(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", + "Detailed steps for calculating Silhouette Coefficient\n", + "1. For the ith smapel in the clusterded data$x_i$, calculate the average value between $x_i$ and all the other smaple in the same cluster, written as $a_i$, used to quantify the cohesion within a cluster\n", + "2. Choose a cluster $b$ outside of $x_i$, calculate the average distance between $x_i$ and all samples in cluster $b$, traverse all other cluster, find the closest average distance and noted as $b_i$, which can be used to quantify the degree of separation between clusters.\n", + "3. For sample $x_i$, Silhouette Coefficient is $sc_i = \\frac{b_i−a_i}{max(b_i,a_i)}$ \n", + "4. Finally, calculate average value for all sample $\\mathbf{X}$, which will be the Silhouette Coefficient for current cluster result.\n", "4. 最后,对所以样本集合$\\mathbf{X}$求出平均值,即为当前聚类结果的整体轮廓系数。" ] }, @@ -844,7 +851,7 @@ "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", + "x1=np.array([1,2,3,1,5,6,5,5,6,7,8,9,7,9]) #Initialize original data\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", @@ -862,7 +869,7 @@ "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", + " kmeans_model=KMeans(n_clusters=t).fit(X) #KMeans modeling\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", @@ -870,13 +877,13 @@ " plt.xlim([0,10])\n", " plt.ylim([0,10])\n", "\n", - " sc_score=silhouette_score(X,kmeans_model.labels_,metric='euclidean') #计算轮廓系数\n", + " sc_score=silhouette_score(X,kmeans_model.labels_,metric='euclidean') #Calculate Silhouette Coefficient\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.plot(clusters,sc_scores,'*-') #Draw the relationship between cluster numbers and corresponding Silhouette Coefficient\n", "plt.xlabel('Number of Clusters')\n", "plt.ylabel('Silhouette Coefficient Score')\n", "\n", @@ -889,7 +896,7 @@ "source": [ "## How to determin the 'k'?\n", "\n", - "利用“肘部观察法”可以粗略地估计相对合理的聚类个数。K-means模型最终期望*所有数据点到其所属的类簇距离的平方和趋于稳定,所以可以通过观察这个值随着K的走势来找出最佳的类簇数量。理想条件下,这个折线在不断下降并且趋于平缓的过程中会有斜率的拐点,这表示从这个拐点对应的K值开始,类簇中心的增加不会过于破坏数据聚类的结构*。\n", + "Using \"Elbow observation\" can cursely determine the relatively reasonable numbers of cluster. K-means modeling are ultimately expecting that the sum of squares between all data points and their class clusters to be stable, so we could find best cluster numbers by observing this value. Under ideal condition, this broken line has an inflection point of slope as it falls and flattens out, this represents that from the K value that this inflection point represents, the increase of cluster center will not extremely broken the cluster inner structure.\n", "\n" ] }, @@ -969,8 +976,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "从上图可见,类簇数量从1降到2再降到3的过程,更改K值让整体聚类结构有很大改变,这意味着新的聚类数量让算法有更大的收敛空间,这样的K值不能反映真实的类簇数量。而当K=3以后再增大K,平均距离的下降速度显著变缓慢,这意味着进一步增加K值不再会有利于算法的收敛,同时也暗示着K=3是相对最佳的类簇数量。" + "As can be seen from the figure above, in the process that cluster number decrease from 1 to 2 and 3, the change of K value can make a big difference to the whole cluster structure, which means new cluster number make algorithm have larger convergence space and this K means can not represent real cluster members. When K=3, if we increase K, the decrease speed of average distance are slow down obviously, which means that a further increase in K is no longer conducive to the convergence of the algorithm, at the same time, it also mplies that K=3 is the relative optimal number of class clusters\n" ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] } ], "metadata": {