我对PCA算法有点困惑,特别是在sklearn中实现的算法。
当我在使用4000X784
矩阵的sklearn分解中使用pca时
X.shape = (4000,784)
pca = PCA()
pca.fit(X)
pca.explained_variance_.shape
我得到了
(784,)
另一方面,当我使用另一个形状为(50,784)
(50,)
我做错了吗?
答案 0 :(得分:0)
让我们看看:
explain_variance_ratio _ 数组,[n_components] 每个所选组件解释的差异百分比。 k未设置,则存储所有分量,并且解释的方差之和等于1.0
在第一种情况下,您的数据包含4000个元素和748个组件,因此该属性为您提供了748个值的数组。如果这是正确的,那么您需要转置第二个数据集。
答案 1 :(得分:0)
PCA获得的组件的最大数量等于X矩阵的最小尺寸。
explain_variance_方法显示每个PCA 组件解释了多少数据差异。
这些数组形状是正常的,因为当您拥有的数据多于要素时,您将获得768个组件,但如果您有50行数据,则只有50个。