Utilisation de Numpy (np.linalg.svd) pour la Décomposition en valeurs Singulières

Im lire Abdi & Williams (2010) "l'Analyse en composantes Principales", et je suis en train de refaire la SVD pour atteindre des valeurs pour plus de PCA.

L'article indique qu'à la suite de SVD:

X = P D Q^t

- Je charger mes données dans un np.tableau X.

X = np.array(data)
P, D, Q = np.linalg.svd(X, full_matrices=False)
D = np.diag(D)

Mais je n'ai pas le au-dessus de l'égalité lors de la vérification avec

X_a = np.dot(np.dot(P, D), Q.T)

X_a et X ont les mêmes dimensions, mais les valeurs ne sont pas les mêmes. Ai-je raté quelque chose, ou est la fonctionnalité de la np.linalg.svd fonction n'est pas compatible en quelque sorte avec l'équation dans le document?

OriginalL'auteur dms_quant | 2014-07-23