版权声明:未经博主允许不得转载 https://blog.csdn.net/qq_24954345/article/details/81464230
##PCA介绍与用法
主成分分析(Principal Component Analysis,PCA)是最常用的一种降维方法。
在PCA中,数据从原来的坐标系转换到了新的坐标系,新的坐标系的选择是由数据本身决定的。第一个新坐标轴选择是原始数据中方差最大的方向,第二个新坐标轴选择和第一个坐标轴相交并且具有最大方差的方向,以此类推。可以发现,大部分方差都包含在前面几个新坐标轴中。因此可以忽略余下的坐标轴,达到降维的目的。
通过数据集的协方差矩阵及特征值分析,我们可以求得这些方差最大的方向的主成分。
实现过程
- 去除平均值
- 计算协方差矩阵
- 计算协方差矩阵的特征值和特征向量
- 将特征值从大到小排序
- 保留最上面的N个特征向量
- 将数据转换到新的空间中
python实现:
from numpy import*
def pca(dataMat, topNfeat=9999999):
meanVals = mean(dataMat, axis=0)
meanRemoved = dataMat - meanVals #remove mean
covMat = cov(meanRemoved, rowvar=0)
eigVals,eigVects = linalg.eig(mat(covMat))
#sort, sort goes smallest to largest
eigValInd = argsort(eigVals)
#cut off unwanted dimensions
eigValInd = eigValInd[:-(topNfeat+1):-1]
#reorganize eig vects largest to smallest
redEigVects = eigVects[:,eigValInd]
#transform data into new dimensions
lowDDataMat = meanRemoved * redEigVects
reconMat = (lowDDataMat * redEigVects.T) + meanVals
return lowDDataMat, reconMat