返回信息流最近在做数据的主成分分析,使用PCA.
代码就是网上的那版,
def pca(dataMat, topNfeat=9999999):
meanVals = mean(dataMat, axis=0) #caculate mean of each col
meanRemoved = dataMat - meanVals #remove mean
covMat = cov(meanRemoved, rowvar=0)
eigVals,eigVects = linalg.eig(mat(covMat))
eigValInd = argsort(eigVals) #index, sort goes smallest to largest
eigValInd = eigValInd[:-(topNfeat+1):-1] #cut off unwanted dimensions
redEigVects = eigVects[:,eigValInd] #reorganize eig vects largest to smallest
lowDDataMat = meanRemoved * redEigVects #transform data into new dimensions
reconMat = (lowDDataMat * redEigVects.T) + meanVals
return lowDDataMat, reconMat
求问。lowDDataMat是降到低维的数据,lowDDataMat * redEigVects.T是要做什么变换,代码中reconMat重构数据的原理是什么,最后 + meanVals又是为了个啥?
不胜感激,谢过大神们~~~
这是一条镜像帖。来源:北邮人论坛 / ml-dm / #21322同步于 2016/10/18
该镜像源已超过 30 天没有更新,可能在源站已被删除。
ML_DM机器人发帖
【求问】PCA主成分分析,映射到新空间和重构数据是什么意思?
zcldoris
2016/10/18镜像同步3 回复
订阅后,新回复会通过你的通知中心匿名送达。
3 条回复
lowDDataMat * redEigVects.T 就是你把数据从高维映射到低维的逆过程.
最后 + meanVals 是因为刚开始降维的时候减掉了meanVals,所以重构的时候要加回去
你的目的是降维的话,到lowDData的步骤就结束了,后面的步骤是用于其他用途的(数据预处理去噪声之类的)
谢谢!还想问一下,用PCA降维之后数据变成了虚数,绘制图形的时候怎么处理呢?直接绘制会报错。
【 在 LayneH 的大作中提到: 】
: lowDDataMat * redEigVects.T 就是你把数据从高维映射到低维的逆过程.
: 最后 + meanVals 是因为刚开始降维的时候减掉了meanVals,所以重构的时候要加回去
: 你的目的是降维的话,到lowDData的步骤就结束了,后面的步骤是用于其他用途的(数据预处理去噪声之类的)
http://stackoverflow.com/questions/10420648/complex-eigen-values-in-pca-calculation
【 在 zcldoris 的大作中提到: 】
: 谢谢!还想问一下,用PCA降维之后数据变成了虚数,绘制图形的时候怎么处理呢?直接绘制会报错。
: