国内博客,上介绍实现的K-medodis方法为:
与K-means算法类似。只是距离选择与聚类中心选择不同。
距离为曼哈顿距离
聚类中心选择为:依次把一个聚类中的每一个点当作当前类的聚类中心,求出代价值最小的点当作当前聚类中心。
维基百科上,实现的方法为PAM算法。
分成K类,把每个点都尝试当作聚类中心,并求出当前组合聚类中心点组合的代价值。找到总最小代价值的中心点。
国内实现:
kMedoids.m代码:
function [cx,cost] = kMedoids(K,data,num) % 生成将data聚成K类的最佳聚类 % K为聚类数目,data为数据集,num为随机初始化次数 [cx,cost] = kMedoids1(K,data); for i = 2:num [cx1,min] = kMedoids1(K,data); if min<cost cost