我試圖將高維數據集減少到2-D。但是,我無法預先訪問整個數據集。所以,我想生成一個函數,它需要一個N維向量並返回一個二維向量,這樣,如果我給它在N維空間中靠近的向量,結果在二維空間。減少尺寸
我以爲SVD是我需要的答案,但我無法讓它工作。
爲簡單起見,設N = 3並假設我有15個數據點。如果我在15x3矩陣X中預先獲得所有數據,則:
[U, S, V] = svd(X);
s = S; %s is a the reduced version of S, since matlab is case-sensitive.
s(3:end,3:end)=0;
Y=U*s;
Y=Y(1:2,:);
做我想要的。但是,假設我得到一個新的數據點A,一個1x3向量。有沒有辦法使用U,S或V來將A轉換爲合適的1x2向量?
如果SVD是一個失敗的原因,有人可以告訴我應該做什麼嗎?
注意:這是Matlab代碼,但我不在乎答案是C,Java還是數學。如果你不能閱讀Matlab,請問,我會澄清。
呃,s和s真的會欺騙眼睛。 ;) – 2009-10-08 17:02:47