0

我使用matlab的princomp函數來做PCA。 從我的理解,我可以檢查潛在的來決定我需要多少維度。我怎麼能知道哪些尺寸是主要組成部分?

[coeff, score, latent, t2] = princomp(fdata); 
cumsum(latent)./sum(latent); 

,並通過使用trainMatrix = _係數(:,1:10)(我選擇前10個維度),並newData =數據* trainMatrix,我能得到減少的數據。

但是我怎麼能找出哪個維度減少了,哪個維度保留了?

我的意思是,如果我有30個功能,可以在princomp之後弄清楚,我保留了哪10個特徵(原始數據的列索引)?

謝謝。

回答

1

新的維度對應於原始維度的線性組合,即每個新的特徵都是用所有舊的維度來表示的,並且具有不同的權重。

+0

我的意思是,有什麼辦法可以知道特徵值排序結果?例如,我可以確定哪個功能是主要功能。我可以使用coeff矩陣來確定哪個特徵具有較大的權重? – 2013-04-25 01:04:45

+0

@FreyaRen:PCA只是在一個新的座標系統中表達相同的數據,這樣第一個維度包含數據中最大的方差,下一個維度垂直並沿着最大的剩餘方差定位,依此類推......也許一個諸如此類的可視化可能會幫助您理解它:http://www.mathworks.com/help/stats/biplot.html。當然,你可以將維數截成第一個'k',然後選擇'k'來獲得足夠好的近似值,其中包含原始數據方差的95% – Amro 2013-04-25 13:15:15

相關問題