算法步骤[2]如下:
①初始化
设定控制参数:
c:预期的类数;
Nc:初始聚类中心个数(可以不等于c);
TN:每一类中允许的最少样本数目(若少于此数,就不能单独成为一类);
TE:类内各特征分量分布的相对标准差上限(大于此数就分裂);
TC:两类中心间的最小距离下限(若小于此数,这两类应合并);
NT:在每次迭代中最多可以进行“合并”操作的次数;
NS:允许的最多迭代次数。
选定初始聚类中心
②按最近邻规则将样本集{xi}中每个样本分到某一类中
③依据TN判断合并:如果类ωj中样本数nj< TN,则取消该类的中心zj,Nc=Nc-1,转至② 。
④计算分类后的参数:各类重心、类内平均距离及总体平均距离
计算各类的重心:
计算各类中样本到类心的平均距离:
计算各个样本到其类内中心的总体平均距离:
⑤判断停止、分裂或合并。
a、若迭代次数Ip =NS,则算法结束;
b、若Nc ≤c/2,则转到⑥ (将一些类分裂);
c、若Nc ≥2c,则转至⑦ (跳过分裂处理);
d、若c/2< Nc<2c,当迭代次数Ip是奇数时转至⑥ (分裂处理);迭代次数Ip是偶数时转至⑦ (合并处理)。
⑥分裂操作
计算各类内样本到类中心的标准差向量
σj=(σ1j, σ2j,…., σnj)T , j=1,2,…..,Nc
计算其各个分量。
求出每一类内标准差向量σj中的最大分量
若有某一类中最大分量大于TE,同时又满足下面两个条件之一:
则将该类ωj分裂为两个类,原zj取消且令Nc=Nc+1。
两个新类的中心zj+和zj-分别是在原zj中相应于的分量加上和减去,而起它分量不变,其中0<k≤1。
分裂后,Ip=Ip+1, 转至②。
⑦合并操作
计算各类中心间的距离Dij,i=1,2,…,Nc-1; j=1,2,…,Nc
依据TC判断合并。将Dij与TC比较,并将小于TC的那些Dij按递增次序排列,取前NT个。
从最小的Dij开始,将相应的两类合并,并计算合并后的聚类中心。
在一次迭代中,某一类最多只能合并一次。
流程图转换为ns图
Nc=Nc-已并掉的类数。
⑧如果迭代次数Ip=NS或过程收敛,则算法结束。否则,Ip=Ip+1,若需要调整参数,则转至①;若不改变参数,则转至②;

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。