Python scikit学习pca.explained_variance_ratio_截止

发布于 2021-01-29 15:07:14

在选择主成分数(k)时,我们选择k为最小值,以便保留例如99%的方差。

但是,在Python Scikit学习中,我不是100%确定pca.explained_variance_ratio_ = 0.99等于“保留了99%的方差”吗?谁能启发?谢谢。

  • Python Scikit学习PCA手册在这里

http://scikit-
learn.org/stable/modules/generation/sklearn.decomposition.PCA.html#sklearn.decomposition.PCA

关注者
0
被浏览
201
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    是的,您几乎是正确的。该pca.explained_variance_ratio_参数返回每个维度所解释的方差矢量。因此pca.explained_variance_ratio_[i]
    给出仅由第i + 1维解释的方差。

    你可能想做pca.explained_variance_ratio_.cumsum()。这将返回一个向量x,该向量将返回由前i +
    1个维度解释x[i]累积 方差。

    import numpy as np
    from sklearn.decomposition import PCA
    
    np.random.seed(0)
    my_matrix = np.random.randn(20, 5)
    
    my_model = PCA(n_components=5)
    my_model.fit_transform(my_matrix)
    
    print my_model.explained_variance_
    print my_model.explained_variance_ratio_
    print my_model.explained_variance_ratio_.cumsum()
    

    [ 1.50756565  1.29374452  0.97042041  0.61712667  0.31529082]
    [ 0.32047581  0.27502207  0.20629036  0.13118776  0.067024  ]
    [ 0.32047581  0.59549787  0.80178824  0.932976    1.        ]
    

    因此,在我的随机玩具数据中,如果我选择,k=4我将保留93.3%的方差。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看