首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么在计算几个点的凸包时Qhull误差?

为什么在计算几个点的凸包时Qhull误差?
EN

Stack Overflow用户
提问于 2014-10-16 15:22:17
回答 1查看 3.4K关注 0票数 4

我试图计算10维空间中9点的凸包。通过the接口,我调用scipy.spatial.ConvexHull(points)并获取QH6214 qhull input error: not enough points(9) to construct initial simplex (need 12)

我认为凸壳的定义是很好的定义,不管它的维数。这里发生什么事情?我可以调用一个不同的函数来解决这个问题吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-20 00:39:21

也许在计算船体之前将点投影到一个超平面上就能做到这一点。

例如,使用来自sklearn.decomposition.PCA工具箱的主组件分析类scikit-learn来减少维数。

代码语言:javascript
复制
vertices = np.random.randn(9, 10)
from sklearn.decomposition import PCA
model = PCA(n_components=8).fit(vertices)

现在,您可以使用model.transformmodel.inverse_transform将顶点来回转换为投影。

代码语言:javascript
复制
proj_vertices = model.transform(vertices)
hull_kinda = ConvexHull(proj_vertices)
hull_kinda.simplices

这输出如下所示

代码语言:javascript
复制
array([[6, 4, 3, 8, 0, 7, 5, 1],
       [2, 4, 3, 8, 0, 7, 5, 1],
       [2, 6, 3, 8, 0, 7, 5, 1],
       [2, 6, 4, 8, 0, 7, 5, 1],
       [2, 6, 4, 3, 0, 7, 5, 1],
       [2, 6, 4, 3, 8, 7, 5, 1],
       [2, 6, 4, 3, 8, 0, 5, 1],
       [2, 6, 4, 3, 8, 0, 7, 1],
       [2, 6, 4, 3, 8, 0, 7, 5]], dtype=int32)

现在使用model.inverse_transform在你的10个维度中得到简单的结果。

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

https://stackoverflow.com/questions/26408110

复制
相关文章

相似问题

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