所以,我有一套文本,我想做一些聚类分析。我在每个文本之间都有一个Normalized Compression Distance,现在我基本上构建了一个带有加权边的完整图形,看起来像这样:
text1, text2, 0.539
text2, text3, 0.675
我很难找到将这些数据插入scipy层次聚类方法的最佳方法。我可以将距离数据转换为类似this page上的表格。如何格式化这些数据,以便可以轻松插入到scipy的HAC代码中?
答案 0 :(得分:1)
您正在将数据转换为类似于链接页面上的表格(冗余距离矩阵)的正确轨道。根据文档,您应该可以将其直接传递到scipy.cluster.hierarchy.linkage
或相关功能,例如scipy.cluster.hierarchy.single
或scipy.cluster.hierarchy.complete
。相关函数明确指定应如何计算簇之间的距离。 scipy.cluster.hierarchy.linkage
允许您指定所需的任何方法,但默认为单链接(即两个群集之间的距离是其最近点之间的距离)。所有这些方法都将返回表示凝聚聚类的多维数组。然后,您可以使用scipy.cluster.hierarchy
模块的其余部分对此群集执行各种操作,例如可视化或展平它。
然而,有一个问题。截至编写this question时,您无法实际使用冗余距离矩阵,尽管文档说您可以。基于github issue仍然开放的事实,我认为这个问题尚未解决。正如在链接问题的答案中所指出的,您可以通过将完整的距离矩阵传递到scipy.spatial.distance.squareform
函数来解决此问题,该函数将其转换为实际接受的格式(包含上部的平面数组) - 距离矩阵的三角形部分,称为压缩距离矩阵)。然后,您可以将结果传递给scipy.cluster.hierarchy
函数之一。