2015-05-23 38 views
0

所以,我有一套我想对其进行聚类分析的文本。我已经采取了一切文本之间的Normalized Compression Distance,现在我已经基本建成加权边的完整的图形,看起来是这样的:如何将距离数据插入scipy的凝聚式聚类方法?

text1, text2, 0.539 
text2, text3, 0.675 

我有巨大的困难,找出堵塞这个数据的最佳方式融入scipy的层次聚类方法。我可以将距离数据转换成类似this page的表格。我怎样才能格式化这些数据,以便它可以很容易地插入到scipy的HAC代码中?

回答

1

您正处在正确的轨道上,将数据转换为链接页面上的表格(冗余距离矩阵)。根据文档,您应该能够将其直接传递到scipy.cluster.hierarchy.linkage或相关函数,例如scipy.cluster.hierarchy.singlescipy.cluster.hierarchy.complete。相关函数明确指定应如何计算群集之间的距离。 scipy.cluster.hierarchy.linkage可让您指定所需的任何方法,但默认为单个链接(即两个集群之间的距离是其最近点之间的距离)。所有这些方法将返回一个表示凝聚聚类的多维数组。然后,您可以使用scipy.cluster.hierarchy模块的其余部分对该群集执行各种操作,例如对其进行可视化或展平。

但是,有一个问题。在编写this question的时候,尽管文档说明了可以,但实际上不能使用冗余距离矩阵。基于github issue仍然开放的事实,我认为这还没有解决。正如链接问题的答案中所指出的那样,您可以通过将完整的距离矩阵传递到scipy.spatial.distance.squareform函数来解决此问题,该函数将其转换为实际接受的格式(包含上三角部分的平面数组距离矩阵,称为浓缩距离矩阵)。然后,您可以将结果传递给scipy.cluster.hierarchy函数之一。