python - 如何在Python中对3D数组进行聚类?

标签 python scikit-learn scipy cluster-computing cluster-analysis

我必须聚集一个看起来像这样的 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/

相关文章:

Python 查找问题

Python Pip 第一次失败([Errno 2] 没有这样的文件或目录),然后第二次尝试工作 - 为什么?

scikit-learn - sklearn 半径中的 K 最近邻 - 椭圆

python - "pathological"凸函数的快速优化

python-3.x - Python中二项分布的概率质量函数

python - 使用openCV和python处理图像

python - 写树、篮子数量和压缩(连根拔起)

python - 用Python检查决策树分类器的准确性

python - 在 scikit learn 中结合网格搜索和交叉验证

python - 在 Windows 上安装 SciPy