sklearn.decomposition.PCA 主成分分析参数详解

官网:https://scikit-learn.org/stable/modules/generated/sklearn.decomposition.PCA.html

官网语法如下:

class sklearn.decomposition.PCA(n_components=None, *, copy=True, whiten=False, svd_solver='auto', tol=0.0, iterated_power='auto', random_state=None)

参数:

1.n_components:这个参数可以帮我们指定希望PCA降维后的特征维度数目。最常用的做法是直接指定降维到的维度数目,此时n_components是一个大于等于1的整数。当然,我们也可以指定主成分的方差和所占的最小比例阈值,让PCA类自己去根据样本特征方差来决定降维到的维度数,此时n_components是一个(0,1]之间的数。当然,我们还可以将参数设置为"mle", 此时PCA类会用MLE算法根据特征的方差分布情况自己去选择一定数量的主成分特征来降维。我们也可以用默认值,即不输入n_components,此时n_components=min(样本数,特征数)

2.copy:类型:bool,True或者False,缺省时默认为True。意义:表示是否在运行算法时,将原始训练数据复制一份。若为True,则运行PCA算法后,原始训练数据的值不会有任何改变,因为是在原始数据的副本上进行运算;若为False,则运行PCA算法后,原始训练数据的值会改,因为是在原始数据上进行降维计算

3.whiten :判断是否进行白化。所谓白化,就是对降维后的数据的每个特征进行归一化,让方差都为1.对于PCA降维本身来说,一般不需要白化。如果你PCA降维后有后续的数据处理动作,可以考虑白化。默认值是False,即不进行白化

4.svd_solver:即指定奇异值分解SVD的方法,由于特征分解是奇异值分解SVD的一个特例,一般的PCA库都是基于SVD实现的。有4个可以选择的值:{‘auto’, ‘full’, ‘arpack’, ‘randomized’}。randomized一般适用于数据量大,数据维度多同时主成分数目比例又较低的PCA降维,它使用了一些加快SVD的随机算法。 full则是传统意义上的SVD,使用了scipy库对应的实现。arpack和randomized的适用场景类似,区别是randomized使用的是scikit-learn自己的SVD实现,而arpack直接使用了scipy库的sparse SVD实现。默认是auto,即PCA类会自己去在前面讲到的三种算法里面去权衡,选择一个合适的SVD算法来降维。一般来说,使用默认值就够了

5.tol:svd_solver =='arpack'计算的奇异值的公差,float> = 0,可选(默认.0)

6.iterated_power: int> = 0或'auto',(默认为'auto'),svd_solver =='随机化'计算出的幂方法的迭代次数

属性:

1.components_ :特征空间中的主轴,表示数据中最大方差的方向。组件按排序 explained_variance_

2.explained_variance_:它代表降维后的各主成分的方差值。方差值越大,则说明越是重要的主成分

3.explained_variance_ratio_:它代表降维后的各主成分的方差值占总方差值的比例,这个比例越大,则越是重要的主成分

4.singular_values_:每个特征的奇异值,奇异值等于n_components 低维空间中变量的2范数

5.mean_:每个特征的均值

6.n_components_:即是上面输入的参数值

7.n_features_:训练数据中的特征数量

8.n_samples_:训练数据中的样本数

9.noise_variance_:等于X协方差矩阵的(min(n_features,n_samples)-n_components)个最小特征值的平均值

方法:

fit(X [,y])用X拟合模型。
fit_transform(X [,y])使用X拟合模型,并在X上应用降维。
get_covariance()用生成模型计算数据协方差。
get_params([深])获取此估计量的参数。
get_precision()用生成模型计算数据精度矩阵。
inverse_transform(X)将数据转换回其原始空间。
score(X [,y])返回所有样本的平均对数似然率。
score_samples(X)返回每个样本的对数似然。
set_params(**参数)设置此估算器的参数。
transform(X)对X应用降维。

posted on 2020-09-07 17:01  小小喽啰  阅读(4656)  评论(0编辑  收藏  举报