おそらく、ハルを計算する前に超平面にポイントを投影するとうまくいくでしょう。
たとえば、ツールキットの主成分分析クラスsklearn.decomposition.PCA
を使用しscikit-learn
て次元を削減します。
vertices = np.random.randn(9, 10)
from sklearn.decomposition import PCA
model = PCA(n_components=8).fit(vertices)
と を使用して、頂点から投影されたものに前後に変換できるようにmodel.transform
なりmodel.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 次元に戻します。