我正在尝试使用带有以下代码的 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) 的 newData(10 个 10 维样本)。我对 PCA 的理解是它应该产生形状为 (10,32) 的 newData,但这里不是这种情况。将输入数据 (arr) 更改为 50 个样本,我得到了形状为 (50,32) 的 newData,这是我所期望的。如果该值小于给定的 n_components (在这种情况下为 32),sklearn 似乎会自动将 n_components 设置为 min(num_samples,num_dimension)。
谁能告诉我这样做的目的是什么?