主要是简单的聚类和pca降维
function idx = findClosestCentroids(X, centroids)
K = size(centroids, 1);
m=size(X,1);
% You need to return the following variables correctly.
idx = zeros(size(X,1), 1);
A=zeros(m,K);
for i=1:K
for j=1:m;
A(j,i)=sum((X(j,:)-centroids(i,:)).^2);
end
end
[s,d]=min(A');
idx=d';
end
function centroids = computeCentroids(X, idx, K)
[m n] = size(X);
centroids = zeros(K, n);
c=zeros(K,1);
for i=1:K
c(i,1)=size(find(idx==i),1);
end
for i=1:m
centroids(idx(i,1),:)=centroids(idx(i,1),:)+X(i,:);
end
for i=1:K
centroids(i,:)=centroids(i,:)/c(i,1);
end
end
function [U, S] = pca(X)
[m, n] = size(X);
U = zeros(n);
S = zeros(n);
sigma=1/m*X'*X;
[U,S,D]=svd(sigma);
end
function Z = projectData(X, U, K)
Z = zeros(size(X, 1), K);
U_reduce=U(:,1:K);
Z=X*U_reduce;
end
function X_rec = recoverData(Z, U, K)
X_rec = zeros(size(Z, 1), size(U, 1));
X_rec = Z * U(:,1:K)';
end