首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python另一种查找树状图的方法

Python另一种查找树状图的方法
EN

Stack Overflow用户
提问于 2012-09-24 23:08:09
回答 2查看 2K关注 0票数 0

我有维度为8000x100的数据。我需要将这8000个项目聚集在一起。我对这些商品的订购更感兴趣。对于较小的数据,我可以从上面的代码中获得所需的结果,但是对于更高的维度,我一直收到运行时错误"RuntimeError:在获取对象的字符串时超出了最大递归深度“。是否有其他方法可以从"Z“中获得重新排序的列。

代码语言:javascript
复制
from hcluster import pdist, linkage, dendrogram
import numpy
from numpy.random import rand

x = rand(8,100) # rand(8000,100) gives runtime error
Y = pdist(x)
Z = linkage(Y)
reorderedCol = dendrogram(Z)['ivl']


Traceback: 

>>> from hcluster import pdist, linkage, dendrogram
>>> import numpy
>>> from numpy.random import rand
>>> 

>>> x = rand(8000,100)
>>> Y = pdist(x)
>>> Z = linkage(Y)
>>> reorderedCol = dendrogram(Z)['ivl']
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Library/Frameworks/EPD64.framework/Versions/7.3/lib/python2.7/site-packages/hcluster/hierarchy.py", line 2062, in dendrogram
    link_color_func=link_color_func)
  File "/Library/Frameworks/EPD64.framework/Versions/7.3/lib/python2.7/site-packages/hcluster/hierarchy.py", line 2342, in _dendrogram_calculate_info
    link_color_func=link_color_func)
  File "/Library/Frameworks/EPD64.framework/Versions/7.3/lib/python2.7/site-packages/hcluster/hierarchy.py", line 2342, in _dendrogram_calculate_info
    link_color_func=link_color_func)
  File "/Library/Frameworks/EPD64.framework/Versions/7.3/lib/python2.7/site-packages/hcluster/hierarchy.py", line 2342, in _dendrogram_calculate_info

...
...

  File "/Library/Frameworks/EPD64.framework/Versions/7.3/lib/python2.7/site-packages/hcluster/hierarchy.py", line 2311, in _dendrogram_calculate_info
    link_color_func=link_color_func)
  File "/Library/Frameworks/EPD64.framework/Versions/7.3/lib/python2.7/site-packages/hcluster/hierarchy.py", line 2209, in _dendrogram_calculate_info
    _append_singleton_leaf_node(Z, p, n, level, lvs, ivl, leaf_label_func, i, labels)
  File "/Library/Frameworks/EPD64.framework/Versions/7.3/lib/python2.7/site-packages/hcluster/hierarchy.py", line 2091, in _append_singleton_leaf_node
    ivl.append(str(int(i)))
RuntimeError: maximum recursion depth exceeded while getting the str of an object
>>> 
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-09-25 14:50:03

问题是树状图是一种可视化技术。在8000个对象中,它已经变得几乎不可读了。这就是为什么它可能没有针对这一点进行优化。

对于更大的数据集,我建议远离任何类型的层次集群(当使用矩阵操作实现O(n^3)运行时,在某些情况下,你可以在O(n^2)中实现),而使用例如OPTICS (Wikipedia) (不是使用Weka中的光学组件,或者是四处浮动的python版本-它们都是不完整的!)。

我甚至不能运行dendrogram,我得到了错误matplotlib not available. Plot request denied。因此,它可能真的试图可视化树状图!如果它在优化可视化方面投入了大量的精力,那么它很可能会耗尽内存。通过像我在另一个问题Calculate ordering of dendrogram leaves 中向您展示的那样,您应该能够避免这种额外的成本。

您使用hcluster而不是scipy.cluster.hierarchy有什么原因吗

票数 2
EN

Stack Overflow用户

发布于 2017-06-13 15:15:57

但是对于更高的维度,我一直收到运行时错误"RuntimeError:获取对象的字符串时超出最大递归深度“。

内存问题可以通过使用某种形式的降维技术(如PCAtSNE )来解决

从100维减少到20维左右

运行tSNE需要时间,因此您可以使用PCA (更快)从100暗度减少到50暗度(比方说),然后使用tSNE将暗度减少到10左右。

注意:这些会导致数据丢失,但可能只会完成工作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12567813

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档