首页 > 解决方案 > 如何在数据集上应用 PCA 并打印相关特征

问题描述

我有一个 23 行 48 列的数据集。我正在应用 PCA 来减少列维度的数量。我使用以下代码示例,我发现只有 23 个是必需的功能:

#first
import numpy as np
from sklearn.decomposition import PCA
pca = PCA().fit(only_features)
plt.figure(figsize=(15,8))
plt.plot(np.cumsum(pca.explained_variance_ratio_))
plt.xlabel('number of components')
plt.ylabel('cumulative explained variance')

#second
df_pca = pca.fit_transform(X=only_features)
df_pca = pd.DataFrame(df_pca)
print(df_pca.shape)

但是,我想知道需要哪些功能。例如:如果原始数据集有列 Az 并由 PCA 减少,那么我想知道选择了哪些特征。

怎么做?

感谢帮助

标签: python-3.xpca

解决方案


归功于这个answer1 & answer2,Sklearn 的文档指出当您不指定n_components参数时保留的组件数量是min(n_samples, n_features). 所以min(23, 48) = 23这就是为什么你需要 23 在你的情况下。

解决方案 1:如果您Sklearn对此答案使用图书馆学分

  • 通过以下方式检查 PC 的差异:pca.explained_variance_ratio_
  • 通过以下方式检查 PC 的重要性:print(abs( pca.components_ ))
  • 使用自定义功能提取有关 PC 的更多信息,请参阅此答案

解决方案 2:如果您使用PCA文档

# Initialize
model = pca()
# Fit transform
out = model.fit_transform(X)

# Print the top features. The results show that f1 is best, followed by f2 etc
print(out['topfeat'])

#     PC      feature
# 0  PC1      f1
# 1  PC2      f2
# 2  PC3      f3
# 3  PC4      f4
# 4  PC5      f5
...

甚至您也可以通过以下方式制作 PC 图: model.plot()

图像


推荐阅读