作者热门文章
- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
在选择主成分的数量 (k) 时,我们选择 k 作为最小值,以便保留例如 99% 的方差。
但是,在 Python Scikit 学习中,我不能 100% 确定 pca.explained_variance_ratio_ = 0.99
是否等于“保留了 99% 的方差”?有人能解惑吗?谢谢。
最佳答案
是的,你几乎是对的。 pca.explained_variance_ratio_
参数返回每个维度解释的方差向量。因此 pca.explained_variance_ratio_[i]
给出了仅由 i+1 维解释的方差。
您可能想要执行 pca.explained_variance_ratio_.cumsum()
。这将返回一个向量 x
使得 x[i]
返回由前 i+1 个维度解释的 累积 方差。
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% 的方差。
关于Python scikit 学习 pca.explained_variance_ratio_cutoff,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32857029/
在选择主成分的数量 (k) 时,我们选择 k 作为最小值,以便保留例如 99% 的方差。 但是,在 Python Scikit 学习中,我不能 100% 确定 pca.explained_varian
我是一名优秀的程序员,十分优秀!