1、Find Closest Centroids
m = size(X,1);
for i = 1:m
d_min = 10000;
for j = 1:K
d_temp = sum((X(i,:)- centroids(j,:)).^2);
if d_temp<d_min
d_min = d_temp;
idx(i) = j;
end
end
end
2、Compute Centroid Means
for i = 1:K
s = 0;
cnt = 0;
for j = 1:m
if idx(j)==i
s = s + X(j,:);
cnt = cnt +1;
end
end
centroids(i,:) = s./cnt;
end
这里补充了一个用K均值算法进行图像压缩的程序例子。
3、PCA
Covariance = 1/m*X'*X;
[U,S,D] = svd(Covariance);
4、Project Data
Z = X*U(:,1:K);
X为m×n的矩阵,U为n×n的矩阵,Z为m×K的矩阵。
5、Recover Data
X_rec = Z *U(:,1:K)';
Z为m×K的矩阵,U为n×n的矩阵,X_rec为m×n的矩阵。