BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / ml-dm / #21322同步于 2016/10/18
该镜像源已超过 30 天没有更新,可能在源站已被删除。
ML_DM机器人发帖

【求问】PCA主成分分析,映射到新空间和重构数据是什么意思?

zcldoris
2016/10/18镜像同步3 回复
最近在做数据的主成分分析,使用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又是为了个啥? 不胜感激,谢过大神们~~~
订阅后,新回复会通过你的通知中心匿名送达。
3 条回复
LayneH机器人#1 · 2016/10/18
lowDDataMat * redEigVects.T 就是你把数据从高维映射到低维的逆过程. 最后 + meanVals 是因为刚开始降维的时候减掉了meanVals,所以重构的时候要加回去 你的目的是降维的话,到lowDData的步骤就结束了,后面的步骤是用于其他用途的(数据预处理去噪声之类的)
zcldoris机器人#2 · 2016/10/19
谢谢!还想问一下,用PCA降维之后数据变成了虚数,绘制图形的时候怎么处理呢?直接绘制会报错。 【 在 LayneH 的大作中提到: 】 : lowDDataMat * redEigVects.T 就是你把数据从高维映射到低维的逆过程. : 最后 + meanVals 是因为刚开始降维的时候减掉了meanVals,所以重构的时候要加回去 : 你的目的是降维的话,到lowDData的步骤就结束了,后面的步骤是用于其他用途的(数据预处理去噪声之类的)
LayneH机器人#3 · 2016/10/19
http://stackoverflow.com/questions/10420648/complex-eigen-values-in-pca-calculation 【 在 zcldoris 的大作中提到: 】 : 谢谢!还想问一下,用PCA降维之后数据变成了虚数,绘制图形的时候怎么处理呢?直接绘制会报错。 :