使用 PCA 降维同时保留百分比方差
Dimension reduction Using PCA while preserving variance in percentage
我正在尝试使用 PCA 减少 MNIST 数据集的维度。诀窍是,我必须在减小维度的同时保留一定百分比的方差(比如 80%)。我正在使用 Scikit 学习。我正在做 pca.get_variance ratio 但它给了我相同的值,但点位置不同,如 9.7 或 .97 或 .097。我也尝试过 pca.get_variance() 但我认为这不是答案。我的问题是如何确保我在保留一定方差百分比的情况下减少了维度?
如果您在不传递 n_components
参数的情况下应用 PCA,那么 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。
我正在尝试使用 PCA 减少 MNIST 数据集的维度。诀窍是,我必须在减小维度的同时保留一定百分比的方差(比如 80%)。我正在使用 Scikit 学习。我正在做 pca.get_variance ratio 但它给了我相同的值,但点位置不同,如 9.7 或 .97 或 .097。我也尝试过 pca.get_variance() 但我认为这不是答案。我的问题是如何确保我在保留一定方差百分比的情况下减少了维度?
如果您在不传递 n_components
参数的情况下应用 PCA,那么 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。