我想用q-gram距离或者简单的“包距离”或者python中的levenshtein距离来聚集大约100000个短字符串。我计划填写一个距离矩阵(100000选择2个比较),然后用pyCluster进行分层聚类。但在我离开地面之前,我遇到了一些记忆问题。例如,距离矩阵对于numpy来说太大了。

aa = numpy.zeros((100000, 100000))
ValueError: array is too big.

这似乎是合理的做法吗?还是我注定要在这项任务中记忆问题?谢谢你的帮助。

最佳答案

100000*100000*32位=40 GB,这将是一个很大的RAM,所以是的,您需要找到另一种方法。(即使您可以将这些数据放入内存,计算也会花费太长时间。)
一个常见且简单的快捷方式是对数据的一个小的随机子集进行集群,找到这个子集的集群后,只需将其余的点放入最适合它们的集群中。

关于python - 在Python中集群~100,000个短字符串,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4241741/

10-12 21:55