Mostrar comentarios más antiguos
I have written following code to learn about PCA.
clear all
clc
load hald
hald=ingredients;
[m n]=size(hald);
mu=mean(hald);
mumat=repmat(mu,[m 1]);
hald_new=hald-mumat;
cov_mat=cov(hald_new);
[EVec EVal]=eig(cov_mat);
[sq iq]=sort(diag(EVal)','descend');
for i=1:length(iq)
EVec_sort(:,i)=EVec(:,iq(i));
end
EVal_sort=sq;
pca_data=EVec_sort'*hald_new';
And also I compared my results with matlab princomp() function. Results are like this..
My result
>> pca_data'
ans =
36.8218 6.8709 -4.5909 0.3967
29.6073 -4.6109 -2.2476 -0.3958
-12.9818 4.2049 0.9022 -1.1261
23.7147 6.6341 1.8547 -0.3786
-0.5532 4.4617 -6.0874 0.1424
-10.8125 3.6466 0.9130 -0.1350
-32.5882 -8.9798 -1.6063 0.0818
22.6064 -10.7259 3.2365 0.3243
-9.2626 -8.9854 -0.0169 -0.5437
-3.2840 14.1573 7.0465 0.3405
9.2200 -12.3861 3.4283 0.4352
-25.5849 2.7817 -0.3867 0.4468
-26.9032 2.9310 -2.4455 0.4116
Matlab result:
>> [pc,score,latent,tsquare] = princomp(ingredients);
>> score
score =
36.8218 -6.8709 -4.5909 0.3967
29.6073 4.6109 -2.2476 -0.3958
-12.9818 -4.2049 0.9022 -1.1261
23.7147 -6.6341 1.8547 -0.3786
-0.5532 -4.4617 -6.0874 0.1424
-10.8125 -3.6466 0.9130 -0.1350
-32.5882 8.9798 -1.6063 0.0818
22.6064 10.7259 3.2365 0.3243
-9.2626 8.9854 -0.0169 -0.5437
-3.2840 -14.1573 7.0465 0.3405
9.2200 12.3861 3.4283 0.4352
-25.5849 -2.7817 -0.3867 0.4468
-26.9032 -2.9310 -2.4455 0.4116
Why the second column giving wrong result (in signs)?
1 comentario
Debarshi Chakraborty
el 21 de En. de 2020
how to plot this data?
Respuesta aceptada
Más respuestas (0)
Categorías
Más información sobre Dimensionality Reduction and Feature Extraction en Centro de ayuda y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!