【问题标题】:Clustering points in 3D plane3D平面中的聚类点
【发布时间】:2015-11-12 07:54:23
【问题描述】:

假设我们在一个立方体中有 1000 个随机数据点(如下图所示)。 X 和 Y 方向的点分布是均匀的,但 Z 方向的分布不均匀。随着我们越来越深入,数据点越来越密集。 python中是否有任何直接的方法可以对这些数据点进行聚类:

  • 每个簇的大小相同
  • 每个聚类由局部点组成,即每个聚类由彼此靠近的点组成。

我已经尝试过使用 Scipy 包进行 K-means 聚类,但它并没有给我一个好的结果,而且每个聚类的点非常广泛而不是集中。

【问题讨论】:

  • 注意:K-means是随机初始化的,你有没有试过运行几次,看看是不是第一次运气不好?但一般来说,如果你的数据一开始就没有聚集,那么算法就不会找到不存在的好集群。这似乎更像是一个分箱问题......
  • @JulienBernu 是的,我已经尝试了好几次不同的初始化和不同的收敛迭代次数。
  • 集群必须具有相同大小的约束非常强。看看这个帖子:stats.stackexchange.com/questions/40777/…
  • @Anony-Mousse 根据其他 cmets 的说法,也许更好的解释是我想将这个立方体划分为迷你立方体的总和,这样在每个迷你立方体中都有相同数量的数据点.
  • 你应该改写你的问题,然后看看八叉树。

标签: python cluster-analysis k-means


【解决方案1】:

尝试使用 Scikit-Learn 的实现。他们使用称为“K-Means++”的技术初始化他们的集群,该技术以概率的方式选择第一个均值以获得最佳的起始分布。这会提高获得好结果的可能性。

http://scikit-learn.org/stable/modules/generated/sklearn.cluster.KMeans.html

【讨论】:

    猜你喜欢
    • 2015-12-09
    • 2017-08-16
    • 1970-01-01
    • 2018-01-22
    • 2016-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-19
    相关资源
    最近更新 更多