我必须聚集一个看起来像这样的 3d 数组
a=([[[1,2,3],[4,5,6],[7,8,9]],[[1,4,7],[2,5,9],[3,6,8]]])
想象一下,这个数组表示时间序列中三角形的坐标,因此第一个二维数组表示第一帧中顶点的坐标,第二个数组表示第二帧中的坐标,依此类推。 我需要及时对这个三角形的位置进行聚类,但是 scikit -learn 的聚类算法仅适用于二维数组。我对 3d 数组进行了 reshape 以获得这个
b=([[1,2,3,4,5,6,7,8,9],[1,4,7,2,5,9,3,6,8]])
但是聚类算法的性能很差(请注意,三角形只是一个例子,我必须对一个更复杂的图形的位置进行聚类,因此二维数组中点的维数非常高)。 所以我想知道除了 reshape 和降维技术之外是否还有其他方法来聚类 3d 数组。我读过将 3d 数组转换为距离矩阵可能是一个解决方案,但我真的不知道该怎么做。如果有人对如何执行此操作有任何建议或对如何解决此问题有任何其他建议,我将非常感谢您的帮助!
最佳答案
聚类算法使用以下矩阵格式:n_samples, n_features
因此,在您的情况下,您的 n_sample 是您的时间位置,您的 n_features 是您的坐标。我假设您正在尝试找到形状随时间变化的平均位置。我建议此类任务计算形状的中心点。像这样,无论形状如何,您都可以在物体中间有一个点来跟踪时间。这比尝试跟踪我认为可以旋转的对象上的所有角更有意义。
希望对你有帮助!
关于python - 如何在Python中对3D数组进行聚类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59545045/