View on GitHub

Coursera-MachineLearning

Solutions of assignments

(Week 8) Ex7: K-means Clustering and Principal Component Analysis

findClosestCentroids.m

% ====================== YOUR CODE HERE ======================

for i = 1:size(X, 1)
  diff = zeros(K, 1);
  for j = 1:K
    currdiff = X(i, :) - centroids(j, :);
    diff(j) = currdiff * currdiff';
  endfor
  [val, idx(i)] = min(diff);
endfor

% =============================================================

computeCentroids.m

% ====================== YOUR CODE HERE ======================

for i = 1:K
  count = 0;
  for j = 1:m
    if idx(j) == i
      centroids(i, :) += X(j, :);
      count += 1;
    endif
  endfor
  centroids(i, :) /= count;
endfor

% =============================================================

pca.m

% ====================== YOUR CODE HERE ======================

Sigma = X' * X / m;
[U S V] = svd(Sigma);

% =========================================================================

projectData.m

% ====================== YOUR CODE HERE ======================

U_reduce = U(:, 1:K);
Z = X * U_reduce;

% =============================================================

recoverData.m

% ====================== YOUR CODE HERE ======================

X_rec = Z * U(:, 1:K)';

% =============================================================