diff --git a/docs/10.k-means聚类.md b/docs/10.k-means聚类.md index 100b2fa6..3a94b324 100644 --- a/docs/10.k-means聚类.md +++ b/docs/10.k-means聚类.md @@ -131,8 +131,11 @@ def kMeans(dataSet, k, distMeas=distEclud, createCent=randCent): > 在 kMeans 的函数测试中,可能偶尔会陷入局部最小值(局部最优的结果,但不是全局最优的结果). ### K-Means 聚类算法的缺陷 -在 kMeans 的函数测试中,可能偶尔会陷入局部最小值(局部最优的结果,但不是全局最优的结果). -所以为了克服 KMeans 算法收敛于局部最小值的问题,有更厉害的大佬提出了另一个称为二分K-均值(bisecting K-Means)的算法. +在 kMeans 的函数测试中,可能偶尔会陷入局部最小值(局部最优的结果,但不是全局最优的结果). +局部最小值的的情况如下: +![K-Means 局部最小值1](../images/10.KMeans/apachecn-kmeans-partial-best-result-1.jpg) + +所以为了克服 KMeans 算法收敛于局部最小值的问题,有更厉害的大佬提出了另一个称之为二分K-均值(bisecting K-Means)的算法. ### 二分 K-Means 聚类算法 该算法首先将所有点作为一个簇,然后将该簇一分为二。 diff --git a/images/10.KMeans/apachecn-kmeans-partial-best-result-1.jpg b/images/10.KMeans/apachecn-kmeans-partial-best-result-1.jpg new file mode 100644 index 00000000..416b2248 Binary files /dev/null and b/images/10.KMeans/apachecn-kmeans-partial-best-result-1.jpg differ diff --git a/src/python/10.kmeans/kMeans.py b/src/python/10.kmeans/kMeans.py index f40dcdc9..acaa79c6 100644 --- a/src/python/10.kmeans/kMeans.py +++ b/src/python/10.kmeans/kMeans.py @@ -129,6 +129,8 @@ def testBiKMeans(): centList, myNewAssments = biKMeans(datMat, 3) + print 'centList=', centList + if __name__ == "__main__": # 测试基础的函数