2013-03-12 39 views
19

我需要使用pca來標識具有某組數據的最高方差的維度。我正在使用scikit-learn的pca來完成它,但是我無法從pca方法的輸出中識別出具有最高方差的我的數據組件。請記住,我不想消除這些維度,只能識別它們。使用scikit-learn PCA找到具有最高方差的維度

我的數據組織成150行數據的矩陣,每個數據有4個維度。我做如下:

pca = sklearn.decomposition.PCA() 
pca.fit(data_matrix) 

當我打印pca.explained_variance_ratio_,輸出下令從最高到最低方差比率的數組,但它並沒有告訴我,他們所對應的尺寸從數據到(我試着改變我的矩陣上的列的順序,結果方差比數組是相同的)。根據scikit的文檔,他們應該是一個4×4的矩陣(我留下了原始數量的組件作爲參數爲pca)具有最大方差(特徵向量可能?)的分量,但沒有這些值參考的維度的符號。

轉換數據也沒有幫助,因爲維度以某種方式改變,我無法真正知道它們最初是哪一個。

有沒有什麼方法可以用scikit的pca獲取這些信息?謝謝

+1

的''components_''第一行是最大方差的方向,因爲文檔的狀態。我不完全確定什麼是不明確的。 ''explain_variance_ratio_''中的條目與''components_'''的行相對應。您是指「沒有符號表示這些值涉及哪個維度」? – 2013-03-13 11:01:55

+2

嗯,我的問題是,考慮到我的數據中有4個維度,並且我只想保留具有最高變化的2維的維度,我如何知道我的數據的哪些維度將保留如果我將PCA應用於n_components = 2。例如,假設我的數據的第二維和第四維具有最高的方差,但我不知道這一點。我想申請PCA,並有一些方法從結果中獲取這些信息。再次,我不需要轉換數據! – 2013-03-13 16:27:24

回答

17

返回的pca.explained_variance_ratio_是來自主要組件的差異。您可以使用它們來查找可以通過pca更好地轉換數據的維度(組件)數量。您可以使用該閾值(例如,您可以計算有多少偏差大於0.5等)。之後,您可以使用PCA轉換數據,使用等於主成分高於所用閾值的維數(分量)。縮小到這些尺寸的數據與原始數據中的尺寸數據不同。

您可以通過以下鏈接查看代碼:

http://scikit-learn.org/dev/tutorial/statistical_inference/unsupervised_learning.html#principal-component-analysis-pca

+2

幫助,但不能解決我的問題。當我用PCA轉換數據並選擇例如n_components = 2時,我需要知道我的原始數據的哪些維度將被消除。在這種情況下,將會消除2個維度,但知道哪個維度是我的問題。 – 2013-03-13 16:30:47

+13

PCA不會消除維度並使其他人免受原始數據的影響。它將您的數據轉換爲數據完全不同於原始數據的多個維度。 – mad 2013-03-13 17:15:15

+4

是的,你說得對。我一直在閱讀PCA,並且因爲你所說的話我想說的沒有道理。那麼,我接受你的答案!謝謝。 – 2013-03-13 17:21:20