我开始尝试使用该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 代码进行几次尝试后:
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)
我设法将问题缩小到维度。它有 21 个维度的 39 个随机生成的点,它可以工作。40分,有时会崩溃,有时会成功。我不确定,但似乎存在内存分配错误?
- 有没有办法避免内存问题?对于凸包算法来说,700 点太多了吗?
- 浏览 Google 的搜索结果,我注意到有一些算法可以计算凸包的近似值。你推荐他们吗?他们可以在我的情况下工作吗?其中一些是否已经有 Python 实现?
- 可能我想计算高维空间的凸包,最多 100,000 维。这是疯狂,还是可以以明智的方式完成?