2017-02-04 4 views
0

私は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 1。

X_pca.shape 
(10, 10) 

したがって、コンポーネントの数は機能の数だけでなくサンプルの数によっても制限されているようです。何故ですか?

答えて

1

実際にPCAがどのように機能するかについては言えません。しかし、Scikit-learn documentation for PCAには、そのことが言及されていますactual n_components = min(n_samples, specified n_components)

関連する問題