[Math] Normalizing the Eigenvalues so their sum is equal to min(n, p)

eigenvalues-eigenvectorsmatrices

If I compute the eigenvalues and eigenvectors using numpy.linalg.eig (from Python), the eigenvalues returned seem to be all over the place. Using, for example, the Iris dataset, the normalized Eigenvalues are [2.9108 0.9212 0.1474 0.0206], but the ones I currently have are [9206.53059607 314.10307292 12.03601935 3.53031167].

The problem I'm facing is that I want to find out how much percentage of the variance each component brings, but with the current Eigenvalues I don't have the right values.

So, how can I transform my eigenvalues so that they can give me the correct proportion of variance?

Edit: Just in case it wasn't clear, I'm computing the eig of the covariance matrix (The process is called Principal Component Analysis).

Best Answer

The sum of the eigenvalues equals the trace of the matriz. For a $N \times N$ covariance matriz, this would amount to $N VAR$ - where VAR is the variance of each variable (assuming they are equal - otherwise it would be the mean variance). Put in other way, the mean value of the eigenvalues is equal to the mean value of the variances.

And that's pretty much what can be said. Perhaps you are computing a covariance matriz by just multiplying the data matrices? If so, you just should divide by $N.