1 / 13
文档名称:

python数据挖掘实战.docx

格式:docx   大小:408KB   页数:13页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

python数据挖掘实战.docx

上传人:daoqqzhuanyongyou2 2022/6/3 文件大小:408 KB

下载得到文件列表

python数据挖掘实战.docx

文档介绍

文档介绍:: .
Python数据挖掘实战:PCA算法
PCA算法也叫主成分分析(principalcompone案是左边的图,其实也就是样本投影后间隔较大,容易区分。
其实从另一个角度看,左边的图每个点直线上的距离绝对值之和比右边的每个点到直线距离绝对值之和小,是不是有点曲线回归的感觉?其实从这个角度看,这就是最小误差理论:选择投影后误差最小的直线。
再回到上面的左图,也就是我们要求的最佳的u,前面说了,最佳的u也就是最佳的曲线,它能够使投影后的样本方差最大或者是误差最小。
另外,由丁我们前面PCA算法第一步的时候已经执行对样本数据的每一维求均值,并让每个数据减去均值的预处理了,所以每个特征现在的均值都为0,投影到特征向量上后,:
最后的等式中中间的那部分其实就是样本方差的协方差矩阵(xi的均值为0)根新顼伊寸界新=-YxV\M上嗣潍m1-1jn口1=1/咖
由丁u是单位向量,得到上式两边痈乘以u,得到:
此二航K二由丁是我们得到源是那惭输是停S睥最佳投影直线就是特征值入最大是对应的特征向量,其次是入第二大对应的特征向量(求解的到的特征向量都是正交的)。其中入就是我们的方差,也对应了我们前面的最大方差理论,也就是找到能够使投影后方差最大的直线。
Python实现

伪代码如下(摘自机器学****实战):
去除平均值计算协方差矩阵计算协方差矩阵的特征值和特征向量将特征值从大到小排序保留最上面的N个特征向量将数据转换到上述N个特征向量构建的新空间中'fromnumpyimport*(fileName,delim='\t'):
fr=open(fileName)stringArr=[().split(delim)forlineinfr.
readlines()]datArr=[map(float,line)forlineinstringArr]returnmat(d
atArr)defpca(dataMat,topNfeat=9999999meanVals=mean(dataMat,axis=0)meanRemoved=dataMat-meanValscovMat=cov(meanRemoved,rowvar=eigVals,eigVects=(mat(covMat))eigValInd=argsort(eigVals)tolargesteigValInd=eigValInd[:-(topNfeat+redEigVects=eigVects[:,eigValInd]osmallestlowDDataMat=meanRemoved*redEigVects):
#removemean
0)#sort,sortgoessmallest1):-1]#cutoffunwanteddimensions#reorganizeeigvectslargestt#transformdataintonewdimensions
reconMat=(lowDDataMat*)+meanValsreturnlowDDataMat,reconMatdefplotBestFit(dataSet1,dataSet2):
dataArrl=array(dataSetl)dataArr2=array(dataSet2)n=shape(dataArr1)[0]
n1=shape(dataArr2)[0]xcord1=[];ycord1=[]xcord2=[];ycord2=[]xcord3=[];
ycord3=[]j=0foriinrange(n):
(dataArr1[i,0]);(dataArr1[i,1])
(dataArr2[i,0]);
(dataArr2[i,1])
fig=()
ax=(111)
(xcord1,ycord1,s=30,c='red',marker='s')(xcord2,ycord2,s=30,c='green')('X1');('X2');
()if__name__=='__main__':mata=lo