简单介绍:k-means 算法是一个聚类的算法 。属于无监督学习算法,也是就样本没有label(标签),然后根据某种规则进行“分割”, 把相同的或者相近的放在一起。
算法缺点:不能帮助我们自动分类,需要指定。在很多实际应用当中,很难知道数据是什么分布的,应该分成几类比较好。这也是k-means自身的一个缺陷。
在这里K就是我们想要分割的的聚类的个数。
算法步骤:
- 先定义总共有多少个类/簇(cluster)
- 将每个簇心(cluster centers)随机定在一个点上
- 将每个数据点关联到最近簇中心所属的簇上
- 对于每一个簇找到其所有关联点的中心点(取每一个点坐标的平均值)
- 将上述点变为新的簇心
- 不停重复,直到每个簇所拥有的点不变
例题:
- 假设有如下8个点:(3,1),(3,2),(4,1),(4,2),(1,3),(1,4),(2,3),(2,4)。使用K-means算法对其进行聚类。设初始聚类中心分别为(0,4)和(3,3)。请写出详细的计算过程。
- 过程如下:
- 1 数据
数据集 X Y A1 3 1 A2 3 2 A3 4 1 A4 4 2 A5 1 3 A6 1 4 A7 2 3 A8 2 4 -
2初始聚类中心分别为D1(0,4)和D2(3,3),计算各点到两中心的距离。
距离表1 D1(0,4) D2(3,3) A1(3,1) 4.242 2 √ A2(3,2) 3.605 1 √ A3(4,1) 5 2.236 √ A4(4,2) 4.472 1.414 √ A5(1,3) 1.414 √ 2 A6(1,4) 1 √ 2.236 A7(2,3) 2.236 1 √ A8(2,4) 2 1.414 √ -
3根据上表分成两簇,{A1,A2,A3,A4,A7,A8},{A5,A6}。重新计算新的聚类中心D3,D4。并计算新的距离表。
-
D3=(3+3+4+4+2+2)/6,(1+2+1+2+3+4)/6 = (3,2.167)
-
D4=(1+1)/2,(3+4)/2 = (1,3.5)
D3(3, 2.167) | D4(1,3.5) | |
A1(3,1) | 1.167 √ | 3.201 |
A2(3,2) | 0.167 √ | 2,5 |
A3(4,1) | 1.536 √ | 3.905 |
A4(4,2) | 1.013 √ | 3.354 |
A5(1,3) | 2.166 | 0.5 √ |
A6(1,4) | 2.712 | 0.5 √ |
A7(2,3) | 1.301 | 1.118 √ |
A8(2,4) | 2.088 | 1.118 √ |
-
4根据上表分成两簇,{A1,A2,A3,A4},{A5,A6,A7,A8}。重新计算新的聚类中心D5,D6。并计算新的距离表。
-
D5=(3+3+4+4)/4,(1+2+1+2)/4 = (3.5,1.5)
-
D6=(1+1+2+2)/4,(3+4+3+4)/4 = (1.5,3.5)文章来源:https://www.toymoban.com/news/detail-450974.html
距离表3 D5(3.5,1.5) D6(1.5,3.5) A1(3,1) 0.707 √ 2.915 A2(3,2) 0.707 √ 2.121 A3(4,1) 0.707 √ 3.535 A4(4,2) 0.707 √ 2.915 A5(1,3) 2.915 0.707 √ A6(1,4) 3.535 0.707 √ A7(2,3) 2.121 0.707 √ A8(2,4) 2.915 0.707 √ -
5根据上表分成两簇,{A1,A2,A3,A4},{A5,A6,A7,A8},和步骤四分簇一致,停止计算。文章来源地址https://www.toymoban.com/news/detail-450974.html
到了这里,关于k-means算法例题应用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!