如何做k-means算法的最后步骤

时间:2015-01-03 23:46:13

标签: algorithm k-means

我的程序出了问题。我试图通过将一组RGB值聚类为3个簇来实现k-means(手动)。我只需要理解就不需要编码帮助。到目前为止,我已经这样做了:

  1. 创建了3个集群对象,每个集群都有一个均值和一个数组来保存集群成员。
  2. 导入文本文件并将RGB值保存在数组中。
  3. 循环数组并为存储的每个RGB值计算使用欧几里德距离的最近距离的平均值。
  4. 将每个RGB值添加到具有最接近平均值的群集数组中。
  5. 我做过研究,似乎无法理解下一步。研究表明:

    在每个群集中,添加所有RGB值,将它们除以该群集中的值的数量,然后使用该值更新均值或;

    找出所有RGB值与均值之间的平均距离,然后用该值更新均值或;

    每次将RGB添加到群集时更新均值......

    我似乎无法理解最后的步骤,谢谢。

1 个答案:

答案 0 :(得分:0)

拥有每个群集阵列后,重新计算“群集中心”,作为该群集中项目的平均值。然后,将每个项目重新分配给相应的群集(重新计算后最接近“中心”的群集)。当没有项目更改群集时你就完成了(理论上可能最终会出现一个项目在两个群集之间不断翻转的情况,使用广义距离测量 - 这可以被检测到无论如何都要停止循环 - 但我不知道认为它可能发生欧几里德距离)。

IOW,这将是你的三个选择中的第一个。我甚至不确定你的第二种选择是什么意思;第三个可能不稳定,并且取决于项目的任意顺序,所以我强烈反对它。