【问题标题】:how to cluster a 3d array in python?如何在 python 中对 3d 数组进行聚类?
【发布时间】:2020-04-20 00:55:37
【问题描述】:

我必须聚集一个看起来像这样的 3d 数组

a=([[[1,2,3],[4,5,6],[7,8,9]],[[1,4,7],[2,5,9],[3,6,8]]])

假设这个数组代表时间序列中一个三角形的坐标,那么第一个二维数组代表第一帧中顶点的坐标,第二个数组代表第二帧中的坐标,以此类推。 我需要及时对这个三角形的位置进行聚类,但是 scikit -learn 的聚类算法只适用于二维数组。我已经对 3d 数组进行了整形以获得这个

b=([[1,2,3,4,5,6,7,8,9],[1,4,7,2,5,9,3,6,8]])

但是聚类算法的性能很差(请注意,三角形是一个例子,我必须聚类一个更复杂的图形的位置,所以二维数组中点的维数非常高)。 所以我想知道除了重塑和降维技术之外,是否还有其他方法可以对 3d 数组进行聚类。我读过将 3d 数组转换为距离矩阵可能是一种解决方案,但我真的不知道该怎么做。如果有人对如何执行此操作或有关如何解决此问题的任何其他建议有任何建议,我将非常感谢您的帮助!

【问题讨论】:

  • 如果你传递一个 3d 数组,它将返回“ValueError: Found array with dim 3. Estimator expected
  • 使用哪个估算器?
  • 感谢您的回答,这是我使用的代码 kmeans = KMeans(n_clusters=25, random_state=0).fit(Y)

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


【解决方案1】:

聚类算法使用以下矩阵格式:n_samples, n_features 因此,在您的情况下,您的 n_sample 是您的时间位置,而您的 n_features 是您的坐标。我假设您正在尝试找到随时间变化的形状的平均位置。我会建议这种类型的任务来计算你的形状的中心点。就像这样,无论您在对象中间有一个点以随时间跟踪的形状如何。这比尝试跟踪我认为可以旋转的对象上的所有角更有意义。

希望对你有帮助!

【讨论】:

    猜你喜欢
    • 2010-10-13
    • 1970-01-01
    • 1970-01-01
    • 2017-12-30
    • 1970-01-01
    • 2016-10-21
    • 2012-02-14
    • 2014-03-04
    • 2017-04-24
    相关资源
    最近更新 更多