2020-10-19 21:18:53

This commit is contained in:
wizardforcel
2020-10-19 21:18:53 +08:00
parent a1aea5f19a
commit 003a199a02
226 changed files with 165 additions and 165 deletions

View File

@@ -1,6 +1,6 @@
# 第 10 章 K-MeansK-均值)聚类算法
![K-MeansK-均值聚类算法_首页](http://data.apachecn.org/img/AiLearning/ml/10.KMeans/K-Means_首页.jpg)
![K-MeansK-均值聚类算法_首页](img/K-Means_首页.jpg)
## 聚类
@@ -59,7 +59,7 @@ kmeans如前所述用于数据集内种类属性不明晰希望能够
有关 `簇``质心` 术语更形象的介绍, 请参考下图:
![K-Means 术语图](http://data.apachecn.org/img/AiLearning/ml/10.KMeans/apachecn-k-means-term-1.jpg)
![K-Means 术语图](img/apachecn-k-means-term-1.jpg)
### K-Means 工作流程
1. 首先, 随机确定 K 个初始点作为质心(**不必是数据中的点**)。
@@ -162,7 +162,7 @@ def kMeans(dataSet, k, distMeas=distEclud, createCent=randCent):
2. 测试一下 kMeans 函数是否可以如预期运行, 请看: <https://github.com/apachecn/AiLearning/blob/master/src/py2.x/ml/10.kmeans/kMeans.py>
参考运行结果如下:
![K-Means 运行结果1](http://data.apachecn.org/img/AiLearning/ml/10.KMeans/apachecn-k-means-run-result-1.jpg)
![K-Means 运行结果1](img/apachecn-k-means-run-result-1.jpg)
@@ -170,7 +170,7 @@ def kMeans(dataSet, k, distMeas=distEclud, createCent=randCent):
> 在 kMeans 的函数测试中,可能偶尔会陷入局部最小值(局部最优的结果,但不是全局最优的结果).
局部最小值的的情况如下:
![K-Means 局部最小值1](http://data.apachecn.org/img/AiLearning/ml/10.KMeans/apachecn-kmeans-partial-best-result-1.jpg)
![K-Means 局部最小值1](img/apachecn-kmeans-partial-best-result-1.jpg)
出现这个问题有很多原因可能是k值取的不合适可能是距离函数不合适可能是最初随机选取的质心靠的太近也可能是数据本身分布的问题。
为了解决这个问题,我们可以对生成的簇进行后处理,一种方法是将具有最大**SSE**值的簇划分成两个簇。具体实现时可以将最大簇包含的点过滤出来并在这些点上运行K-均值算法令k设为2。
@@ -239,7 +239,7 @@ def biKMeans(dataSet, k, distMeas=distEclud):
上述函数可以运行多次,聚类会收敛到全局最小值,而原始的 kMeans() 函数偶尔会陷入局部最小值。
运行参考结果如下:
![二分 K-Means 运行结果1](http://data.apachecn.org/img/AiLearning/ml/10.KMeans/apachecn-bikmeans-run-result-1.jpg)
![二分 K-Means 运行结果1](img/apachecn-bikmeans-run-result-1.jpg)
* **作者: [那伊抹微笑](http://cwiki.apachecn.org/display/~xuxin), [清都江水郎](http://cwiki.apachecn.org/display/~xuzhaoqing)**
* [GitHub地址](https://github.com/apachecn/AiLearning): <https://github.com/apachecn/AiLearning>