Files
matlab/RBM/pca_eval.asv
T
jens 32063406bd [PCA]
- minor improvements

git-svn-id: http://moon:8086/svn/matlab/trunk@95 801c6759-fa7c-4059-a304-17956f83a07c
2016-07-12 20:34:57 +00:00

44 lines
1.3 KiB
Plaintext

function pca_eval()
close all;
Ntrain = 100;
Ndim = 2;
K = 1;
epsilon = 0.1;
x = 2*(rand(Ndim, Ntrain)-0.5);
x = 0.3*x + repmat(linspace(-0.7,0.7, Ntrain), Ndim, 1);
plot(x(1,:), x(2,:), '+'); axis([-1 1 -1 1]); grid; title('Raw data'); xlabel('x_1'); ylabel('x_2');
sigma = x * x' / size(x, 2)
[U,S,V] = svd(sigma)
xrot = U' * x;
figure;
plot(xrot(1,:), xrot(2,:), '+'); axis([-1 1 -1 1]); grid; title('Rotated data'); xlabel('x_{rot,1}'); ylabel('x_{rot,2}');
xpca = pcdiag(sqrt(1./(diag(S) + epsilon))) * xrot;
figure;
plot(xpca(1,:), xpca(2,:), '+'); axis([-1 1 -1 1]); grid; title('Whitened data dim=2'); xlabel('x_{pca,1}'); ylabel('x_{pca,2}');
xtilde = zeros(size(xrot));
xtilde(1:K, :) = xrot(1:K, :);
lambda = diag(S);
retained_variance = sum(lambda(1:K))./sum(lambda)
figure;
plot(xtilde(1,:), xtilde(2,:), '+'); axis([-1 1 -1 1]); grid; title('Rotated data reduced to dim = 1'); xlabel('x_{tilde,1}'); ylabel('x_{tilde,2}');
size (U)
size(xrot)
xhat = U(:, 1:K) * xrot(1:K, :);
figure;
plot(xhat(1,:), xhat(2,:), '+'); axis([-1 1 -1 1]); grid; title('Data reduced to dim = 1'); xlabel('x_{hat,1}'); ylabel('x_{hat,2}');
xpca1 = diag(sqrt(1./(diag(S)))) * xhat;
figure;
plot(xpca1(1,:), xpca1(2,:), '+'); axis([-1 1 -1 1]); grid; title('Whitened data dim=1'); xlabel('x_{pca,1}'); ylabel('x_{pca,2}');