我现在关注下一个主题:如何在 Python 中使用 PCA/SVD 进行特征选择和识别? 现在,我们使用 PCA 方法在 Python 中分解我们的数据集,并为此使用sklearn.decomposition.PCA
通过使用属性components_
我们得到所有组件。现在我们有非常相似的目标:只想取前几个分量(这部分不是问题),看看每个 PCA 分量的输入特征比例是多少(要知道,哪些特征对我们来说非常重要)。怎么可能呢? 另一个问题是,python lybrary是主成分分析的另一个实现吗?
输入特征比例具有每个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
。有关详细信息,请查看PCA的scikit-learn实现的源代码。