为什么Qhull在计算几个点的凸包时会出错



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

我认为凸包的定义是很好的定义,无论尺寸如何。这是怎么回事?我是否可以调用其他函数来解决此问题?

也许在计算外壳之前将点投影到超平面上就可以了。

例如,使用scikit-learn工具包中的主成分分析类sklearn.decomposition.PCA来降低维度。

vertices = np.random.randn(9, 10)
from sklearn.decomposition import PCA
model = PCA(n_components=8).fit(vertices)

现在可以使用model.transformmodel.inverse_transform从顶点来回变换到投影。

proj_vertices = model.transform(vertices)
hull_kinda = ConvexHull(proj_vertices)
hull_kinda.simplices

这输出类似于的东西

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个维度中获得简化。

相关内容

  • 没有找到相关文章

最新更新