首页 > 解决方案 > sklearn PCA 组件数_

问题描述

使用 sklearn 的 PCA:

m = np.random.randn(10, 5)
mod = PCA()
mod.fit_transform(m)

mod.components_将有 5 个组件,这对我来说很有意义,因为数据中有 5 个特征。

但是,如果m = np.random.randn(10, 20) mod.components_将包含 10 个组件

假设中的行mod.components_对应于特征的数量,那么第二个示例中不应该有 20 个组件吗?数据中的组件不应该与特征一样多吗?

标签: scikit-learnpca

解决方案


来自 scikit-learn PCA

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)

所以在第一种情况下min(10,5)=5,输出形状是(5,5),在第二种情况下min(10,20)=10,输出形状是(10,20)

from sklearn.decomposition  import *
import numpy as np
m = np.random.randn(10, 5)
mod = PCA()
mod.fit_transform(m)
print(mod.components_.shape) # (5, 5)


m = np.random.randn(10, 20)
mod = PCA()
mod.fit_transform(m)
print(mod.components_.shape) # (10, 20)

功能与组件:

假设您有一个数据集,包含 3 个名为(Age、Sex、Risk_Factor)的列和 500 行。在这里,特征的数量是 3 而不是 500。实例/观察/组件的数量是 500。每行如何可能是一个独特的特征,而在这里,Age、Sex 或 Risk_Factor 是独特的特征。希望一切都清楚。


推荐阅读