【问题标题】:PCA: Get Top 20 Most Important DimensionsPCA:获取前 20 个最重要的维度
【发布时间】:2017-07-06 17:31:42
【问题描述】:

我正在做一些机器学习并尝试使用 PCA 找到重要的维度。这是我到目前为止所做的:

from sklearn.decomposition import PCA
pca = PCA(n_components=0.98)
X_reduced = pca.fit_transform(df_normalized)
X_reduced.shape
(2208, 1961)

因此,在运行 PCA 后,我有 2,208 行,包含 1,961 列,这解释了我的数据集中 98% 的方差。但是,我担心解释力最小的维度实际上可能会损害我的预测尝试(我的模型可能只是在数据中发现虚假的相关性)。

SciKit-Learn 是否按重要性对列进行排序?如果是这样,我可以这样做:

X_final = X_reduced[:, :20],对吗?

感谢您的帮助!

【问题讨论】:

    标签: python pca


    【解决方案1】:

    From the documentation 表示输出按解释方差排序。所以,是的,你应该能够按照你的建议去做,只需将前 N 维作为输出。您还可以打印输出变量explained_variance_(甚至explained_variance_ratio_)以及components_ 输出以仔细检查顺序。

    文档中的示例显示了如何访问解释的差异量:

    import numpy as np
    from sklearn.decomposition import PCA
    X = np.array([[-1, -1], [-2, -1], [-3, -2], [1, 1], [2, 1], [3, 2]])
    pca = PCA(n_components=2)
    pca.fit(X)
    
    
    print(pca.explained_variance_ratio_) 
    

    所以在您的情况下,您可以使用 print(X_reduced.components_)print(X_reduced.explained_variance_ratio_) 来获得两者。然后,在找到 N 解释 y% 的方差后,只需从 X_reduced.components_ 中取出您想要的第一个 N。

    注意!在您建议的解决方案中,您混合了尺寸。 X_reduced.components_[n_components, n_features] 的形状,所以例如,如果你想要前 20 个组件,我相信你应该使用 X_reduced.components[:20, :]

    【讨论】:

      猜你喜欢
      • 2017-11-11
      • 2013-11-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-15
      • 2018-12-20
      • 1970-01-01
      • 2016-08-18
      相关资源
      最近更新 更多