数据规约中的主成分分析

本文参考《Python数据分析与挖掘实战》一书

数据规约是产生更小但保持原数据完整性的新数据集,在规约后的数据集上进行分析与挖掘将会更有效率.

在数据规约中,有很多方法对其实现,如合并属性,逐步向前选择,逐步向后选择,决策树归纳,主成分分析。

主成分分析是一种用于连续属性的数据降维方法,它构造了原始数据的一个正交变换,新空间的基底去除了原始空间基底下的数据的相关性,只需要用少数的新变量就能够解释原始数据中的大部分变异.

(主成分分析的计算:利用到了线性代数的一些知识与思想)

在Python中,主成分分析的函数位于Scikit-Learn下:

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

n_components:这个参数的类型是int或者string,意义是所要保留的主成分个数n。

后两个是布尔值

# -*- coding: utf-8 -*-
"""
Created on Fri Apr 13 08:43:10 2018
主成分分析降维代码
@author: Administrator
"""
import pandas as pd
inputfile='E:/principal_component.xls'
outputfile='E:/dimention_reducted.xls'
data=pd.read_excel(inputfile,header=None)
from sklearn.decomposition import PCA
pca=PCA()
pca.fit(data)
sss1=pca.components_ #返回模型中的各个特征向量
print(sss1)
print('**********************')
sss2=pca.explained_variance_ratio_#返回各个成分各自的方差百分比
print(sss2)

从运行的结果中可以看出,大约前四个主成分,已经占据了97.37%的贡献率,因此我们选择前三个主成分已经能够很好的表示出我们所要表达的主成分,这三个主成分之间是相互独立的,能够很好的代表要处理的样本.

 因此考虑到PCA模型中的n_componnets的参数,这里我们将其设置为3.

# -*- coding: utf-8 -*-
"""
Created on Fri Apr 13 08:43:10 2018
主成分分析降维代码
@author: Administrator
"""
import pandas as pd
inputfile='E:/principal_component.xls'
outputfile='E:/dimention_reducted.xls'
data=pd.read_excel(inputfile,header=None)
from sklearn.decomposition import PCA
pca=PCA(3) #根据上面的降维分析,这里我们将主成分数为3,进行传递
pca.fit(data)
low_d=pca.transform(data)#用于降低维度 transform()函数用于处理时降低维度
pd.DataFrame(low_d).to_excel(outputfile)
pca.inverse_transform(low_d)
#利用inverse_transform()来复原数据.

运行的结果为:


由此可见,我们把以前的多维的数据进行了降维处理,简化为三维,由上面的分析可知,这三维都是主成分,是相互独立的,且这三维数据就能够代表我们要处理的数据。提高了处理数据的效率.



猜你喜欢

转载自blog.csdn.net/qq_20880939/article/details/79922797