# Calculating principal component scores from principal component coefficients of the new data

26 views (last 30 days)

Show older comments

Amin Kassab-Bachi
on 7 May 2021

Edited: Amin Kassab-Bachi
on 12 May 2021

Hi all,

I perfomed a PCA on dataset using the function

[coeff,score,latent,~,explained,mu]=pca(TrainingSet.X);

Then I generated new shapes (in the cartesian space) using a reduced number of principal components. Now I need to the principal component scores for these new shapes, but I can't figure out how!

Based on the fact that the original centered training data can be retrieved using

centeredData= score*coeff'

I used the following statements, which did not generate relevant results.

for i= 1:newShapesNum

newShapeScore(i,:)=newShape(i,:)*pinv(coeff(:,1:shapeModesNum)'); % i is the counter of new (generated) observations.

newSvalid=newShapeScore(i,:)*coeff(:,1:shapeModesNum)';

end

UPDATE

I also tried running a pca analysis on the new instances, and requested [score] and [coeff]. The mean shape looked good but using the centeredData formula above did not regenerate the original shape! I don't understand why though..

I'd appreciate your help in finding the principal component scores for the new shapes.

Many thanks

Amin

##### 2 Comments

Aditya Patil
on 11 May 2021

### Accepted Answer

Aditya Patil
on 12 May 2021

To get the scores for new data, you need to first get the outputs mu and coeff.

X = rand(100, 5);

XTrain = X(1:75, :)

XTest = X(76:100,:)

[coeff,scoreTrain,~,~,explained,mu] = pca(XTrain);

Now, to apply the same transformation, that is to get scores for new data, apply the following equation.

idx = 3; % Keep 3 principal components

scoreTest = (XTest-mu)*coeff(:,1:idx)

##### 1 Comment

### More Answers (0)

### See Also

### Categories

### Products

### Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!