【问题标题】:How to get the 1st Principal Component by PCA using Python?如何使用 Python 通过 PCA 获得第一个主成分?
【发布时间】:2013-07-28 19:37:57
【问题描述】:

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

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

我在莱斯大学找到了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 向量呢?

【问题讨论】:

  • 2D 输入数据的特征向量也必须是 2D

标签: python pca


【解决方案1】:

PCA 仅从 2d 数据中提供 2d vecs。

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

【讨论】:

  • 那么你确定myPCA.Wt[0] 是第一台电脑吗?我有一堆数据集。当我对每个数据集执行 PCA 并绘制每个数据集的第一个 PC 时,我总是只得到 4 个向量。我期待很多,因为我绘制了很多数据集的第一台 PC。这似乎是由于背后的一些未知的缩放...
  • 备份,查看数据集。我建议将所有向量与点云一起绘制到 Wt[0] 和 Wt[1](在 PCA 居中它们之后)。 (什么是N,什么是“一堆”?)
【解决方案2】:

【讨论】:

  • 请问它们有何相似之处?我在那里没有看到任何相似之处。我想要的很简单,只是第一个组件。我想这只是几行代码。请帮忙。 :)
【解决方案3】:

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

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

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

【讨论】:

    猜你喜欢
    • 2018-09-06
    • 2013-04-07
    • 1970-01-01
    • 2013-03-31
    • 2012-10-24
    • 2013-03-28
    • 2021-07-19
    • 1970-01-01
    相关资源
    最近更新 更多