행렬에서 특이 벡터 분해를 사용하고 U, S 및 Vt 행렬을 얻고 있습니다. 이 시점에서 유지할 차원 수에 대한 임계 값을 선택하려고합니다. 나는 scree plot을 보라고 제안했지만 numpy로 플롯하는 방법에 대해 궁금합니다. 현재 파이썬에서 numpy 및 scipy 라이브러리를 사용하여 다음을 수행하고 있습니다.
U, S, Vt = svd(A)
어떤 제안?
@ shabbychef : 당신은 누적 합계를 취하고 모든 값의 합계로 나눕니다.
—
Legend
예. matlab에서,
—
shabbychef
[U,S,V] = svd(X);S = cumsum(sort(diag(S).^2,1,'descend'));S = S ./ S(end);plot(S);
S
이 아닌 경우 대각선을 취하고 , 정사각형으로, 내림차순으로 정렬하고, 누적 합계를 취하고, 마지막 값으로 나눈 다음 플로팅합니다.