【每天一点算法】k-means聚类算法

    xiaoxiao2024-12-07  68

    该聚类算法的设计分为三大步:数据集准备;聚类中心设计与初始化;迭代训练; 其中迭代训练又分为两大步:聚类;聚类中心更新 下面是具体代码及其详解(实现语言为MATLAB或者Octave)注释为C/C++风格,复制的时候要改成matlab风格,或者直接删除

    //prepare the data x = [1 2 2 2 2 2 102 103 102 104 105 104 203 204 203 205 203 209 207 205]; //c是用来保存每一个x所属的类别的一个一维向量,所以它的维数和x是一样的 c = zeros(size(x)); //Random initialize K cluster centroids m; m = [2 5 200]; N = input('Enter your times to iterate:'); for k = 1:N//iterate for i = 1:size(x, 2)//cluster min = abs(x(i) - m(1)); c(i) = 1; for j = 2:size(m, 2) if abs(x(i) - m(j)) < min min = abs(x(i) - m(j)); c(i) = j; end end end//cluster end for i = 1:size(m, 2)//clustering center update m(i) = mean(x(find(c == i))); end//clustering center update end end//iterate end

    代码写得很清楚,应该不用解释了

    最新回复(0)