Exercise:PCA in 2D 代码示例

Exercise:PCA in 2D 代码示例

练习参考PCA in 2D

 

实现主成分分析和白化的过程是:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

pca_2d.m中代码如下:

 

[plain] view plaincopy
 
    1. close all  
    2.   
    3. %% Step 0: Load data  
    4. x = load('pcaData.txt','-ascii');  
    5. figure(1);  
    6. scatter(x(1, :), x(2, :));  
    7. title('Raw data');  
    8.   
    9. %% Step 1a: Implement PCA to obtain U   
    10. sigma = x * x' / size(x, 2);  
    11. [u,s,v] = svd(sigma);  
    12.   
    13. hold on  
    14. plot([0 u(1,1)], [0 u(2,1)]);  
    15. plot([0 u(1,2)], [0 u(2,2)]);  
    16. scatter(x(1, :), x(2, :));  
    17. hold off  
    18.   
    19. %% Step 1b: Compute xRot, the projection on to the eigenbasis  
    20. xRot = u' * x;  
    21. figure(2);  
    22. scatter(xRot(1, :), xRot(2, :));  
    23. title('xRot');  
    24.   
    25. %% Step 2: Reduce the number of dimensions from 2 to 1.   
    26. k = 1; % Use k = 1 and project the data onto the first eigenbasis  
    27. xde = u(:,1:k)' * x;  
    28. xHat = u(:,1:k) * xde;  
    29. figure(3);  
    30. scatter(xHat(1, :), xHat(2, :));  
    31. title('xHat');  
    32.   
    33. %% Step 3: PCA Whitening  
    34. %  Complute xPCAWhite and plot the results.  
    35. epsilon = 1e-5;  
    36. xPCAWhite = zeros(size(x));  
    37. xPCAWhite = diag(1./sqrt((diag(s) + epsilon))) * xRot;  
    38. figure(4);  
    39. scatter(xPCAWhite(1, :), xPCAWhite(2, :));  
    40. title('xPCAWhite');  
    41.   
    42. %% Step 3: ZCA Whitening  
    43. %  Complute xZCAWhite and plot the results.  
    44. xZCAWhite = zeros(size(x));  
    45. xZCAWhite = u * xPCAWhite;  
    46. figure(5);  
    47. scatter(xZCAWhite(1, :), xZCAWhite(2, :));  
    48. title('xZCAWhite');  
posted @ 2015-11-14 16:06  菜鸡一枚  阅读(346)  评论(0编辑  收藏  举报