具体介绍sklearn库中:主成分分析(PCA)的参数、属性、方法

Ann ·
更新时间:2024-11-11
· 730 次阅读

转载请注明出处:https://editor.csdn.net/md?articleId=104839136

文章目录主成分分析(PCA)Sklearn库中PCA一、参数说明(Parameters)二、属性(Attributes)三、方法(Methods)四、示例(Sample)五、参考资料(Reference data) 主成分分析(PCA)

主成分分析(Principal components analysis,以下简称PCA)的思想是将n维特征映射到k维上(k<n),这k维是全新的正交特征(新的坐标系)。这k维特征称为主元,是重新构造出来的k维特征,而不是简单地从n维特征中去除其余n-k维特征。实现这思想的方法就是降维,用低维的数据去代表高维的数据,也就是用少数几个变量代替原有的数目庞大的变量,把重复的信息合并起来,既可以降低现有变量的维度,又不会丢失重要信息的思想。
在这里插入图片描述
关于降维的原理和推导过程在这里就不在赘述了,可以参考本文后面提供的参考资料。

这里主要针对用Sklearn库里的PCA,并解释里面的参数、属性、方法。

Sklearn库中PCA 一、参数说明(Parameters) sklearn.decomposition.PCA(n_components=None, copy=True, whiten=False)

1. n_components:int, float, None or str
意义 :代表返回的主成分的个数,也就是你想把数据降到几维
n_components=2 代表返回前2个主成分
0 < n_components < 1代表满足最低的主成分方差累计贡献率
n_components=0.98,指返回满足主成分方差累计贡献率达到98%的主成分
n_components=None,返回所有主成分
n_components=‘mle’,将自动选取主成分个数n,使得满足所要求的方差百分比

2. copy : bool类型, False/True 默认是True
意义在运行的过程中,是否将原数据复制。由于你在运行的过程中,是在降维,数据会变动。
这copy主要影响的是,调用显示降维后的数据的方法不同。
copy=True时,直接 fit_transform(X),就能够显示出降维后的数据。
copy=False时,需要 fit(X).transform(X) ,才能够显示出降维后的数据。
(fit_transform()方法后面会讲到!)

3. whiten:bool类型,False/True 默认是False
意义白化。白化是一种重要的预处理过程,其目的就是降低输入数据的冗余性,使得经过白化处理的输入数据具有如下性质:(i)特征之间相关性较低;(ii)所有特征具有相同的方差。

4. svd_solver:str类型,str {‘auto’, ‘full’, ‘arpack’, ‘randomized’}
意义定奇异值分解 SVD 的方法。
svd_solver=auto:PCA 类自动选择下述三种算法权衡。
svd_solver=‘full’:传统意义上的 SVD,使用了 scipy 库对应的实现。
svd_solver=‘arpack’:直接使用 scipy 库的 sparse SVD 实现,和 randomized 的适用场景类似。
svd_solver=‘randomized’:适用于数据量大,数据维度多同时主成分数目比例又较低的 PCA 降维。

二、属性(Attributes)

1. components_:返回最大方差的主成分。
2. explained_variance_:它代表降维后的各主成分的方差值。方差值越大,则说明越是重要的主成分。
3. explained_variance_ratio_:它代表降维后的各主成分的方差值占总方差值的比例,这个比例越大,则越是重要的主成分。(主成分方差贡献率)
4. singular_values_:返回所被选主成分的奇异值。
实现降维的过程中,有两个方法,一种是用特征值分解,另一种用奇异值分解,前者限制比较多,需要矩阵是方阵,而后者可以是任意矩阵,而且计算量比前者少,所以说一般实现PCA都是用奇异值分解的方式。
5. mean_:每个特征的经验平均值,由训练集估计。
6. n_features_:训练数据中的特征数。
7. n_samples_:训练数据中的样本数量。
8. noise_variance_:噪声协方差

三、方法(Methods)

1. fit(self, X,Y=None) #模型训练,由于PCA是无监督学习,所以Y=None,没有标签。
如:

model=decomposition.PCA(n_components=2) model.fit(X)

2. fit_transform(self, X,Y=None)#:将模型与X进行训练,并对X进行降维处理,返回的是降维后的数据。
如:

X_new=model.fit_transform(X)

3. get_covariance(self)#获得协方差数据
4. get_params(self,deep=True)#返回模型的参数
如:

print(model.get_params()) 输出:{'copy': True, 'iterated_power': 'auto', 'n_components': 3, 'random_state': None, 'svd_solver': 'auto', 'tol': 0.0, 'whiten': False}

5. get_precision(self)#计算数据精度矩阵( 用生成模型)
6. inverse_transform(self, X)#将降维后的数据转换成原始数据,但可能不会完全一样
7. score(self, X, Y=None)#计算所有样本的log似然平均值
8. transform(X)#将数据X转换成降维后的数据。当模型训练好后,对于新输入的数据,都可以用transform方法来降维。

四、示例(Sample) import numpy as np from sklearn import decomposition,datasets iris=datasets.load_iris()#加载数据 X=iris['data'] model=decomposition.PCA(n_components=2) model.fit(X) X_new=model.fit_transform(X) Maxcomponent=model.components_ ratio=model.explained_variance_ratio_ score=model.score(X) print('降维后的数据:',X_new) print('返回具有最大方差的成分:',Maxcomponent) print('保留主成分的方差贡献率:',ratio) print('所有样本的log似然平均值:',score) print('奇异值:',model.singular_values_) print('噪声协方差:',model.noise_variance_) g1=plt.figure(1,figsize=(8,6)) plt.scatter(X_new[:,0],X_new[:,1],c='r',cmap=plt.cm.Set1, edgecolor='k', s=40) plt.xlabel('x1') plt.ylabel('x2') plt.title('After the dimension reduction') plt.show() 五、参考资料(Reference data)

主成分分析(Principal components analysis)-最大方差解释:
https://www.cnblogs.com/jerrylead/archive/2011/04/18/2020209.html
主成分分析(Principal components analysis)-最小平方误差解释:
https://www.cnblogs.com/jerrylead/archive/2011/04/18/2020216.html
机器学习(七)白化whitening:
https://blog.csdn.net/hjimce/article/details/50864602?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task
scikit-learn源码之降维–PCA:
https://zhuanlan.zhihu.com/p/53268659
Sklearn中的PCA:
https://scikit-learn.org/stable/modules/generated/sklearn.decomposition.PCA.html?highlight=pca#sklearn.decomposition.PCA.set_params


作者:SGangX



方法 属性 参数 主成分分析 pca

需要 登录 后方可回复, 如果你还没有账号请 注册新账号
相关文章