主成分分析法(PCA)与python实现

  • PCA 方法基本思想:
    将 n 维特征变量映射到 k 维上(k 维中每个变量都是原 n 维特征的线性组合,组合方式各不相同),这 k 个变量则是主成分。PCA的工作就是从原始的空间中按一定顺序找一组组相互正交的坐标轴,新的坐标轴的选择与数据本身是密切相关的

  • 易混点明晰
    需要明确的是,提取的主成分与原来的特征变量都不相同,每个主成分都是原来所有特征变量的一种组合方式,多个主成分就是多个组合方式。

  • 局限性
  1. 各成分的实际意义难解释。当原始特征变量数量较多时,每个主成分是实际意义解释要结合这些原始特征变量,故解释和计算变得较为复杂。
  2. 适用于线性降维,非线性降维时不适用。PCA方法只需要对协方差矩阵 X X T XX^T XXT 进行特征值分解,得到的特征值和特征向量即是变换矩阵 w w w的解和改主成分所解释的方差量,这样的降维方法是线性的降维方法,即从高维空间到低维空间的函数映射是线性的。


python 应用

import sklearn.decomposition

#设置参数
clf_pca = sklearn.decomposition.PCA(n_components=None, copy=True, whiten=False, svd_solver='auto',tol=0.0, iterated_power='auto', random_state=None)

#加入数据 X,进行主成分提取。
clf_pca.fit(data)
#这步不会直接出什么结果,想要什么数据需要用相应代码调用(见第二部分)

一、 sklearn-PCA模型中参数的解释:

  • n_components:主成分个数
    【default】n_components = None = min(n_samples, n_features) - 1
    【选项】:None | (int)
  • copy:是否复制数据,不复制(False)则覆盖原有数据
    【default】copy = True
    【选项】:True | False
  • whiten:白噪化处理
    【default】whiten=False
    【选项】:False | bool , optional
    False:不尽行白噪化处理,乘以n个样本的平方根,然后除以奇异值
    bool
    optional
  • svd_solver:奇异值分解器
    【default】svd_solver=‘auto’
    【选项】:str{‘auto’ | ‘full’ | ‘arpack’ | ‘randomized’} #要加单引号
    ’auto’:根据数据量自动选择 ‘full’ | ‘arpack’ | ‘randomized’
    ··········if 数据 > 500*500且提取数据解释度低于80% ,使用‘randomized’模式
    ··········else 其他情况则计算精准的SVD值
    ’full’:run exact full SVD calling the standard LAPACK solver via scipy.linalg.svd and select the components by postprocessing
    ’arpack’:run SVD truncated to n_components calling ARPACK solver via scipy.sparse.linalg.svds. It requires strictly 0 < n_components < min(X.shape)
    ’randomized’:采用Halko等人的方法进行随机化SVD
  • tol:当svd_solver为’arpack’时,容差的设定
    “Tolerance for singular values computed by svd_solver == ‘arpack’.”
    【default】tol=0.0
    【选项】(float)
  • iterated_power:当svd_solver为’randomized’时,迭代次数的设定
    【default】iterated_power=‘auto’
    【选项】 ‘auto’ | int >= 0
  • random_state:当svd_solver为‘arpack’ 或 ‘randomized’时,生成随机数的参数设定
    【default】random_state=None
    【选项】:int | RandomState instance | None , optional
    int:根据种子生成随机数
    RandomState instance:通过随机数发生器生成随机数
    None:通过np.random生成随机数

二、sklearn-PCA降维后相关数据调用与解释:

clf_pca.attributes(),其中 attributes 包括:

  • components_:array, shape (n_components, n_features)
    特征空间主轴,解释度最大变量的方向,即特征根最大的特征向量方向
    「python 代码」clf_pca.components_()

  • explained_variance_:array, shape (n_components,)
    「python 代码」clf_pca.explained_variance_()

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值