当在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)
编辑:我也发现了类似的问题:我发现了类似的问题:我发现了类似的问题:我发现了类似的问题:我发现了类似的问题:我发现了类似的问题:我发现了类似的问题:我发现了类似的问题:我发现了类似的问题:我发现了类似的问题:我发现了类似的问题:我发现了类似的问题:我发现了类似的问题:我发现了类似的问题:我发现了类似的问题:我发现了类似的问题:我发现了类似的问题:我发现了类似的问题:我发现了类似的问题:我发现了类似的问题:我发现了类似的问题:我发现了类似的问题:我发现了类似的问题:我发现了类似的问题:我发现了类似的问题:我发现了类似的问题:我发现了类似的问题:我发现了类似的问题:我发现了类似的问题:我发现了类似的问题:我发现了类似的问题:我发现了类似的问题:我发现了类似的问题。 我发现了类似的问题。在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上,列名。
pca.explared_variance_ratio_参数给你一个数组,里面有每个维度的方差。因此,我们可以把它放在Pandas pd上,列名。pca.explained_variance_ratio[i]
会给你i+1次方差的方差。
我不相信有办法将方差与列的 "名称 "相匹配,但在for循环中查看方差数组,并注意到方差为90%的索引,应该可以将索引与列名相匹配。