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

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

主成分分析(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

  • 49
    点赞
  • 231
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
PCA(Principal Component Analysis)是一种常用的降维算法,可以用于对数据进行特征提取和数据可视化。下面是使用Python进行PCA主成分分析的步骤: 1. 首先,需要导入PCA模块,可以使用sklearn库中PCA类来实现。具体的导入方式如下: ```python from sklearn.decomposition import PCA ``` 2. 接下来,需要准备数据并进行标准化处理。标准化数据是为了保证数据的均值为0,方差为1,使得不同维度的特征具有相同的重要性。可以使用sklearn库中的StandardScaler类来进行标准化处理。具体的代码如下: ```python from sklearn.preprocessing import StandardScaler # 假设数据集存储在X变量中 scaler = StandardScaler() X_scaled = scaler.fit_transform(X) ``` 3. 然后,可以创建PCA对象,并调用其fit_transform方法对数据进行降维。在创建PCA对象时,可以指定主成分的数量(n_components参数),也可以根据样本特征方差来自动确定降维后的维度数(n_components=None)。具体的代码如下: ```python pca = PCA(n_components=2) # 指定降维后的特征维度数目为2 X_pca = pca.fit_transform(X_scaled) ``` 4. 最后,可以通过访问PCA对象的属性来获取降维后的特征向量和解释方差比。具体的代码如下: ```python # 获取降维后的特征向量 components = pca.components_ # 获取解释方差比 explained_variance_ratio = pca.explained_variance_ratio_ ``` 以上就是使用Python进行PCA主成分分析的基本步骤和代码示例。通过PCA降维,可以将高维数据映射到低维空间,以达到降低数据维度和减少冗余信息的目的。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值