我正在尝试使用 PCA 减少 MNIST 数据集的维度。技巧是,我必须在减小维度的同时保留一定百分比的方差(比如 80%)。我正在使用 Scikit 学习。我正在执行 pca.get_variance ratio 但它为我提供了具有不同点位置的相同值,例如 9.7 或 .97 或 .097。我也尝试过 pca.get_variance() 但我认为这不是答案。我的问题是如何确保我在保留一定方差百分比的情况下减少了维度?
最佳答案
如果您应用 PCA 而不传递 n_components
参数,则 PCA 对象的 explained_variance_ratio_
属性将为您提供所需的信息。该属性指示与相应特征向量相关的总方差的分数。这是直接从当前稳定版 PCA 复制的示例文档:
>>> 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)
PCA(copy=True, n_components=2, whiten=False)
>>> print(pca.explained_variance_ratio_)
[ 0.99244... 0.00755...]
在您的情况下,如果将 np.cumsum
应用于 explained_variance_ratio_
属性,则需要保留的主成分数量对应于第一个元素的位置np.cumsum(pca.explained_variance_ratio_)
中的值大于或等于 0.8。
关于python-3.x - 使用 PCA 降维,同时保留百分比方差,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37344487/