2

我有一组以n*2矩阵形式呈现的二维向量。

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

我从莱斯大学找到了一份相当详细的文档

基于此,我导入了数据并做了以下操作:

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 向量呢?

4

3 回答 3

1

PCA 仅从 2d 数据中给出 2d vecs。

看看维基百科PCA中的图片:
从像这样的点云(dataMatrix)开始,使用matplotlib.mlab.PCA,
myPCA.Wt[0]是第一台 PC,图片中的长 PC。

于 2013-07-31T08:55:42.440 回答
0

类似的问题:Python中的主成分分析

或者你可以看看 scikits 学习:http ://scikit-learn.org/0.13/modules/generated/sklearn.decomposition.PCA.html

于 2013-07-31T08:44:15.270 回答
0

从您的示例中您正在使用的示例并不明显,matplotlib.mlab.PCA但如果是这样,文档说明返回的对象具有属性Wt,即“将 numdims 点或数组投影到 PCA 空间的权重向量”。

PCA按降序返回特征值(您可以通过查看返回对象的fracs属性来判断)。所以第一个主成分(第一个特征向量)将是 的第一行Wt

正如@denis 所指出的,您的特征向量将是 2D(不是 3D),因为您的输入数据是 2D。

于 2013-07-31T13:40:00.200 回答