61 lines
1.4 KiB
Matlab
61 lines
1.4 KiB
Matlab
function submit()
|
|
addpath('./lib');
|
|
|
|
conf.assignmentSlug = 'k-means-clustering-and-pca';
|
|
conf.itemName = 'K-Means Clustering and PCA';
|
|
conf.partArrays = { ...
|
|
{ ...
|
|
'1', ...
|
|
{ 'findClosestCentroids.m' }, ...
|
|
'Find Closest Centroids (k-Means)', ...
|
|
}, ...
|
|
{ ...
|
|
'2', ...
|
|
{ 'computeCentroids.m' }, ...
|
|
'Compute Centroid Means (k-Means)', ...
|
|
}, ...
|
|
{ ...
|
|
'3', ...
|
|
{ 'pca.m' }, ...
|
|
'PCA', ...
|
|
}, ...
|
|
{ ...
|
|
'4', ...
|
|
{ 'projectData.m' }, ...
|
|
'Project Data (PCA)', ...
|
|
}, ...
|
|
{ ...
|
|
'5', ...
|
|
{ 'recoverData.m' }, ...
|
|
'Recover Data (PCA)', ...
|
|
}, ...
|
|
};
|
|
conf.output = @output;
|
|
|
|
submitWithConfiguration(conf);
|
|
end
|
|
|
|
function out = output(partId, auxstring)
|
|
% Random Test Cases
|
|
X = reshape(sin(1:165), 15, 11);
|
|
Z = reshape(cos(1:121), 11, 11);
|
|
C = Z(1:5, :);
|
|
idx = (1 + mod(1:15, 3))';
|
|
if partId == '1'
|
|
idx = findClosestCentroids(X, C);
|
|
out = sprintf('%0.5f ', idx(:));
|
|
elseif partId == '2'
|
|
centroids = computeCentroids(X, idx, 3);
|
|
out = sprintf('%0.5f ', centroids(:));
|
|
elseif partId == '3'
|
|
[U, S] = pca(X);
|
|
out = sprintf('%0.5f ', abs([U(:); S(:)]));
|
|
elseif partId == '4'
|
|
X_proj = projectData(X, Z, 5);
|
|
out = sprintf('%0.5f ', X_proj(:));
|
|
elseif partId == '5'
|
|
X_rec = recoverData(X(:,1:5), Z, 5);
|
|
out = sprintf('%0.5f ', X_rec(:));
|
|
end
|
|
end
|