以下是详细讲解 K-Means 聚类算法原理的完整攻略:
什么是聚类算法?
聚类算法是将大量数据按照特征、属性或者数据结构等分类到不同的群组或类别中的一种数据挖掘技术。
K-Means算法是什么?
K-Means 算法是一种聚类算法,其主要思想是对数据进行聚类,将相似的样本归到同一个簇中,不同的簇之间差异性较大。
K-Means 算法原理
K-Means 算法的原理是将数据集划分为 K 个基本类别,其中每个基本类别都由一些最近的数据点集合而成。这些点被称为质心。
具体的算法流程如下:
-
选择 K 个聚类中心点。 首先选择 K 个聚类中心点,可以是随机选择,也可以使用智能算法来确定。
-
计算各个数据点与聚类中心点的距离。 对于每个数据点,计算出其与 K 个聚类中心点之间的距离,并将其划分到距离最近的那个聚类中心点的簇中。
-
重新计算聚类中心点。 对于每个聚类簇,重新计算其内部所有数据点的均值,将均值作为该聚类簇的新的聚类中心点。
-
重复执行第二步和第三步,直到聚类结果不再改变。 重复执行第二步和第三步,直到聚类结果与上一次相同或达到最大迭代次数。
-
输出聚类结果。 最后将归属于同一个簇中的所有数据点输出到一个文本文件中,便于进一步数据分析。
K-Means 算法示例
例如有这样一组五维数据 [(1,1,1,1,1), (3,3,3,3,3), (5,5,5,5,5), (7,7,7,7,7), (9,9,9,9,9)],我们需要将这组数据分为三类。
-
初始聚类中心点的选择。 选择三个数据点作为初始聚类中心点,如:[(1, 1, 1, 1, 1), (3, 3, 3, 3, 3), (9, 9, 9, 9, 9)]。
-
计算各个数据点与聚类中心点的距离。 将每个数据点与聚类中心点之间的欧氏距离计算出来,如下图所示。
| 1 1 8|
|3 3 6|
|1 1 8|
|3 3 6|
|8 8 1|
将每个数据点划分到与其最接近的聚类中心点的簇中:
C1:[(1, 1, 1, 1, 1), (1, 1, 8, 8, 1)]
C2:[(3, 3, 3, 3, 3), (3, 3, 6, 6, 3)]
C3:[(5, 5, 5, 5, 5), (7, 7, 7, 7, 7), (9, 9, 9, 9, 9)]
- 重新计算聚类中心点。 对于每个簇,重新计算其内部所有数据点的均值并将其设置为新的聚类中心点,如下图所示:
C1:[(1, 1, 1, 1, 1), (1, 1, 8, 8, 1)] => (1, 1, 4.5, 4.5, 1)
C2:[(3, 3, 3, 3, 3), (3, 3, 6, 6, 3)] => (3, 3, 4.5, 4.5, 3)
C3:[(5, 5, 5, 5, 5), (7, 7, 7, 7, 7), (9, 9, 9, 9, 9)] => (7, 7, 7, 7, 7)
- 重复执行第二步和第三步,直到聚类结果不再改变。 重复执行第二步和第三步,直到聚类结果不再改变,如下图所示:
C1:[(1, 1, 1, 1, 1), (1, 1, 8, 8, 1)]
C2:[(3, 3, 3, 3, 3), (3, 3, 6, 6, 3)]
C3:[(5, 5, 5, 5, 5), (7, 7, 7, 7, 7), (9, 9, 9, 9, 9)]
在迭代到第三步时,聚类结果已经不再改变,因此可以终止迭代。
- 输出聚类结果。 最后将归属于同一个簇中的所有数据点输出到一个文本文件中,如下:
C1:[(1, 1, 1, 1, 1), (1, 1, 8, 8, 1)]
C2:[(3, 3, 3, 3, 3), (3, 3, 6, 6, 3)]
C3:[(5, 5, 5, 5, 5), (7, 7, 7, 7, 7), (9, 9, 9, 9, 9)]
适用场景
K-Means 算法通常适用于处理量大、维数高的数据集,适用于以下领域:
- 生物学
- 图像处理
- 自然语言处理
- 无监督学习
- 金融业集群
- 电影推荐
以上就是对 K-Means 聚类算法原理的完整攻略,包括二个示例说明,希望可以帮到你!
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:K-means聚类算法原理解析 - Python技术站