k-modes聚类算法介绍

来源:互联网 发布:怎样做seo 编辑:程序博客网 时间:2024/06/03 22:40

为什么要用k-modes算法

k-means算法是一种简单且实用的聚类算法,但是传统的k-means算法只适用于连续属性的数据集,而对于离散属性的数据集,计算簇的均值以及点之间的欧式距离就变得不合适了。k-modes作为k-means的一种扩展,适用于离散属性的数据集。

k-modes算法介绍

假设有N个样本,M个属性且全是离散的,簇的个数为k
步骤一:随机确定k个聚类中心C1,C2...CkCi是长度为M的向量,Ci=[C1i,C2i,...,CMi]

步骤二:对于样本xj(j=1,2,...,N),分别比较其与k个中心之间的距离(这里的距离为不同属性值的个数,假如x1=[1,2,1,3],C1=[1,2,3,4],那么x1C1之间的距离为2)

步骤三:将xj划分到距离最小的簇,在全部的样本都被划分完毕之后,重新确定簇中心,向量Ci中的每一个分量都更新为簇i中的众数

步骤四:重复步骤二和三,直到总距离(各个簇中样本与各自簇中心距离之和)不再降低,返回最后的聚类结果。

算例

假设有7个样本,每个样本有4个属性,表示为矩阵X

X=113212566755010011333442(1)

随机确定2个聚类中心C1=[1,5,1,3],C2=[2,5,1,2]
划分结果用Y表示
Y=111010000101(2)

即第1、2、3、5个样本被划分到C1,即第4、6个样本被划分到C2
接下来更新C1C2
C1=[1,6,0,3],C2=[2,7,0,4](有多个众数就随机取一个,例子不好举,就这样吧)
后面的步骤就是不断重复步骤二和三了

原创粉丝点击