python-3.x - 使用 PCA 降维,同时保留百分比方差

标签 python-3.x machine-learning scikit-learn pca

我正在尝试使用 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/

相关文章:

python - 使用 Numpy 权重矩阵初始化 TensorFlow CNN 模型

python - sklearn - 如何获得概率而不是标签?

python - 我如何使用 scikit learn 迭代 python 中的 'list' 模型?

python - 如何停止在 Django 2.* 管理面板中记录最近的操作和历史记录?

python Tkinter focus_set() 在捕获按键事件时无法正常工作

machine-learning - 用于 Web 应用程序的 SVM

python - 绘制多类的 ROC 但出现错误 'too many indices'

python - 有没有办法打印 __init__ 方法中创建的对象的所有参数?

python-3.x - 如何避免 wxPython 中弃用的方法?

python - 混淆矩阵生成 a 和 b 作为标签,但不是我需要的