【问题标题】:Plotting dendrogram in Scipy error for large dataset在 Scipy 错误中为大型数据集绘制树状图
【发布时间】:2012-04-29 13:21:30
【问题描述】:

我正在使用 Scipy 进行层次聚类。我确实设法使用 fcluster 在阈值上获得平坦的集群。但我需要可视化形成的树状图。当我使用 dendrogram 方法时,它适用于 5-6k 用户向量。但我的数据分析器包含 16k 个用户向量。当我为 16k 用户运行它时,树形图函数会引发以下错误:

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

关于为更大的数据服务器可视化树状图有什么想法吗?

【问题讨论】:

  • 一个简单的想法是扩展您的内存,否则您可能需要深入研究实现细节以使例程内存友好。
  • @Maxwell,如果您发现投票率最高的答案有帮助,请继续将其标记为正确! :)
  • 我也遇到过同样的事情,但只有在使用某些方法(单一、平均、完整)而不是病房完成聚类时。我想知道是什么触发了这种情况 - 相同大小的链接矩阵的哪些属性使递归如此深入?

标签: python scipy cluster-analysis dendrogram


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    这可能有点晚了,但如果您对增加递归限制以颠覆递归深度限制感到满意,您可以这样做。不推荐,也绝对不是“pythonic”,但它可能会得到你想要的结果。

    import sys
    sys.setrecursionlimit(10000)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-06-06
      • 1970-01-01
      • 1970-01-01
      • 2020-02-07
      • 2012-08-08
      • 1970-01-01
      • 2018-12-14
      • 1970-01-01
      相关资源
      最近更新 更多