BSAS顺序聚类算法及Matlab代码实现

    顺序算法(sequential algorithms)是一种非常简单的聚类算法,大多数都至少将所有特征向量使用一次或几次,最后的结果依赖于向量参与算法的顺序。这种聚类算法一般是不预先知道聚类数量k的,但有可能给出一个聚类数上界q。本文将主要介绍基本顺序算法(Basic Sequential Algorithmic Scheme,BSAS)和其几个变种,并给出代码实现。

    首先看BSAS,这个算法方案需要用户定义参数:不相似性阈值θ和允许的最大聚类数q以及聚类顺序。算法的基本思想:由于要考虑每个新向量,根据向量到已有聚类的距离,将它分配到一个已有的聚类中,或者一个新生成的聚类中。

《BSAS顺序聚类算法及Matlab代码实现》

算法实例:

有10个模式样本点:{x1(0 0), x2(3 8), x3(2 2), x4(1 1), x5(5 3), x6(4 8), x7(6 3), x8(5 4), x9(6 4), x10(7 5)}

《BSAS顺序聚类算法及Matlab代码实现》

第一步:选任意一个模式样本作为第一个聚类中心,如z= x1

第二步:选距离z1最远的样本作为第二个聚类中心。

经计算,|| x– z||最大,所以z= x6

第三步:逐个计算各模式样本{xi, i = 1,2,…,N}与{z1, z2}之间的距离,即

Di1= || x– z||

Di2= || x– z||

并选出其中的最小距离min(Di1, Di2),i = 1,2,…,N

第四步:在所有模式样本的最小值中选出最大距离,若该最大值达到||z– z||的一定比例以上,则相应的样本点取为第三个聚类中心z3,即

若max{min(Di1, Di2), i = 1,2,…,N} >θ||z– z||,则z= xi

否则,若找不到适合要求的样本作为新的聚类中心,则找聚类中心的过程结束。

这里,θ可用试探法取一固定分数,如1/2。

在此例中,当i=7时,符合上述条件,故z= x7

第五步: 若有z3存在,则计算max{min(Di1, Di2, Di3), i = 1,2,…,N}。若该值超过||z– z||的一定比例,则存在z4,否则找聚类中心的过程结束。

在此例中,无z4满足条件。

第六步:将模式样本{xi, i = 1,2,…,N}按最近距离分到最近的聚类中心:

z= x1:{x1, x3, x4}为第一类

z= x6:{x2, x6}为第二类

z= x7:{x5, x7, x8, x9, x10}为第三类

最后,还可在每一类中计算个样本的均值,得到更具代表性的聚类中心。

该算法matlab实现的代码下载链接,注释很全~~下载链接

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