无法理解sklearn.decomposition.PCA的输出

时间:2013-12-05 22:09:43

标签: machine-learning pca scikit-learn

我对PCA算法有点困惑,特别是在sklearn中实现的算法。

当我在使用4000X784矩阵的sklearn分解中使用pca时

X.shape = (4000,784)

pca = PCA()
pca.fit(X)
pca.explained_variance_.shape

我得到了

(784,)

另一方面,当我使用另一个形状为(50,784)

的数据集时
(50,)

我做错了吗?

2 个答案:

答案 0 :(得分:0)

让我们看看:

explain_variance_ratio _ 数组,[n_components] 每个所选组件解释的差异百分比。 k未设置,则存储所有分量,并且解释的方差之和等于1.0

在第一种情况下,您的数据包含4000个元素和748个组件,因此该属性为您提供了748个值的数组。如果这是正确的,那么您需要转置第二个数据集。

答案 1 :(得分:0)

PCA获得的组件的最大数量等于X矩阵的最小尺寸。

explain_variance_方法显示每个PCA 组件解释了多少数据差异。

这些数组形状是正常的,因为当您拥有的数据多于要素时,您将获得768个组件,但如果您有50行数据,则只有50个。