Il existe un théorème mathématique indiquant qu'une matrice A multipliée par sa transposée donne une matrice définie positive symétrique (conduisant ainsi à des valeurs propres positives). Pourquoi le test de symétrie échoue-t-il ici pour les matrices aléatoires de taille moyenne? Il travaille toujours pour les petites matrices (20,20 etc.)Symétrie de la matrice d'autocovariance par multiplication de la matrice de caractéristiques avec sa transposition
import numpy as np
features = np.random.random((50,70))
autocovar = np.dot(np.transpose(features),features)
print((np.transpose(autocovar) == autocovar).all())
je reçois toujours 'faux' d'exécuter ce code. Qu'est-ce que je fais de mal? J'ai besoin de la matrice d'autocovariance pour effectuer une PCA mais jusqu'à présent j'ai des valeurs propres complexes ...
Merci!
Merci beaucoup! Cela fonctionne parfaitement. En attendant, j'ai eu l'idée d'utiliser: 'autocovar = np.round (np.dot (np.transpose (caractéristiques), caractéristiques), 3)' qui donne le même résultat. Merci! – dopexxx
Pas de problème! J'ai essayé votre code et ça passe votre test de symétrie. Mais c'est ** beaucoup ** plus loin de la matrice initiale, donc je ferais attention. Pour être plus précis, si 'X' est la matrice originale, non symétrique mais numériquement symétrique,' X1' est défini comme dans ma réponse et 'X2' comme dans votre réponse,' np.linalg.norm (X-X1, 'f ') 'et' np.linalg.norm (X-X2,' fro ') 'sont très différents. Le premier est précis à environ 12 chiffres, tandis que le dernier obtient à peine un seul chiffre. Juste un avertissement. –
Merci de m'avoir laissé faire ça, je suis tout à fait nouveau pour Python et Machine Learning! :) – dopexxx