在选择主成分数(k)时,我们选择k为最小值,以便保留例如99%的方差。
但是,在Python Scikit学习中,我不是100%确定pca.explained_variance_ratio_ = 0.99等于“保留了99%的方差”吗?谁能启发?谢谢。
pca.explained_variance_ratio_ = 0.99
http://scikit- learn.org/stable/modules/generation/sklearn.decomposition.PCA.html#sklearn.decomposition.PCA
是的,您几乎是正确的。该pca.explained_variance_ratio_参数返回每个维度所解释的方差矢量。因此pca.explained_variance_ratio_[i] 给出仅由第i + 1维解释的方差。
pca.explained_variance_ratio_
pca.explained_variance_ratio_[i]
你可能想做pca.explained_variance_ratio_.cumsum()。这将返回一个向量x,该向量将返回由前i + 1个维度解释x[i]的 累积 方差。
pca.explained_variance_ratio_.cumsum()
x
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%的方差。
k=4