算法2:TWMSC算法

输入:数据集 U = { x 1 , x 2 , , x n }

输出:聚类结果 { C o ( C 1 ) , F r ( C 1 ) , C o ( C 2 ) , F r ( C 2 ) , , C o ( C k ) , F r ( C k ) }

1:初始化参数:邻域半径 ε ,收敛阈值eps,标记所有对象为unvisited

2:while存在被标记为unvisited的对象:

随机选择一个被标记为unvisited的对象,作为中心点 x 0

for each x i x 0 ε 邻域do:

if x 0 ε 邻域内的数据点 x i x 0 的距离 d ( x i , x 0 ) ε

M = { x i | x i c }

for each x M do:

偏移向量: M r = i = 1 n ( x 0 x i )

更新中心点: x 0 = x 0 + M r

if M r < e p s :记下此时中心点 x 0 ,停止迭代;

else重复上述步骤;

end if;

end for;

end for;

end while;

3:while类簇c收敛

if当前类簇c与其他类簇 c 的中心距离 d ( c , c ) < M r

合并 c , c ,记为 c

else把类簇c看作新的类别,类簇个数 k + 1

end if;

end while;

4:for each x i U do:

if数据点 x i 对类簇C的访问次数 t i = max { t 1 , t 2 , , t k }

for each t j , j i do:

if t j t i < α , j = 1 , 2 , , k

x i C o ( C i )

if t j t i α , j = 1 , 2 , , k

x i F r ( C i ) , x i F r ( C j )

end if;

end for;

end if;

end for;

5:输出:聚类结果 { C o ( C 1 ) , F r ( C 1 ) , C o ( C 2 ) , F r ( C 2 ) , , C o ( C k ) , F r ( C k ) }