Tôi đang sử dụng phân rã vectơ số ít trên một ma trận và thu được ma trận U, S và Vt. Tại thời điểm này, tôi đang cố gắng chọn ngưỡng cho số lượng kích thước được giữ lại. Tôi đã được đề nghị để xem xét một âm mưu scree nhưng đang tự hỏi làm thế nào để đi về âm mưu nó trong numpy. Hiện tại, tôi đang thực hiện các thao tác sau bằng thư viện numpy và scipy trong python:
U, S, Vt = svd(A)
Bất kỳ đề xuất?
@shabbychef: Ý bạn là, lấy tổng tích lũy và chia cho tổng của tất cả các giá trị phải không?
—
Truyền thuyết
Đúng. Trong matlab, nó sẽ là
—
shabbychef
[U,S,V] = svd(X);S = cumsum(sort(diag(S).^2,1,'descend'));S = S ./ S(end);plot(S);
S
, nếu nó chưa phải là đường chéo, bình phương nó, sắp xếp nó theo thứ tự giảm dần, lấy tổng tích lũy, chia cho giá trị cuối cùng, sau đó vẽ đồ thị.