python的PCA

PCA是主成分分析,用来降维,用少量的变量去解释大部分变量,使得原来相关的变成不相关的,独立的变量。

sklearn.decomposition.PCA(n_components=None,copy=True,whiten=False)

n_components保留下来的特征个数n,缺省是所有都保留。赋值为int就是要保留几个。赋值为‘mle’,自动选取,使得满足要求的方差满分比。
copy,True就是原来的数据不会改变,False原始数据会改变。
whiten,白化,使得每个特征有相同的方差。

#-*- coding: utf-8 -*-
#主成分分析 降维
import pandas as pd

#参数初始化
inputfile = 'E:/PythonMaterial/chapter4/demo/data/principal_component.xls'
outputfile = 'E:/PythonMaterial/chapter4/demo/data/dimention_reducted.xls' #降维后的数据

data = pd.read_excel(inputfile, header = None) #读入数据

from sklearn.decomposition import PCA

pca = PCA()
pca.fit(data)
a=pca.components_ #返回模型的各个特征向量
print a
b=pca.explained_variance_ratio_ #返回各个成分各自的方差百分比(贡献率)
print " "
print b
[[-0.56788461 -0.2280431  -0.23281436 -0.22427336 -0.3358618  -0.43679539
  -0.03861081 -0.46466998]
 [-0.64801531 -0.24732373  0.17085432  0.2089819   0.36050922  0.55908747
  -0.00186891 -0.05910423]
 [-0.45139763  0.23802089 -0.17685792 -0.11843804 -0.05173347 -0.20091919
  -0.00124421  0.80699041]
 [-0.19404741  0.9021939  -0.00730164 -0.01424541  0.03106289  0.12563004
   0.11152105 -0.3448924 ]
 [ 0.06133747  0.03383817 -0.12652433 -0.64325682  0.3896425   0.10681901
  -0.63233277 -0.04720838]
 [-0.02579655  0.06678747 -0.12816343  0.57023937  0.52642373 -0.52280144
  -0.31167833 -0.0754221 ]
 [ 0.03800378 -0.09520111 -0.15593386 -0.34300352  0.56640021 -0.18985251
   0.69902952 -0.04505823]
 [ 0.10147399 -0.03937889 -0.91023327  0.18760016 -0.06193777  0.34598258
   0.02090066 -0.02137393]]

[  7.74011263e-01   1.56949443e-01   4.27594216e-02   2.40659228e-02
   1.50278048e-03   4.10990447e-04   2.07718405e-04   9.24594471e-05]
pca=PCA(n_components='mle')
newData=pca.fit_transform(data)#用它来降低维度
pd.DataFrame(newData).to_excel(outputfile)#保存结果
pca.inverse_transform(newData)#必要时可以用inverse_transform()来复原数据
[[ -8.19133694e+00  -1.69040279e+01   3.90991029e+00   7.48106686e+00
    5.16142203e-01]
 [ -2.85274026e-01   6.48074989e+00  -4.62870368e+00   5.01369607e+00
   -1.65278935e+00]
 [  2.37073907e+01   2.85245701e+00  -4.96523096e-01  -1.57285727e+00
   -2.09522277e-01]
 [  1.44320264e+01  -2.29917325e+00  -1.50272151e+00  -1.30763061e+00
    1.54047215e+00]
 [ -5.43045680e+00  -1.00070408e+01   9.52086923e+00  -5.63779544e+00
   -9.21974743e-01]
 [ -2.41595590e+01   9.36428589e+00   7.26578565e-01  -1.98622218e+00
   -9.98528392e-01]
 [  3.66134607e+00   7.60198615e+00  -2.36439873e+00   4.21318409e-02
   -8.48196502e-02]
 [ -1.39676121e+01  -1.38912398e+01  -6.44917778e+00  -2.92916826e+00
   -1.91994563e-01]
 [ -4.08809359e+01   1.32568529e+01   4.16539368e+00   1.21239981e+00
    1.33543444e+00]
 [  1.74887665e+00   4.23112299e+00  -5.89809954e-01  -1.57477365e+00
    4.10612180e-01]
 [  2.19432196e+01   2.36645883e+00   1.33203832e+00   4.39763606e+00
   -2.61113312e-02]
 [  3.67086807e+01   6.00536554e+00   3.97183515e+00  -1.54808393e+00
    3.00572729e-01]
 [ -3.28750663e+00  -4.86380886e+00   1.00424688e+00   8.51193030e-01
   -6.27109498e-01]
 [ -5.99885871e+00  -4.19398863e+00  -8.59953736e+00  -2.44159234e+00
    6.09616105e-01]]
主成分分析(PCA)是一种常用的数据特征提取方法,可以用于数据预处理和可视化。在Python中,可以使用scikit-learn库中的PCA类来进行主成分分析。 首先,你需要确保已经安装了scikit-learn库。如果没有安装,可以通过以下命令在终端或命令提示符中进行安装: ``` pip install scikit-learn ``` 安装完成后,你可以按照以下步骤使用PCA: 1. 导入必要的库和模块: ```python from sklearn.decomposition import PCA import numpy as np ``` 2. 准备数据。假设你有一个名为data的数据集,其中包含n个样本和m个特征。可以将数据存储在一个numpy数组中: ```python data = np.array([[...], [...], ...]) ``` 3. 创建PCA对象,并选择要保留的主成分数量(可选): ```python pca = PCA(n_components=k) ``` 这里的k是你想要保留的主成分数量,通常是一个小于等于特征数量m的正整数。如果不指定n_components参数,则默认保留所有主成分。 4. 在数据上进行主成分分析: ```python pca.fit(data) ``` 5. 获取主成分分析的结果: ```python # 获取后的数据 reduced_data = pca.transform(data) # 获取主成分的方差解释比例 explained_variance_ratio = pca.explained_variance_ratio_ ``` `reduced_data`是经过后的数据,`explained_variance_ratio`是每个主成分解释的方差比例。 这就是使用Python进行PCA的基本步骤。你可以根据具体的需求进一步调整参数和使用其他相关函数。希望对你有帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值