【问题标题】:Query regarding k-means clustering in MATLABMATLAB 中关于 k-means 聚类的查询
【发布时间】:2016-05-23 09:30:38
【问题描述】:

我有大量矩阵形式的数据。我已经在 MATLAB R2013a 中使用 k-means 聚类对其进行了聚类。我想要形成的每个簇的质心的确切坐标。是否可以使用任何公式或其他任何公式?

我想找出每个簇的质心,这样每当矩阵中有一些新数据到达时,我就可以计算它与每个质心的距离,从而找出新数据所属的簇

我的数据本质上是异构的。因此,很难找出每个集群的数据平均值。所以,我正在尝试编写一些代码来自动打印质心位置。

【问题讨论】:

  • 发布您用于kmeans的代码,质心是MATLAB函数的输出......
  • 使用 documentarion... 但如果您的数据是“异构的”,k-means 可能无法产生有意义的结果。仔细研究结果! 在 k-means 意义上它可以是“最优的”,但同时又是无用的和有偏见的

标签: matlab machine-learning cluster-analysis k-means unsupervised-learning


【解决方案1】:

质心被简单地评估为分配给该集群的所有点坐标的平均值。

如果您有分配 {point;cluster},您可以轻松评估质心:假设您有一个给定的集群,其中分配有 n 点,这些点是 a1,a2,...,an。您可以使用以下方法评估此类集群的质心:

centroid=(a1+a2+...+an)/n

显然,您可以循环运行此过程,具体取决于您的数据结构(即分配点/质心)的组织方式。

【讨论】:

  • 但是当集群质心位置已经只是 MATLAB 的 kmeans 的第二个输出时,你为什么要这样做......
  • OP 没有指定使用了什么工具箱/功能,他正在寻找一个公式来评估质心。这是质心的定义和公式。如果他/她一直在使用 Matlab 内置的 kmeans 函数,那么您是对的,他/她可以改用给定的输出。
【解决方案2】:

在 MATLAB 中,使用

[idx,C] = kmeans(..) 

而不是

idx = kmeans(..) 

根据documentation

[idx,C] = kmeans(..) 返回 k×p 矩阵 C 中的 k 个簇质心位置。

【讨论】:

    猜你喜欢
    • 2013-02-14
    • 2015-03-06
    • 2015-03-07
    • 1970-01-01
    • 2015-04-11
    • 2017-03-16
    • 2011-08-13
    • 2013-08-08
    • 2018-01-14
    相关资源
    最近更新 更多