J'essaie de comprendre s'il existe un moyen plus rapide de calculer toutes les valeurs propres et vecteurs propres d'une matrice de contiguïté très grande et clairsemée que d'utiliser scipy.sparse.linalg.eigsh Pour autant que je sache, cette méthode utilise uniquement la rareté et attributs de symétrie de la matrice. Une matrice d'adjacence est également binaire, ce qui me fait penser qu'il existe un moyen plus rapide de le faire.
J'ai créé une matrice de contiguïté clairsemée de 1000x1000 et comparé plusieurs méthodes sur mon ordinateur portable Ubuntu 13.04 x230:
- scipy.sparse.linalg.eigs: 0,65 seconde
- scipy.sparse.linalg.eigsh: 0,44 secondes
- scipy.linalg.eig: 6,09 secondes
- scipy.linalg.eigh: 1,60 secondes
Avec les eigs et eigsh clairsemés, je fixe k, le nombre des valeurs propres et des vecteurs propres souhaités, comme étant le rang de la matrice.
Le problème commence avec des matrices plus grandes - sur une matrice 9000x9000, il a fallu 45 minutes à scipy.sparse.linalg.eigsh!