首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用qhull/SciPy计算大型数据集凸包时的问题

用qhull/SciPy计算大型数据集凸包时的问题
EN

Stack Overflow用户
提问于 2018-05-28 23:41:30
回答 1查看 1.1K关注 0票数 1

我开始使用scipy.spatial.ConvexHull函数进行实验,如果我理解正确的话,它是qhull C库的包装器。我使用的是SciPy 0.19.1和Python3。

我第一次使用的是一个真实的数据集,其中包含了21个维度的700个点,以及scipy.spatial.ConvexHull崩溃,其中有一个错误:scipy.spatial.qhull.QhullError: QH6235 qhull error (qh_memalloc): negative request size (-2003053336). Did int overflow due to high-D?

经过几次使用以下示例Python3代码的尝试:

代码语言:javascript
复制
import numpy as np
X = np.random.randn(40,21)
print("Computing convex hull of X (shape: " + str(X.shape) + ")...")
from scipy.spatial import ConvexHull
hull = ConvexHull(X)

我设法把这个问题缩小到维度。与39个随机产生的点在21个维度,它工作。有40分,有时失败,有时成功。我不确定,但似乎有内存分配错误?

  1. 有办法避免记忆问题吗?对于凸包算法来说,700点太多了吗?
  2. 在Google中浏览搜索结果时,我注意到有一些算法可以计算凸包的近似。你推荐他们吗?他们能在我的情况下工作吗?其中一些已经有Python实现了吗?
  3. 我可能想要计算高维空间的凸壳,高达100,000维。这是疯了,还是能以一种明智的方式进行呢?
EN

回答 1

Stack Overflow用户

发布于 2020-09-03 00:20:56

TLDR:高维斗争的ConvexHull

ConvexHull使用qhull。由于需要大量内存,我在matlab (也使用qhull)中处理了一个高维问题的等效实现。我联系了那些确认这是个问题的开发人员。

有关监视Qhull内存性能的帮助,请参阅Qhull“http://www.qhull.org/html/qh-code.htm#performance的性能”

“何时使用Qhull”也可能有助于http://www.qhull.org/html/index.htm#when

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

https://stackoverflow.com/questions/50574566

复制
相关文章

相似问题

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