comparison toolboxes/distance_learning/mlr/mlr_plot.m @ 0:e9a9cd732c1e tip

first hg version after svn
author wolffd
date Tue, 10 Feb 2015 15:05:51 +0000
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:e9a9cd732c1e
1 function mlr_plot(X, Y, W, D)
2
3 [d, n] = size(X);
4 %%%
5 % Color-coding
6 CODES = { 'b.', 'r.', 'g.', 'c.', 'k.', 'm.', 'y.', ...
7 'b+', 'r+', 'g+', 'c+', 'k+', 'm+', 'y+', ...
8 'b^', 'r^', 'g^', 'c^', 'k^', 'm^', 'y^', ...
9 'bx', 'rx', 'gx', 'cx', 'kx', 'mx', 'yx', ...
10 'bo', 'ro', 'go', 'co', 'ko', 'mo', 'yo'};
11
12 %%%
13 % First, PCA-plot of X
14
15 figure;
16
17 z = sum(X,3);
18 subplot(3,2,[1 3]), pcaplot(z, eye(d), Y, CODES), title('Native');
19 subplot(3,2,[2 4]), pcaplot(X, W, Y, CODES), title('Learned');
20
21 [vecs, vals] = eig(z * z');
22 subplot(3,2,5), bar(sort(real(diag(vals)), 'descend')), title('X*X'' spectrum'), axis tight;
23
24 if size(X,3) == 1
25 [vecs, vals] = eig(W);
26 vals = real(diag(vals));
27 else
28 if size(W,3) == 1
29 vals = real(W(:));
30 else
31 vals = [];
32 for i = 1:size(W,3)
33 [vecs, vals2] = eig(W(:,:,i));
34 vals = [vals ; real(diag(vals2))];
35 end
36 end
37 end
38 subplot(3,2,6), bar(sort(vals, 'descend')), title('W spectrum'), axis tight;
39
40 if nargin < 4
41 return;
42 end
43
44 %%%
45 % Now show some diagnostics
46
47 figure;
48 subplot(2,1,1), semilogy(D.f), title('Objective');
49 subplot(2,1,2), barh([D.time_SO, D.time_solver D.time_total]), ...
50 title('Time% in SO/solver/total');
51
52
53 function pcaplot(X, W, Y, CODES)
54 if size(X,3) == 1
55 A = X' * W * X;
56 else
57 A = 0;
58 if size(W,3) == 1
59 for i = 1:size(X,3)
60 A = A + X(:,:,i)' * bsxfun(@times, W(:,i), X(:,:,i));
61 end
62 else
63 for i = 1:size(X,3)
64 A = A + X(:,:,i)' * W(:,:,i) * X(:,:,i);
65 end
66 end
67 end
68 [v,d] = eigs(A, 3);
69 X2 = d.^0.5 * v';
70 hold on;
71 for y = 1:max(Y)
72 z = Y == y;
73 scatter3(X2(1, z), X2(2, z), X2(3,z), CODES{y});
74 end
75
76 axis equal;