24

我的目标是根据它们与文本文档语料库的相似程度来对单词进行聚类。我计算了每对单词之间的 Jaccard 相似度。换句话说,我有一个稀疏距离矩阵可用。谁能指出任何将距离矩阵作为输入的聚类算法(可能还有它在 Python 中的库)?我事先也不知道集群的数量。我只想对这些单词进行聚类并获得哪些单词被聚类在一起。

4

3 回答 3

15

您可以将 scikit-learn 中的大多数算法与预先计算的距离矩阵一起使用。不幸的是,您需要许多算法的集群数量。 DBSCAN是唯一不需要集群数量并且还使用任意距离矩阵的方法。您也可以尝试MeanShift,但这会将距离解释为坐标 - 这也可能有效。

还有亲和力传播,但我还没有真正看到它运作良好。不过,如果您想要许多集群,那可能会有所帮助。

披露:我是 scikit-learn 核心开发人员。

于 2013-04-27T12:59:29.570 回答
10

scipy 集群包可能很有用(scipy.cluster)。scipy.cluster.hierarchy中有层次聚类功能。但是请注意,那些需要压缩矩阵作为输入(距离矩阵的上三角)。希望文档页面对您有所帮助。

于 2013-04-27T06:06:42.610 回答
0

建议看一下凝聚聚类。

于 2019-02-03T03:35:06.263 回答