为什么 PCA 的数量发生了变化?
Why the number of PCA's changed?
我正在对数据集进行主成分分析。为了找到 PCA 的最佳数量,我使用特征数量作为 PCA 数量。但是,当我查看解释的方差比时,我注意到 PCA 的数量发生了变化。最初,数据集是 200 * 300,所以在使用 # of components = 300 进行 PCA 之后,我应该得到 300 个 PCA 及其相应的方差比,但我得到了 200。
代码在这里:
# Standardize the data
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
# Find the optimal number of PCA
#pca.explained_variance_ratio_
pca = PCA()
pca.fit(X_train_scaled)
ratios = pca.explained_variance_ratio_
我刚刚弄明白为什么了,所以下面会回答这个问题。
这实际上是due to the built-in setting of PCA in sklearn:
n_components : int, None or string Number of components to keep.
if n_components is not set all components are kept: n_components == min(n_samples, n_features)
因此,当我们的数据集的样本少于其特征时,PCA 会自动选择样本数作为成分数。