Finding intrinsic dimensionality of data set

조회 수: 4 (최근 30일)
Desiree
Desiree 2020년 1월 24일
답변: Gaurav Garg 2020년 2월 3일
Suppose I have a random (100,10) matrix. Here’s a code that gives the pca:
rng 'default'
X=rand(100,10);
X=bsxfun(@minus,X,mean(X));
[coeff,score,latent]=pca(X);
covmatrix=cov(X);
[V,D]=eig(covmatrix);
coeff
V
dataprincipalspace=X*coeff;
score
corrcoef(dataprincipalspace);
var(dataprincipalspace)'
latent
sort(diag(D),'descend')
If now I wish to know the intrinsic dimension of it, what should I add to my code? Help is appreciated!

채택된 답변

Gaurav Garg
Gaurav Garg 2020년 2월 3일
Hi,
latent (column vector) stores the eigenvalues of the covariance matrix of X.
Executing
cumsum(latent/sum(latent))
would tell you the % of data variance in each dimension.
Finally, the number of dimensions will depend on how much variance you wish to have in your data.
For example, in your case it comes out to be ~ 94% of variance upto 9th dimension.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Dimensionality Reduction and Feature Extraction에 대해 자세히 알아보기

태그

Community Treasure Hunt

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

Start Hunting!

Translated by