如何执行 k-means 算法的最后步骤
How to do the final steps of the k-means algorithm
我的程序有问题。我正在尝试通过将一组 RGB 值聚类到 3 个聚类来实现 k-means(手动)。我不需要编码方面的帮助,只要理解即可。到目前为止我已经这样做了:
- 创建了 3 个集群对象,每个都有一个平均值和一个数组来保存该集群成员。
- 已导入文本文件并将 RGB 值保存在数组中。
- 循环数组并针对存储的每个 RGB 值,使用欧几里德距离计算最近距离的平均值。
- 将每个 RGB 值添加到具有最接近均值的簇的数组中。
我已经研究过了,我似乎无法理解下一步。研究表明:
在每个集群中,将所有 RGB 值加在一起除以该集群中值的数量,然后用该值更新平均值;
找出所有 RGB 值与平均值之间的平均距离,然后用该值更新平均值;
每次将 RGB 添加到集群时更新均值......
我就是看不懂最后几步,谢谢。
一旦你有了每簇数组,重新计算 "cluster center" 作为该簇中项目的平均值。然后,将每个项目重新分配给适当的集群(重新计算后 "center" 最接近的集群)。当没有项目更改集群时,你就完成了(理论上可能会在一个项目不断在两个集群之间翻转的情况下结束,使用广义距离测量——这可以被检测到以停止循环——但我不这样做认为这可能会发生在欧几里德距离上。
IOW,这将是您的三个备选方案中的第一个。我什至不确定第二种选择是什么意思;第三个可能不稳定,依赖任意顺序,所以我强烈反对。
我的程序有问题。我正在尝试通过将一组 RGB 值聚类到 3 个聚类来实现 k-means(手动)。我不需要编码方面的帮助,只要理解即可。到目前为止我已经这样做了:
- 创建了 3 个集群对象,每个都有一个平均值和一个数组来保存该集群成员。
- 已导入文本文件并将 RGB 值保存在数组中。
- 循环数组并针对存储的每个 RGB 值,使用欧几里德距离计算最近距离的平均值。
- 将每个 RGB 值添加到具有最接近均值的簇的数组中。
我已经研究过了,我似乎无法理解下一步。研究表明:
在每个集群中,将所有 RGB 值加在一起除以该集群中值的数量,然后用该值更新平均值;
找出所有 RGB 值与平均值之间的平均距离,然后用该值更新平均值;
每次将 RGB 添加到集群时更新均值......
我就是看不懂最后几步,谢谢。
一旦你有了每簇数组,重新计算 "cluster center" 作为该簇中项目的平均值。然后,将每个项目重新分配给适当的集群(重新计算后 "center" 最接近的集群)。当没有项目更改集群时,你就完成了(理论上可能会在一个项目不断在两个集群之间翻转的情况下结束,使用广义距离测量——这可以被检测到以停止循环——但我不这样做认为这可能会发生在欧几里德距离上。
IOW,这将是您的三个备选方案中的第一个。我什至不确定第二种选择是什么意思;第三个可能不稳定,依赖任意顺序,所以我强烈反对。