Estou usando decomposição de vetor singular em uma matriz e obtendo as matrizes U, S e Vt. Neste ponto, estou tentando escolher um limite para o número de dimensões a serem mantidas. Foi-me sugerido que olhasse para uma trama de seixos, mas estou imaginando como proceder para traçá-la numpy. Atualmente, estou fazendo o seguinte usando bibliotecas numpy e scipy em python:
U, S, Vt = svd(A)
Alguma sugestão?
data-visualization
python
svd
lenda
fonte
fonte
S
, se já não é uma diagonal, quadrie-a, classifique-a em ordem decrescente, pegue a soma acumulada, divida pelo último valor e plote-a.[U,S,V] = svd(X);S = cumsum(sort(diag(S).^2,1,'descend'));S = S ./ S(end);plot(S);
Respostas:
Aqui está um exemplo que pode ser colado em um prompt do IPython e gerar uma imagem como abaixo (ele usa dados aleatórios):
fonte
num_vars
? parece não estar definido no seu script.