次のコードで Sklearn PCA を使用して、5000-D データを 32-D に削減しようとしています。
from sklearn.decomposition import PCA
import numpy as np
arr = np.random.randint(1,10,(10,5000)).astype(float)
pca = PCA(n_components=32)
newData = pca.fit_transform(arr)
print newData.shape
上記のコードで、形状 (10,10) (10 次元の 10 サンプル) の newData を取得しました。PCA について私が理解しているのは、形状 (10,32) の newData になるはずですが、ここではそうではないということです。入力データ (arr) を 50 サンプルに変更すると、期待どおりの形状 (50,32) の newData が得られました。その値が指定された n_components (この場合は 32) より小さい場合、sklearn は自動的に n_components を min(num_samples,num_dimension) に設定するようです。
これの目的は何ですか?