我开始尝试使用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分,有时会崩溃,有时会成功。我不确定,但似乎存在内存分配错误?
答案 0 :(得分:0)
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