利用PCA来简化数据

13.2.2 在NUmpy中实现PCA

将数据转换成前N个主成分的伪代码大致如下:

去除平均值

计算协方差矩阵

计算协方差矩阵的特征值和特征向量

将特征值从大到小排列

保留最上面的N个特征向量

将数据转换到上述的N个特征向量构建的新空间中

在NumPy中实现PCA:

#coding:utf-8

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)
meanRemoved = datamat -meanVals
covMat = cov(meanRemoved,rowvar = 0)
eigVals,eigVect = linalg.eig(mat(covMat))
eigValInd = argsort(eigVals)
eigValInd = eigValInd[:-(topNfeat+1):-1]
redEigVects = eigvals(:,eigValInd)
lowDDataMat = meanRemoved*redEigVects
reconMat = (lowDDataMat*redEigVects.T)+meanVals
return lowDDataMat,reconMat

资料来源:《机器学习实战》

上一篇:orz gzy


下一篇:SharePoint Server 2007 简体中文下载