Attachment 'U03_test_kmeans.m'
Download 1 function U03_test_kmeans
2 %U03_TEST_KMEANS Test kmeans.
3 %
4 %usage
5 % U03_test_kmeans
6 %
7 %author
8 % saputra@cs.tu-berlin.de
9
10 % filename of script to test
11 filename = 'kmeans.m';
12
13 % generate data set
14 mu_1 = [-4; 0];
15 mu_2 = [4; 0];
16 mu_3 = [0; sqrt(48)];
17 ns = 50;
18 X = [(randn(2, ns) + repmat(mu_1, 1, ns)) (randn(2, ns) + repmat(mu_2, 1, ns)) (randn(2, ns) + repmat(mu_3, 1, ns))];
19 correct_r = [ones(1, ns) 2*ones(1, ns) 3*ones(1, ns)];
20 correct_same_cluster = (repmat(correct_r, 3*ns, 1) == repmat(correct_r', 1, 3*ns));
21
22 % run test
23 if exist(filename, 'file')
24 fprintf(['Testing ' filename '...\n']);
25 [mu, r] = kmeans(X, 3);
26 assert_equal(size(correct_r), size(r), 'Size of r does not match. Remember: r has to be a row vector!');
27 same_cluster = (repmat(r, 3*ns, 1) == repmat(r', 1, 3*ns));
28 num_correct_clusterings = sum(sum(triu(correct_same_cluster == same_cluster, 1)));
29 fprintf('Pairwise correct cluster belongings: %.2f %%\n', 100*(num_correct_clusterings/11175));
30 fprintf('Please run the test multiple times. You should nearly always get 100 %%\n');
31 else
32 fprintf([filename 'not found.\n']);
33 end
34
35 function [] = assert_equal(A, B, error, success)
36
37 if max(max(abs(A - B))) > 1e-3
38 fprintf(['Error: ' error '\n']);
39 expected = A
40 got = B
41 else
42 if nargin > 3
43 fprintf(['OK: ' success '\n']);
44 end
45 end
Attached Files
To refer to attachments on a page, use attachment:filename, as shown below in the list of files. Do NOT use the URL of the [get] link, since this is subject to change and can break easily.You are not allowed to attach a file to this page.