本文向您展示了如何使用scikit-learn工具来降低PCA维度 。内容简洁易懂,一定会让你眼前一亮 。希望通过这篇文章的详细介绍,你能有所收获 。1.sci工具包介绍-学习PC类 。在scikit-learn中,PCA相关的类都在sklearn.decomposition包中 。最常用的PCA类是sklearn.decomposition.PCA,我们将主要基于这个类来讲解如何使用它 。除了PCA类,最常用的PCA相关类是KernelPCA类,主要用于非线性数据的降维,需要内核技能 。因此,需要选择合适的核函数,并调整核函数的参数 。另一个常见的PCA相关类是IncrementalPCA,主要用于解决单台计算机的内存限制 。有时候我们的样本量可能是几百万,维度可能是几千,所以直接拟合数据可能会爆内存 。此时,我们可以通过使用IncrementalPCA类来解决这个问题 。IncrementalPCA首先将数据分成若干批,然后对每一批依次调用partial_fit函数,从而逐步获得样本的最终最优降维 。此外,还提供了SparsePCA和MiniBatchSparsePCA 。它们与上面提到的PCA的主要区别是使用了L1正则化,可以将很多非主成分的影响程度降低到0 。因此,当主成分分析降维时,我们只需要对那些相对主要的成分进行降维,从而避免了噪声等因素对我们主成分分析降维的影响 。SparsePCA和MiniBatchSparsePCA的区别在于,MiniBatchSparsePCA通过使用一些样本特征和给定的迭代次数来降低PCA的维数,从而解决了大样本下特征分解速度慢的问题 。当然代价是PCA降维的精度可能会降低 。SparsePCA和MiniBatchSparsePCA的使用需要调整L1正则化参数 。2.sklearn.decomposition.pca参数介绍 。下面主要基于sklearn.decomposition.PCA来说明如何使用scikit-learn进行PCA降维 。a类基本不需要参数调整 。一般来说,我们只需要指定我们需要降维到的维度,或者我们希望降维后的主成分方差占原始维度中所有特征方差和的比值阈值 。现在我们将介绍sklearn . declaration . PCA的主要参数:1)n_components:这个参数可以帮助我们指定PCA降维后的特征维数 。最常用的方法是直接指定要减少的维数,其中n_components是大于或等于1的整数 。当然,我们也可以指定主成分的方差和最小比例阈值,让PCA类根据样本特征的方差来决定降维的维数 。此时,n_components是一个介于(0,1)之间的数字 。当然,我们也可以将参数设置为‘MLE’ 。此时,PCA类会根据特征的方差分布,使用mle算法选择一定数量的主成分特征 。我们也可以使用默认值,即不输入n_components,其中n_components=min(样本数、特征数) 。2)美白:确定是否进行美白 。白化意味着在降维之后归一化数据的每个特征,使得方差为1 。一般来说,主成分分析本身的降维不需要白化 。如果PCA降维后有后续的数据处理动作,可以考虑白化 。默认值为False,即不执行白化 。3)svd_solver:是指定svd的方法 。由于特征分解是奇异值分解的特例,一般的主成分分析库都是基于奇异值分解的 。有4个可选值:{ auto , full , arpack , random } 。随机化一般适用于数据量大、数据维数多、主成分比例低的PCA降维 。它使用一些随机算法来加速奇异值分解 。Full是传统意义上的SVD,它使用了scipy库的相应实现 。arpack和随机化的适用场景相似 。不同的是,随机化使用scikit-learn自己的SVD实现,而arpack直接使用scipy库的稀疏SVD实现 。默认为Auto,即PCA类会在上述三种算法中自行权衡,选择合适的SVD算法进行降维 。一般来说,使用默认值就足够了 。除了这些输入参数,还有两个PCA类的成员值得关注 。首先是explained _ variance,表示降维后主成分的方差 。方差值越大,主成分越重要 。二是explained _ variation _ ratio _,表示降维后各主成分的方差值与总方差值的比值 。比值越大,主成分越重要 。主成分分析的例子 。让我们用一个例子来学习PCA在scikit-learn中的使用 。为了便于可视化,让大家有一个直观的了解,我们这里用三维数据来降维 。首先,我们生成随机数据并将其可视化 。代码如下:将numpy作为np导入将matplotlib.pyplot导入为plt来自mpl_toolkits.mplot3d import Axes3D
%matplotlib inline
推荐阅读
- 中华铅笔只是考试专用笔?不,它又又又联名了
- 如何使用Microsoft技术栈
- 诺基亚X40 Pro概念:6000mAh大电池+120Hz超窄曲面屏
- 如何使用sklearn进行数据挖掘
- 怎么使用UML
- 如何使用Ranger给HDFS授权
- 新能源汽车市场发展如此快,我国的电会不会成为瓶颈?
- 苹果手机怎么静音,苹果手机可以怎么样进行静音
- 樱桃树什么时候剪枝,樱桃冬剪什么时候可以开始修剪呢
