在Scipy中绘制大型数据集的树状图错误

16

我正在使用Scipy进行分层聚类。我成功地使用fcluster在一个阈值上获得了平面簇,但我需要可视化形成的树状图。当我使用dendrogram方法时,对于5-6k个用户向量它能正常工作。但我的数据集包含16k个用户向量。当我为16k个用户运行它时,dendrogram函数会抛出以下错误:

File "/home/enthought/lib/python2.7/site-packages/scipy/cluster/hierarchy.py", line 2333, in _dendrogram_calculate_info
leaf_label_func, i, labels)
File "/home/enthought/lib/python2.7/site-packages/scipy/cluster/hierarchy.py", line 2205, in _append_singleton_leaf_node
ivl.append(str(int(i)))
RuntimeError: maximum recursion depth exceeded while getting the str of an object

有没有关于如何可视化更大数据集的树状图的想法?


一个简单的想法是扩展你的内存,否则你可能需要深入实现细节,使例程更加内存友好。 - xiao 啸
我也遇到了同样的问题,但只有在使用某些聚类方法(single、average、complete)时才会出现,而ward则不会。我想知道是什么触发了这个问题 - 相同大小链接矩阵的属性是什么,使得递归如此深入? - user1603472
2个回答

30

这可能有点晚,但是如果你感觉可以增加递归限制来规避递归深度限制,并且你感到舒适,那么你可以这样做。这不被推荐,肯定不是“pythonic”的,但很可能会得到你想要的结果。

import sys
sys.setrecursionlimit(10000)

1
使用sys.setrecursionlimit(1000000)我能够处理一个大矩阵并成功返回一个seaborn.clustermap调用。我想这个错误也可能通过升级scipy或提供额外的参数来解决,并更加谨慎地使用scipy构建clustermap。

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