利用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

 

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

posted on 2017-01-09 23:40  金秀  阅读(286)  评论(0编辑  收藏  举报

导航