【问题标题】:Python: is it possible to do PCA with a vector with multiple dimensions?Python:可以用多维向量做 PCA 吗?
【发布时间】:2020-02-02 21:18:04
【问题描述】:

我想尝试使用here 描述来做PCA

from sklearn.decomposition import PCA
X = np.array([[-1, -1], [-2, -1], [-3, -2], [1, 1], [2, 1], [3, 2]])
pca = PCA(n_components=2)
pca.fit(X)
PCA(n_components=2)

是否可以对具有不同维度的数组执行相同的操作,例如以下?

X = np.array([[-1, -1], [-2, -1], [-3, -2, 3], [1, 1], [2, 1], [3, 2, 3]])

如果我尝试我会收到以下错误:

pca = PCA(n_components=2)
pca.fit(X)
ValueError: setting an array element with a sequence.

【问题讨论】:

  • 您在 X 的定义中有点滥用 NumPy。您最终会得到 object 的 dtype,而不是整数数组。如果您打印X 的值,您将看到它是一个列表对象数组。我不清楚(可能还有 sklearn)你希望第三维的值在 2 元素子列表中是什么。您应该清理数据,使所有维度都相同。
  • 我相信 PCA 和类似的方法都假设向量的长度相等。相关,您为什么要这样做?我不知道有什么声音分析方法是可取的。
  • @MattL。我想对具有不同维度的数据进行降维,例如上面的示例
  • 对,但是降维是对长度相同的向量进行的。这个想法是将苹果与苹果进行比较,而不是将苹果与松鼠或椰子进行比较。为什么您的某些向量的维度比其他向量少?
  • 只是要清楚...... Numpy 中的任何东西都不能很好地与这样的数组一起工作。这不仅仅是 PCA。即使X + 1 也会引发异常。

标签: python scikit-learn pca


【解决方案1】:

不,鉴于主成分分析的数学背景,这是不可能的。 PCA是高维空间中的一种旋转。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-01-21
    • 1970-01-01
    • 1970-01-01
    • 2017-08-19
    • 1970-01-01
    • 1970-01-01
    • 2017-11-30
    相关资源
    最近更新 更多