在matlab中进行聚类

时间:2014-02-24 20:57:29

标签: matlab cluster-computing cluster-analysis

我有一个带有一些点的3D盒子(1800)。 像这样:

enter image description here

现在我必须对这些点进行聚类,并且不能用k-means完成,因为你现在没有聚类的数量。另一个问题是盒子是周期性的。因此,侧面顶部和底部的点可以属于其他各点。就像在这张图片中一样:

enter image description here

右边的左边属于彼此。 如何定义具有特定距离作为阈值的这些聚类,并实现该框是周期性的(因此当您是一个轴的末尾时,如果这些距离低于阈值,则查看开头)?

亲切的问候, 格伦

2 个答案:

答案 0 :(得分:1)

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

寻找基于密度的聚类算法,因为您的数据非常类似于基于密度的聚类设计方案。

答案 1 :(得分:0)

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

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

你的盒子是周期性的事实提出了一个有趣的挑战。我在这里首先想到的是,解决问题的最佳方法不是通过改变距离测量(你可以做到),而是改变数据(特征提取)。 你的盒子有6个侧面,但因为它的周期性如果它有3个边。因此,左侧和右侧是“相同的”(顶部和底部,前部和后部)。 如何在三个功能上重新定义每个对象?每个特征是物体与“三个”边之一之间的距离。

祝你好运!