您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 资本运营 > python主成分分析法实现
python主成分分析法实现1.背景PCA(PrincipalComponentAnalysis),PAC的作用主要是降低数据集的维度,然后挑选出主要的特征。PCA的主要思想是移动坐标轴,找到方差最大的方向上的特征值,什么叫方差最大的方向的特征值呢。就像下图中的曲线B,一样,它的覆盖范围最广。基本步骤:(1)首先计算数据集的协方差矩阵(2)计算协方差矩阵的特征值和特征向量(3)保留最重要的n个特征whatis协方差矩阵:定义是变量向量减去均值向量,然后乘以变量向量减去均值向量的转置再求均值。例如x是变量,μ是均值,协方差矩阵等于E[(x-μ)(x-μ)^t],物理意义是这样的,例如x=(x1,x2,...,xi)那么协方差矩阵的第m行n列的数为xm与xn的协方差,若m=n,则是xn的方差。如果x的元素之间是独立的,那么协方差矩阵只有对角线是有值,因为x独立的话对于m≠n的情况xm与xn的协方差为0。另外协方差矩阵是对称的。可以参考wiki:()2.代码实现伪代码如下(摘自机器学习实战):'''@author:Garvin'''fromnumpyimport*importmatplotlib.pyplotaspltdefloadDataSet(fileName,delim='\t'):fr=open(fileName)stringArr=[line.strip().split(delim)forlineinfr.readlines()]datArr=[map(float,line)forlineinstringArr]returnmat(datArr)defpca(dataMat,topNfeat=9999999):meanVals=mean(dataMat,axis=0)meanRemoved=dataMat-meanVals#removemeancovMat=cov(meanRemoved,rowvar=0)eigVals,eigVects=linalg.eig(mat(covMat))eigValInd=argsort(eigVals)#sort,sortgoessmallesttolargesteigValInd=eigValInd[:-(topNfeat+1):-1]#cutoffunwanteddimensionsredEigVects=eigVects[:,eigValInd]#reorganizeeigvectslargesttosmallestlowDDataMat=meanRemoved*redEigVects#transformdataintonewdimensionsreconMat=(lowDDataMat*redEigVects.T)+meanValsreturnlowDDataMat,reconMatdefplotBestFit(dataSet1,dataSet2):dataArr1=array(dataSet1)dataArr2=array(dataSet2)n=shape(dataArr1)[0]n1=shape(dataArr2)[0]xcord1=[];ycord1=[]xcord2=[];ycord2=[]xcord3=[];ycord3=[]j=0foriinrange(n):xcord1.append(dataArr1[i,0]);ycord1.append(dataArr1[i,1])xcord2.append(dataArr2[i,0]);ycord2.append(dataArr2[i,1])fig=plt.figure()ax=fig.add_subplot(111)ax.scatter(xcord1,ycord1,s=30,c='red',marker='s')ax.scatter(xcord2,ycord2,s=30,c='green')plt.xlabel('X1');plt.ylabel('X2');plt.show()if__name__=='__main__':mata=loadDataSet('/Users/hakuri/Desktop/testSet.txt')a,b=pca(mata,2)loadDataSet函数是导入数据集。PCA输入参数:参数一是输入的数据集,参数二是提取的维度。比如参数二设为1,那么就是返回了降到一维的矩阵。PCA返回参数:参数一指的是返回的低维矩阵,对应于输入参数二。参数二对应的是移动坐标轴后的矩阵。上一张图,绿色为原始数据,红色是提取的2维特征。3.代码下载下载地址:请点击我/*********************************本文来自博客“李博Garvin“*转载请标明出处:******************************************/
本文标题:python主成分分析法实现
链接地址:https://www.777doc.com/doc-4211195 .html