Python KMeans聚类单词

9
我想对一组单词执行kmeans聚类,距离度量使用Levenshtein距离。目前市面上有很多框架,包括scipy和orange都有kmeans实现。然而它们都需要数据作为向量,这与我的需求不符。
我需要一个优秀的聚类库。我查看了python-clustering并发现:a)它不返回到每个质心的所有距离之和;b)它没有任何迭代限制或截止条件,以确保聚类的质量。 python-clustering和daniweb上的聚类算法都不能满足我的需求。
请问是否有人能找到一个好的库? Google并没有帮到我。

我需要完全相同的东西。自那时以来,你有找到任何东西吗? - Jabba
4个回答

1

是的,我认为目前没有一个好的实现满足我的需求。

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

所以我想我会自己编写一个库,并很快以GPLv3发布。


0

这并不是对你具体问题的回答,但我建议你浏览一下"Programming Collective Intelligence"。在每章的结尾处,例如聚类,它会描述所有关于该主题的最佳阅读材料。


0

你觉得CrossValidated上这个this非常好的回答怎么样?

它使用了亲和传播(Affinity Propagation)而不是k-means,而在这种情况下,您可以将距离度量作为输入。我认为任何基于k-means的方法都无法在您的情况下工作,因为它是基于构建质心的,为此您必须处于向量空间中。

亲和传播的优点是它自动选择聚类的数量,您可以通过改变偏好(默认情况下为所有成对距离的中位数,但您可以选择其他百分位数)来调整聚类的数量(增加或减少聚类)。

如果您需要指定确切的聚类数量,除了通过试错调整亲和力传播算法外,您还可以寻找k-medoids的实现(显然在sklearn中没有它的实现,但人们已经在这里那里提出了要求)。K-medoids不会构建质心,因此它不需要向量空间的概念。因此,实现可能会接受预先计算的距离矩阵作为输入(尽管我没有检查我给出的参考文献)。


0

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接