J'utilise la décomposition vectorielle singulière sur une matrice et j'obtiens les matrices U, S et Vt. À ce stade, j'essaie de choisir un seuil pour le nombre de dimensions à conserver. On m'a suggéré de regarder un tracé d'éboulis, mais je me demande comment s'y prendre pour le tracer en numpy. Actuellement, je fais ce qui suit en utilisant les bibliothèques numpy et scipy en python:
U, S, Vt = svd(A)
Aucune suggestion?
data-visualization
python
svd
Légende
la source
la source
S
, si ce n'est pas déjà une diagonale, la mettre au carré, la trier par ordre décroissant, prendre la somme cumulée, diviser par la dernière valeur, puis la tracer.[U,S,V] = svd(X);S = cumsum(sort(diag(S).^2,1,'descend'));S = S ./ S(end);plot(S);
Réponses:
Voici un exemple qui peut être collé dans une invite IPython et générer une image comme ci-dessous (il utilise des données aléatoires):
la source
num_vars
? il ne semble pas être défini dans votre script.