【发布时间】: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