我现在关注下一个主题:How can I use PCA/SVD in Python for feature selection AND identification?
现在,我们使用PCA方法在Python中分解我们的数据集并使用sklearn.decomposition.PCA
使用属性components_
,我们得到所有组件。现在我们有非常相似的目标:只需要前几个组件(这部分不是问题),看看每个PCA组件的输入功能比例(知道哪些功能对我们来说非常重要)。怎么可能这样做?
另一个问题是,python lybrary有另一个主成分分析的实现吗?
答案 0 :(得分:6)
每个PCA组件的输入功能比例(知道哪些功能对我们来说非常重要)。怎么可能这样做?
components_
数组的形状为(n_components, n_features)
,因此components_[i, j]
已经为您提供了功能j
对组件i
的贡献的(已签名)权重。
如果您希望获得对组件i
有贡献的前3个功能的索引而不考虑该符号,您可以这样做:
numpy.abs(pca.component_[i]).argsort()[::-1][:3]
注意:[::-1]
表示法可以颠倒数组的顺序:
>>> import numpy as np
>>> np.array([1, 2, 3])[::-1]
array([3, 2, 1])
另一个问题是,python库是否有另一个实现 主成分分析?
PCA只是中心数据集的截断奇异值分解。如果您愿意,可以直接使用numpy.linalg.svd
。有关详细信息,请查看soure code of the scikit-learn implementation of PCA。