k-modes聚类算法介绍

为什么要用k-modes算法

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

k-modes算法介绍

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

步骤二:对于样本 xj(j=1,2,...,N) ,分别比较其与k个中心之间的距离(这里的距离为不同属性值的个数,假如 x1=[1,2,1,3],C1=[1,2,3,4] ,那么 x1 C1 之间的距离为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] (有多个众数就随机取一个,例子不好举,就这样吧)

后面的步骤就是不断重复步骤二和三了

    原文作者:聚类算法
    原文地址: https://blog.csdn.net/tyh70537/article/details/78158674
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞