1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > 主成分分析原理及Python实现

主成分分析原理及Python实现

时间:2020-06-15 19:19:00

相关推荐

主成分分析原理及Python实现

主成分分析(Principal Components Analysis, PCA)是一种常用的数据分析手段,是图像处理过程中常用到的降维方法。对于一组不同维度之间可能存在线性相关关系的数据,PCA能够把这组数据通过正交变换变成各个维度之间线性无关的数据,通过剔除方差小的那些维度上的数据,达到数据降维的目的。

PCA从原始变量出发,通过旋转变化(即原始变量的线性组合)构建出一组新的,互不相关的新变量,这些变量尽可能多的解释原始数据之间的差异性(即数据内在的结构),他们就成为原始数据的主成分。由于这些变量不相关,因此他们无重叠的各自解释一部分差异性。依照每个变量解释时差异性大小排序,他们成为第一主成分,第二主成分,以此类推。

PCA的思想是将n维特征映射到k维上(k<n),这k维特征称为主元(主成分),是旧特征的线性组合,这些线性组合最大化样本方差,尽量使用新的k个特征互不相关。这k维是全新的正交特征,是重新构造出来的k维特征,而不是简单地从n维特征中取出其余n-k维特征。

下面说一下PCA降维的算法步骤。

设有m条n维数据:

1) 将原始数据按列组成n行m列矩阵X

2)将X的每一行(代表一个属性字段)进行零均值化(去平均值),即减去这一行的均值

3)求出协方差矩阵

4)求出协方差矩阵的特征值及对应的特征向量

5)将特征向量按对应特征值大小从上到下按行排列成矩阵,取前k行组成矩阵P(保留最大的k各特征向量)

6)Y=PX 即为降维到K维后的数据

PCA算法的主要优点:

1)仅仅需要以方差衡量信息量,不受数据集以外的因素影响

2)各主成分之间正交,可消除原始数据成分间的互相影响的因素

3)计算方法简单,主要运算是特征值分解,易于实现

PCA算法的主要缺点:

1)主成分各个特征维度的含义具有一定的模糊性,不如原始样本特征的解释性强

2)方差小的非主成分也可能含有对样本差异的重要信息,因降维丢弃可能对后续数据处理有影响

利用Python实现主成分降维代码:

from numpy import *def loadDataSet(fileName, delim='\t'):fr = open(fileName)stringArr = [line.strip().split(delim) for line in fr.readlines()]datArr = [map(float,line) for line in stringArr]return mat(datArr)def pca(dataMat, topNfeat=999999):meanVals = mean(dataMat, axis=0)DataAdjust = dataMat - meanVals #减去平均值covMat = cov(DataAdjust, rowvar=0)eigVals,eigVects = linalg.eig(mat(covMat)) #计算特征值和特征向量#print eigValseigValInd = argsort(eigVals)eigValInd = eigValInd[:-(topNfeat+1):-1] #保留最大的前K个特征值redEigVects = eigVects[:,eigValInd] #对应的特征向量lowDDataMat = DataAdjust * redEigVects#将数据转换到低维新空间reconMat = (lowDDataMat * redEigVects.T) + meanVals #重构数据,用于调试return lowDDataMat, reconMat

import matplotlibimport matplotlib.pyplot as pltdataMat = loadDataSet('testSet.txt')lowDMat, reconMat = pca(dataMat,1)print "shape(lowDMat): ",shape(lowDMat)fig = plt.figure()ax = fig.add_subplot(111)ax.scatter(dataMat[:,0].flatten().A[0],dataMat[:,1].flatten().A[0],marker='^',s=90)ax.scatter(reconMat[:,0].flatten().A[0],reconMat[:,1].flatten().A[0],marker='o',s=50,c='red')plt.show()

详细完整代码及数据集下载:

点击我查看源码

参考:

/wj-1314/p/8032780.html

相关文献:http://www.cs.otago.ac.nz/cosc453/student_tutorials/principal_components.pdf

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。