标签:style blog http io ar color os 使用 sp
主成分分析(principal component analysis,PCA)的思想是将数据转换到新的坐标系,这个坐标系的选择是由数据本身决定的,第一维是原始数据中方差最大的方向,第二个是与第一维正交且方差最大的,一直重复。。。
主成分分析中使用数据集的协方差矩阵和特征值分析来获得。
pca(dataMat, topNfeat=999999)
由于主成分分析基本上可以说是算个矩阵的问题,而numpy在这方面又帮我们做好了,所以函数很简单,就是先去平均值,然后计算协方差矩阵和其特征值,最后选出最大的topNfeat个,最后用这些特征向量将源数据转到新的空间。当然使用的时候有两种方式,一种是跟限定个数,另一种则是通过数据压缩比来完成的。
1 #coding=utf-8 2 from numpy import * 3 def loadDataSet(filename, delim=‘\t‘): 4 fr = open(filename) 5 stringArr = [line.strip().split(delim) for line in fr.readlines()] 6 datArr = [map(float,line) for line in stringArr] 7 return mat(datArr) 8 9 def pca(dataMat, topNfeat=999999): 10 meanVals = mean(dataMat, axis=0) 11 meanRemoved = dataMat - meanVals 12 covMat = cov(meanRemoved, rowvar=0) 13 eigVals, eigVects = linalg.eig(mat(covMat)) 14 eigValInd = argsort(eigVals) 15 eigValInd = eigValInd[:-(topNfeat+1):-1] 16 redEigVects = eigVects[:,eigValInd] 17 lowDDataMat = meanRemoved * redEigVects 18 reconMat = (lowDDataMat * redEigVects.T) + meanVals 19 return lowDDataMat, reconMat 20 21 def main(): 22 dataMat = loadDataSet(‘testSet.txt‘) 23 lowDMat, reconMat = pca(dataMat, 1) 24 print shape(lowDMat) 25 26 if __name__ == ‘__main__‘: 27 main()
标签:style blog http io ar color os 使用 sp
原文地址:http://www.cnblogs.com/MrLJC/p/4156589.html