我有兴趣在距离测量为Leveshtein的单词列表上执行kmeans聚类。
1)我知道有很多框架,包括具有kmeans实现的scipy和orange。然而,它们都需要某种矢量作为不适合我的数据。
2)我需要一个很好的集群实现。我查看了python-clustering并意识到它不会a)返回每个质心的所有距离的总和,并且b)它没有任何类型的迭代限制或切断,这确保了聚类的质量。 python-clustering和daniweb上的聚类算法并不适用于我。
有人能找到一个好的lib吗?谷歌不是我的朋友
答案 0 :(得分:1)
是的,我认为我所需要的并没有很好的实施。
我有一些疯狂的要求,比如远程缓存等。
所以我想我会写自己的lib并很快将它作为GPLv3发布。
答案 1 :(得分:0)
不是您的具体问题的答案,但我建议您浏览"Programming Collective Intelligence"。在每一章的最后,例如,聚类,它徘徊在描述该主题的所有最佳阅读。
答案 2 :(得分:0)
也许看看Weka。它是一个Java库,带有一些无监督的学习实现和很好的可视化工具。自从我使用它已经有一段时间了,不确定它是否适合真正的生产环境,但确实是一个很好的起点。
答案 3 :(得分:0)
关于CrossValidated的this非常好的答案呢?
它使用亲和传播而不是k均值,在这种情况下,您可以输入距离度量。我不认为任何基于k均值的方法都可以在您的情况下使用,因为它是基于构建质心的,因此必须将其置于向量空间中。
Affinity Propagation有一个好处,它可以自动选择簇数,您可以通过更改首选项(默认情况下为所有成对距离的中位数,来调整(具有更多或更少的簇)),但是可以选择其他百分位数)。
如果您需要指定群集的确切数目,除了可以通过反复试验来调整“亲和力传播”,还可以寻找k-medoids的实现(显然,在sklearn中没有实现它,但是人们要求here和there)。 K质心不会建立质心,因此它不需要向量空间的概念。因此,实现可能会接受预先计算的距离矩阵作为输入(尽管没有检查我提供的参考)。