我需要为我的项目使用自定义的链接功能。对于这个函数,在每一步我都应该计算包含的目标
- 要合并的子集群之间的相似度(距离)
- 就子簇森林中的边缘而言,叶和根之间的距离。
目前我正在使用 scikit-learn AgglomerativeClustering。我浏览了一个与我有关的问题。
我发现最大链接和平均链接的合并操作发生在脚本中。
但是,我找不到计算所有子集群之间的距离的位置以及如何得出子集群中叶子和根之间的许多边。
如何才能做到这一点?
UPD:我正在尝试实现Chakrabarti算法以随着时间的推移进行平滑聚类。对于凝聚聚类,要合并的下一个聚类的选择取决于两个组成部分:当前时间戳的子聚类之间的相似性和与前一个时间戳相关的历史成本。后者有几种变体。例如,一个包括合并距离(不仅如此):如果我们要合并两个子集群 S1 和 S2,那么 S1 和 S2 中所有叶子之间的平均距离(就边而言)是多少。
关于 sklearn AgglomerativeClustering 有几个问题:
代码中的哪些行实现了在当前步骤中选择要合并的集群?
是否可以在每个合并步骤中提取子集群的叶子和根之间的距离?我注意到AgglomerativeClustering中有一个属性“children_”,我可以使用它来创建结果树并查找任何节点之间的距离。如何为每个合并步骤提取这样的信息?