具体介绍sklearn库中:主成分分析(
具体介绍
转载请注明出处:https://editor.csdn.net/md?articleId=104839136
库中:主成分分析(PCA)的参数、属性、方法
)的参数、属性、方法
文章目录主成分分析(PCA)Sklearn库中PCA一、参数说明(Parameters)二、属性(Attributes)三、方法(Methods)四、示例
文章目录
(Sample)五、参考资料(Reference data)
主成分分析(PCA))
主成分分析(
主成分分析(Principal components analysis,以下简称PCA)的思想是将n维特征映射到k维上(k
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)所有特征具有相同的方差。
定奇异值分解 SVD 的方法。
的方法。
4. svd_solver::str类型,类型,str {‘auto’, ‘full’, ‘arpack’, ‘randomized’}
意义意义:定奇异值分解
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