Canopy算法相对于K-means不用事先指定K值,即是算法不用受到初始聚类中心的影响。
Canopy算法执行步骤:
- 所有数据放入List集合中,并确定距离阈值T1、T2;并且T1>T2
- 遍历集合,随机选取一点判断该点与所有Canopy的距离;如果此时没有一个Canopy,则把该点作为第一个Canopy;如果距离小于T2则直接从集合中删除;如果距离大于T1直接产生一个新的Canopy。
- 直到集合中的数据为空
Canopy由于使用粗精度计算距离且聚类速度快,因此一般先采用Canopy聚类,然后再使用K-means。在使用K-means时,Canopy的个数可以作为K的个数,Canopy的聚类中心可以作为初始的聚类中心;在每个Canopy中使用-means,减少了直接使用k-means计算时间的复杂度。
对于Canopy的T1和T2可以使用交叉验证和先验进行选取。