Skip to main content

Use PCA in Machine Learning

Matlab Code

% Source
% http://www.dcs.gla.ac.uk/~srogers/firstcourseml/matlab/chapter7/pcaexample.html#2

clear all;close all;
% Generate the data
Y = [randn(20,2);randn(20,2)+5;randn(20,2)-5];
% Add 5 random dimensions
N = size(Y,1);
Y = [Y randn(N,5)];

% labels - just used for plotting
t = [repmat(1,20,1);repmat(2,20,1);repmat(3,20,1)];

% Plot the original data
symbs = {'ro','gs','b^'};
figure(1);hold off
for k = 1:3
    pos = find(t==k);
    plot(Y(pos,1),Y(pos,2),symbs{k});
    hold on
end

% Do the PCA
% Subtract the means

Y = Y - repmat(mean(Y,1),N,1);
% Compute covariance matrix
C = (1/N)*Y'*Y;
% Find the eigen-vectors/values
% columns of w correspond to the projection directions
[w,lam] = eig(C);

% Plot the first two components on to the original data
figure;
hold off
for k = 1:3
    pos = find(t==k);
    plot(Y(pos,1),Y(pos,2),symbs{k});
    hold on
end

xl = xlim;
for k = 1:2
    plot(xl,xl*w(1,k)/w(2,k),'k');
end

% Bar plot of the eigenvalues
figure;
hold off
bar(diag(lam));
xlabel('Projection dimension');

% Plot the data projected into the first two dimensions

X = Y*w(:,1:2);
figure;
hold off
for k = 1:3
    pos = find(t==k);
    plot(X(pos,1),X(pos,2),symbs{k});
    hold on
end
ylabel('Variance');

Outputs





Comments

Popular posts from this blog

Use offline WFDB Toolbox for MATLAB

The WFDB Toolbox for MATLAB and Octave is a collection of functions for reading, writing, and processing physiologic signals and time series in the formats used by PhysioBank databases (among others). The Toolbox is compatible with 64-bit MATLAB and GNU Octave on GNU/Linux, Mac OS X, and MS-Windows. To quick start to use offline WFDB Toolbox for Matlab http://physionet.org/physiotools/matlab/wfdb-app-matlab/wfdb-app-toolbox-0-9-6-1.zip  download this file.  Unzip file where you want. When unzip the file, mcode folder will create.  Open MATLAB.  Go where you unzip the file.  Write command line addpath(pwd) Finally write command line again savepath  You can use WFDB Toolbox offline anymore.  [tm,sig]=rdsamp('mitdb/100',1); plot(tm,sig);

ImageDatastore

ImageDatastore is a useful function and can get a collection of image files, where each individual image fits in memory, but the entire collection of images does not necessarily fit.

Using PCA on Three Dimensional Dataset

In this work, We use PCA three dimensional data.  Matlab Code % PCA Model clear all, clc , close all hold on axis equal axis([-2 2 -2 2 -2 2]) % Step 1: Get some data X = [1 2 -1 -2 0; 0.2 0 0.1 0.2 -0.4; 1.2 0.3 -1 -0.1 -0.4]'; % Step 2: Substract the mean plot3(X(:,1),X(:,2),X(:,3),'ko'); XAdjust = X-repmat(mean(X),size(X,1),1); plot3(XAdjust(:,1),XAdjust(:,2),XAdjust(:,3),'ro'); % Step 3: Calculate the covariance matrix CM = cov(X); % Step 4: Eigenvalue and Eigenvector [V D]= eig(CM); % Step 5: Choosing component f1 = V(:,1)'; f2 = V(:,2)'; f3 = V(:,3)'; F=[f1; f2; f3];