执行PCA并知道哪些列被保留[重复]

问题描述 投票:0回答:1

当在Python中对一个数据集执行PCA时,explain_variance_ratio_将向我们展示数据集中每个特征的不同方差。

我们如何知道哪个columnn对应于所产生的方差?

上下文。我正在做一个项目,我需要知道哪些成分给我们带来了PCA的90%的方差,这样我们就可以在以后进行逐步的特征选择。

from sklearn.decomposition import PCA
pcaObj = PCA(n_components=None)
X_train = pcaObj.fit_transform(X_train)
X_test = pcaObj.transform(X_test)
components_variance = pcaObj.explained_variance_ratio_
print(sum(components_variance))
print(components_variance)
python machine-learning pca
1个回答
0
投票

编辑:我也发现了类似的问题:我发现了类似的问题:我发现了类似的问题:我发现了类似的问题:我发现了类似的问题:我发现了类似的问题:我发现了类似的问题:我发现了类似的问题:我发现了类似的问题:我发现了类似的问题:我发现了类似的问题:我发现了类似的问题:我发现了类似的问题:我发现了类似的问题:我发现了类似的问题:我发现了类似的问题:我发现了类似的问题:我发现了类似的问题:我发现了类似的问题:我发现了类似的问题:我发现了类似的问题:我发现了类似的问题:我发现了类似的问题:我发现了类似的问题:我发现了类似的问题:我发现了类似的问题:我发现了类似的问题:我发现了类似的问题:我发现了类似的问题:我发现了类似的问题:我发现了类似的问题:我发现了类似的问题:我发现了类似的问题。 我发现了类似的问题。在PCA中用sklearn恢复explored_variance_ratio_的特征名。

答案比较丰富,解释比较详细。我已经把这个问题标记为重复,但暂时留下这个评论。

我相信你可以用以下方法获得数值。

pd.DataFrame(pcaObj.components_.T, index=X_train.columns)

如果X_train不是DataFrame而是numpy,把特征的名称以列表的形式传入,因为它们最初是以列表的形式出现的。

pd.DataFrame(pcaObj.components_.T, index=['column_a','column_b','column_c'], columns =['PC-1', 'PC-2'])

# column_x where the name of features

.componets_ 应该会返回你需要的值。我们可以把它们放在Pandas的pd上,列名。


0
投票

pca.explared_variance_ratio_参数给你一个数组,里面有每个维度的方差。因此,我们可以把它放在Pandas pd上,列名。pca.explained_variance_ratio[i] 会给你i+1次方差的方差。

我不相信有办法将方差与列的 "名称 "相匹配,但在for循环中查看方差数组,并注意到方差为90%的索引,应该可以将索引与列名相匹配。

© www.soinside.com 2019 - 2024. All rights reserved.