【问题标题】:Clustering in matlabmatlab中的聚类
【发布时间】:2014-03-26 18:27:36
【问题描述】:

我有一个 3d 盒子,里面有一些点 (1800)。 像这样:

现在我必须对这些点进行聚类,而 k-means 无法做到这一点,因为你现在不需要聚类的数量。另一个问题是盒子是周期性的。所以侧顶和侧底的点可以相互归属。就像这张图片:

左右是彼此的。 如何将这些具有特定距离的集群定义为阈值,并实现该框是周期性的(因此,当您是其中之一时,如果这些距离低于阈值,则一个轴的末端会查看开头)?

亲切的问候, 格伦

【问题讨论】:

    标签: matlab cluster-computing cluster-analysis


    【解决方案1】:

    关于聚类分析的维基百科文章将回答您的问题。

    寻找基于密度的聚类算法,因为您的数据在我看来非常类似于基于密度的聚类的设计场景。

    【讨论】:

      【解决方案2】:

      嗯,首先,您确实可以使用 K-Means。当然你需要使用集群有效性索引(google Silhouette width index、Calinski-Harabasz index、Dunn's index等)。

      如果出于其他原因您真的不想使用 K-Means,您可能希望使用分层聚类算法,例如 Ward 方法(维基百科中的描述)。您不需要先验地知道集群的数量(但是,您能否真正声称您正在创建一个分类而不能够回答最基本的问题:有多少分类单元?)。

      您的盒子是周期性的这一事实提出了一个有趣的挑战。我在这里的第一个想法是解决问题的最佳方法不是更改距离度量(您可以这样做),而是通过转换数据(特征提取)。 你的盒子有 6 个面,但是因为它的周期性就像它有 3 个面一样。因此,左侧和右侧是“相同的”(顶部和底部,以及前后)。 用三个特征重新定义每个对象怎么样?每个特征都是对象与“三个”边之一之间的距离。

      祝你好运!

      【讨论】:

        猜你喜欢
        • 2011-12-22
        • 2014-09-16
        • 2013-08-04
        • 2013-10-01
        • 1970-01-01
        • 2011-12-04
        • 2016-10-13
        • 1970-01-01
        相关资源
        最近更新 更多