2013-07-29 19 views
0

我有一套以n*2矩陣形式呈現的2D矢量。如何通過使用Python的PCA獲得第一主組件?

我希望得到第一個主分量,即表示方差最大的方向的向量。

我發現這個a rather detailed documentation萊斯大學。

在此基礎上,我已導入的數據,並做了以下:

import numpy as np 

dataMatrix = np.array(aListOfLists) # Convert a list-of-lists into a numpy array. aListOfLists is the data points in a regular list-of-lists type matrix. 
myPCA = PCA(dataMatrix) # make a new PCA object from a numpy array object 

然後,我怎麼可能獲得3D矢量,即第1主成分?

+0

2D輸入數據的特徵向量**也必須是2D **。 –

回答

1

PCA只給出了從2D數據2D血管內皮細胞。

看看維基百科PCA圖片:
開始點雲(數據矩陣)那樣,用matplotlib.mlab.PCA
myPCA.Wt[0]是第一臺PC,長在一個畫面。

+0

那麼你確定'myPCA.Wt [0]'是第一臺PC嗎?我有一堆數據集。當我對每個數據集執行PCA並繪製每個數據集的第一臺PC時,我總是隻有4個矢量。我期待很多,因爲我繪製了很多數據集的第一臺PC。這似乎是由於**一些未知的縮放比例** ...... –

+0

備份*查看數據集。我建議將所有矢量繪製到Wt [0]和Wt [1]以及點雲(在PCA居中之後)。 (什麼是N,什麼是「一堆」?) – denis

0

它不是從你的例子,你正在使用matplotlib.mlab.PCA,但如果是這樣,documentation指出,返回的對象有一個屬性重量,這是「對投影進行NumDims點或數組PCA的權重向量明顯空間」。

PCA按降序返回特徵值(你可以通過查看壓裂返回對象的屬性告訴)。所以第一個主成分(第一個特徵向量)將是Wt的第一行。

正如@denis指出的,你的特徵向量將是2D(未3D),因爲輸入數據是2D。