所以我想实现一个单链接聚类算法,我知道有很多包的模板函数做单链接聚类像hclust,但我想实现这个算法自己使用for循环。
困难的部分是,我真的不知道如何更新矩阵后,我已经找到了一个簇对。假设矩阵在两点之间的最小值为1和";B"我们有一个5x5矩阵。现在,我是否需要创建一个新的列并删除这两个列,因为我现在有了一个新的聚类点V?
新的距离矩阵是如何实现的呢?我需要计算到簇v的新距离,我在理解上有问题。我希望能看到一个例子。也许你们能帮上忙。
我的矩阵:
A B C D E
0 1 2 5 4
1 0 6 2 2
2 0 0 8 2
5 2 8 0 4
4 2 2 4 0
一维欧几里德距离。
Single Linkage取两个聚类中所有点对的欧几里得最小值。
dist(Va, C) = 2
dist(vb, C) = 6
dist(V,C) = min(2,6) =2
dist(Va, D) = 5
dist(vb, D) = 2
dist(V,C) = min(2,5) =2
dist(Va, E) = 4
dist(vb, E) = 2
dist(V,C) = min(2,4) =2
新的距离矩阵看起来像:
V C D E
0 2 2 2
2 0 8 2
2 8 0 4
2 2 4 0
现在你可以自由地用C, D, E来聚簇V,因为这三个聚簇的距离相同。