9

我有兴趣在距离度量为 Leveshtein 的单词列表上执行 kmeans 聚类。

1)我知道那里有很多框架,包括 scipy 和 orange 有一个 kmeans 实现。然而,它们都需要某种向量作为不适合我的数据。

2)我需要一个好的集群实现。我查看了 python-clustering 并意识到它没有 a) 返回到每个质心的所有距离的总和,并且 b) 它没有任何类型的迭代限制或截断,以确保聚类的质量。python-clustering 和 daniweb 上的聚类算法并不适合我。

有人能帮我找到一个好的库吗?谷歌不是我的朋友

4

4 回答 4

1

是的,我认为我需要的东西没有一个很好的实现。

我有一些疯狂的要求,比如距离缓存等。

所以我想我会编写自己的库并很快将其作为 GPLv3 发布。

于 2010-03-17T06:35:34.820 回答
0

也许看看Weka。它是一个 Java 库,带有一些无监督学习实现和漂亮的可视化工具。自从我使用它已经有一段时间了,不确定它是否适合真正的生产环境,但绝对是一个很好的起点。

于 2012-01-09T11:11:43.363 回答
0

不是您具体问题的真正答案,但我建议您看一下“Programming Collective Intelligence”。在每一章的结尾,例如,聚类,它开始描述关于该主题的所有最佳读物。

于 2010-03-17T06:18:36.333 回答
0

在CrossValidated上这个非常好的答案怎么样?

它使用 Affinity Propagation 而不是 k-means,在这种情况下,您可以提供距离度量作为输入。我认为任何基于 k-means 的方法都不适用于您的情况,因为它基于构建质心,并且为了做到这一点,您必须在向量空间中。

Affinity Propagation 的好处是它会自动选择集群的数量,您可以通过更改偏好(默认情况下是所有成对距离的中位数,但您可以选择其他百分位数)来调整(拥有更多或更少的集群)。

如果您需要指定集群的确切数量,除了通过反复试验调整 Affinity Propagation 之外,您还可以寻找k-medoids的实现(显然 sklearn 中没有它的实现,但人们在这里那里要求它) . K-medoids 不建立质心,因此不需要向量空间的概念。所以实现可能会接受一个预先计算的距离矩阵作为输入(虽然没有检查我给出的参考资料)。

于 2018-09-07T07:59:32.367 回答