Sklearn.decomposition

  • 最常用的PCA:sklearn.decomposition.PCA
  • 主要用于非线性数据的降维的KernelPCA
  • 为解决单机内存限制的IncrementalPCA,有时候样本量可能是上百万+,维度可能也是上千,直接去拟合数据可能会让内存爆掉, 此时IncrementalPCA先将数据分成多个batch,然后对每个batch依次递增调用partial_fit函数,这样一步步的得到最终的样本最优降维。
  • SparsePCA,主要使用了L1正则化将很多非主要成分的影响度降为0,这样在PCA降维的时候仅仅需要对那些相对比较主要的成分进行PCA降维,避免了一些噪声之类的因素对PCA降维的影响。
  • MiniBatchSparsePCA,通过使用一部分样本特征和给定的迭代次数来进行PCA降维,以解决在大样本时特征分解过慢的问题,当然,代价就是PCA降维的精确度可能会降低。

sklearn.decomposition.PCA

  1. n_components:PCA降维后的特征维度数目。也可以指定主成分的方差和所占的最小比例阈值,让PCA类去根据样本特征方差来决定降维到的维度数。还可以将参数设置为"mle", 此时PCA类会用MLE算法根据特征的方差分布情况去选择一定数量的主成分特征来降维。默认n_components=min(样本数,特征数)。
  2. whiten :判断是否进行白化 (对降维后的数据的每个特征进行归一化,让方差都为1)。对于PCA降维本身一般不需要白化。如果PCA降维后继续数据处理可以考虑白化。默认值是False。
  3. svd_solver:即指定奇异值分解SVD的方法。{‘auto’, ‘full’, ‘arpack’, ‘randomized’}。
    randomized一般适用于数据量大,数据维度多同时主成分数目比例又较低的PCA降维,它使用了一些加快SVD的随机算法。 full则是传统意义上的SVD,使用了scipy库对应的实现。arpack和randomized的适用场景类似,区别是randomized使用的是scikit-learn自己的SVD实现,而arpack直接使用了scipy库的sparse SVD实现。
    默认是auto,即PCA类会在三种算法里面去权衡,选择一个合适的SVD算法来降维。

对于输入参数:

  • explained_variance_,它代表降维后的各主成分的方差值。方差值越大,则说明越是重要的主成分。
  • explained_variance_ratio_,它代表降维后的各主成分的方差值占总方差值的比例,这个比例越大,则越是重要的主成分。

你可能感兴趣的:(Machine,Learning)