数据预处理-数据规约-属性规约

原数据:

数据预处理-数据规约-属性规约_第1张图片

#-*- coding: utf-8 -*-

import pandas as pd
from sklearn.decomposition import PCA    #PCA主成分分析函数

inputfile = '../data/principal_component.xls'
outoutfile = './dimention_reducted.xls'    #降维后的数据

data = pd.read_excel(inputfile)

pca = PCA()
pca.fit(data)
pca.components_    #返回模型的各个特征向量
pca.explained_variance_ratio_    #返回各个成分各自的方差百分比; variance:方差; ratio:百分比

输出:pca.explained_variance_ratio_

[8.19870356e-01 1.24403427e-01 4.35654729e-02 1.01185073e-02
 1.44614964e-03 3.46741246e-04 1.51101937e-04 9.82436662e-05]

从上面的结果可以得到特征方程det有8个特征根,对应8个特征向量以及各个成分的方差百分比(也称贡献率),其中方差百分比越大,说明向量的权重越大。当选取前3个主成分时,累计的贡献率已达到98.78%(81.98%+12.44%+4.36%),说明选取前3个主成分进行计算已经相当不错了,因此可以重建PCA模型,设置n_components=3,计算出成分结果

#-*- coding: utf-8 -*-

import pandas as pd
from sklearn.decomposition import PCA    #主成分分析函数

inputfile = '../data/principal_component.xls'
outputfile = './dimention_reducted.xls'

data = pd.read_excel(inputfile)

pca = PCA(3)    #n_components=3表示PCA算法中所要保留的主成分个数为3,也即保留下来的特征个数为3
pca.fit(data)
low_d = pca.transform(data)    #用它来降低维度
print(low_d)

pd.DataFrame(low_d).to_excel(outputfile, index=False)    #保存结果

原始数据从8维降到了3维:

[[  1.05001221  -5.51748501  -5.91441212]
 [-22.99722874  -1.97512405  -0.20900558]
 [-13.89767671   3.37263948  -0.79992678]
 [  5.67710353  10.923606    11.64081709]
 [ 25.0534891   -6.9734989    0.85775793]
 [ -2.81280563  -6.07880095  -2.65207248]
 [ 14.1489874   16.43302809  -4.11709058]
 [ 41.83184701 -11.32960529   3.20277843]
 [ -1.00625614  -2.65780713  -0.27401457]
 [-21.33464558  -2.82555148   0.17044138]
 [-35.91396474  -5.99120963   3.78629425]
 [  3.6840302    5.68331179   1.42625345]
 [  6.51710808   6.93649707  -7.11782042]]

 

你可能感兴趣的:(数据预处理-数据规约-属性规约)