PCA上的组件数量受样本数量的限制

时间:2017-02-04 03:51:57

标签: python machine-learning scikit-learn pca

我使用sklearn做PCA,我用一些虚拟数据测试函数,当我有更多样本而不是我想要使用它的组件数时,它运行得很好:

from sklearn.decomposition import PCA
import numpy as np    

features_training = np.random.rand(10,30)
components = 8
pca = PCA(n_components=int(components))
X_pca = pca.fit_transform(features_training)

从上面的代码我得到一个10 * 8矩阵。

X_pca.shape
(10, 8)

但对于相同的数据,如果我尝试保留15个组件:

features_training = np.random.rand(10,30)
components = 15
pca = PCA(n_components=int(components))
X_pca = pca.fit_transform(features_training)

我没有获得10 * 15矩阵但是10 * 10矩阵。

X_pca.shape
(10, 10)

因此,组件的数量似乎不仅受到特征数量的限制,而且还受到样本数量的限制。那是为什么?

1 个答案:

答案 0 :(得分:1)

我无法告诉你PCA的实际工作情况。但在Scikit-learn documentation for PCA中,提到了foreach($ArrayOfIds as $id) { $posts[] = Post::findOrFail($id); }