【发布时间】:2014-02-26 00:29:53
【问题描述】:
我有一组 (2k - 4k) 小字符串(3-6 个字符),我想对它们进行聚类。由于我使用字符串,How does clustering (especially String clustering) work? 上的先前答案告诉我 Levenshtein distance 很适合用作字符串的距离函数。另外,由于我事先不知道集群的数量,hierarchical clustering 是要走的路,而不是 k-means。
虽然我以抽象的形式解决了这个问题,但我不知道实际解决问题的简单方法是什么。例如,对于使用自定义函数(Levenshtein 距离)实际实现层次聚类,MATLAB 还是 R 是更好的选择。 对于这两种软件,人们都可以轻松找到 Levenshtein 距离实现。聚类部分似乎更难。例如Clustering text in MATLAB 计算所有字符串的距离数组,但我不明白如何使用距离数组来实际获得聚类。你们中的任何一位大师能否向我展示如何使用自定义函数在 MATLAB 或 R 中实现层次聚类的方法?
【问题讨论】:
-
这取决于您使用的层次聚类类型。 Single linkage & complete linkage HC 可以只用一个距离矩阵来执行,所以一旦你通过任何方法获得了它,正常的聚类函数(例如,
hclust)应该可以正常工作。 OTOH、average 链接或 Ward 方法需要在每一步重新计算距离,因此实现起来会更加复杂。 -
因此在 MATLAB 中 Z = linkage(Y,method) 将使用计算的距离矩阵和完整的方法。对吗?
-
我只能猜测答案是“是”。自从我使用 MATLAB 以来已经有很长时间了,而且我从未使用它进行任何聚类。
标签: r matlab cluster-analysis levenshtein-distance hierarchical-clustering