我有一组以n*2
矩阵形式呈现的2D矢量。
我希望得到第一个主成分,即指示方差最大的方向的矢量。
我在莱斯大学找到了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矢量?
答案 0 :(得分:1)
PCA仅从2d数据中提供2d vecs。
查看维基百科PCA中的图片:
从这样的点云(dataMatrix)开始,并使用matplotlib.mlab.PCA
,
myPCA.Wt[0]
是第一台PC,图中的长PC。
答案 1 :(得分:0)
类似的问题:Principal component analysis in Python
或者你可以看看scikits了解:http://scikit-learn.org/0.13/modules/generated/sklearn.decomposition.PCA.html
答案 2 :(得分:0)
您的示例中使用matplotlib.mlab.PCA
并不明显,但如果是,documentation表示返回的对象具有属性 Wt ,即“用于将numdims点或数组投影到PCA空间中的权重向量“。
PCA
以降序返回特征值(您可以通过查看返回对象的 fracs 属性来判断)。所以第一个主成分(第一个特征向量)将是Wt
的第一行。
如@denis所述,由于您的输入数据是2D,因此您的特征向量将是2D(而不是3D)。