python主成分分析法实现
PCA(PrincipalComponentAnalysis),PAC的作用主要是降低
数据集的维度,然后挑选出主要的特征。
PCA的主要思想是移动坐标轴,找到方差最大的方向上的特
征值,什python主成分分析法实现
PCA(PrincipalComponentAnalysis),PAC的作用主要是降低
数据集的维度,然后挑选出主要的特征。
PCA的主要思想是移动坐标轴,找到方差最大的方向上的特
征值,什么叫方差最大的方向的特征值呢。就像下图中的曲
线B,一样,它的覆盖范围最广。
基本步骤:(1)首先计算数据集的协方差矩阵
2)计算协方差矩阵的特征值和特征向量
3)保留最重要的n个特征
whatis协方差矩阵:
定义是变量向量减去均值向量,然后乘以变量向量减去均值
向量的转置再求均值。例如x是变量,以是均值,协方差矩
阵等于E[(x-以)(x-以)At],物理意义是这样的,例如x=
x1,x2,...,xi)那么协方差矩阵的第m行n列的数为xm与
xn的协方差,若m=n,则是xn的方差。如果x的元素之间
是独立的,那么协方差矩阵只有对角线是有值,因为x独立
的话对于m^n的情况xm与xn的协方差为0。另外协方差矩阵是对称的。
可以参考wiki:
(/%E5%8D%8F%E6%96%B9%E5%B7%AE%E7%9F%A9%E9%98%B5)
伪代码如下(摘自机器学习实战):
'''
***@author:Garvin'''
fromnumpyimport*
defloadDataSet(fileName,delim='\t'):
fr=open(fileName)
stringArr=[().split(delim)()]
datArr=[map(float,line)forlineinstringArr]
returnmat(datArr)defpca(dataMat,topNfeat=9999999):
meanVals=mean(dataMat,axis=0)
meanRemoved=dataMat-meanVals#removemean
covMat=cov(meanRemoved,rowvar=0)
eigVals,eigVects=(mat(covMat))
eigValInd=argsort(eigVals)#sort,sortgoessmallest
tolargest
eigValInd=eigValInd[:-(topNfeat+1):-1]#cutoffunwanteddimensions
redEigVects=eigVects[:,eigValInd]#reorganizeeigvectslargesttosmallest
lowDDataMat=meanRemoved*redEigVects#transformdataintonewdimensions
reconMat=(lowDD
python主成分分析法实现 来自淘豆网m.daumloan.com转载请标明出处.