1 / 15
文档名称:

python数据挖掘实战之主成分分析.docx

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

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

分享

预览

python数据挖掘实战之主成分分析.docx

上传人:guoxiachuanyue007 2022/5/30 文件大小:100 KB

下载得到文件列表

python数据挖掘实战之主成分分析.docx

文档介绍

文档介绍:Python数据挖掘实战:PCA算法
PCA算法也叫主成分分析(principalcomponentsanalysis),主要是用于数据降维的。
为什么要进行数据降维?因为实际情况中我们的训练数据会存在特征过多或者是特征累赘的问题,比如要求的最佳的u,前面说了,最佳的u也就是最佳的曲线,它能够使投影后的样本方差最大或者是误差最小。
另外,由于我们前面PCA算法第一步的时候已经执行对样本数据的每一维求均值,并让每个数据减去均值的预处理了,所以每个特征现在的均值都为0,投影到特征向量上后,均值也为0•因此方差为:
丄工加(兀⑴=—V™UTX^X^U(丄工加)W
m厶"1m厶J】m厶"二】
最后的等式中中间的那部分其实就是样本方差的协方差矩阵(Xi的均值为0)
用;I来表示丄来表示=丄那么上式可以写作:
mJumJ'」
=u
由于u是单位向量,得到
xcord3=[];
上式两边痛乘以u,得到:
=UU力ZZ—工Z/
于是我们得到
2就是》的特征宙,u就是特征向量
最佳投影直线就是特征值入最大是对应的特征向量其次是入第二大对应的特征向量(求解的到的特征向量都是正交的)。其中入就是我们的方差,也对应了我们前面的最大方差理论,也就是找到能够使投影后方差最大的直线。
Python实现

伪代码如下(摘自机器学均值
计算协方差矩阵
计算协方差矩阵的特征值和特征向量
将特征值从大到小排序
保留最上面的N个特征向量
将数据转换到上述N个特征向量构建的新空间中
'fromnumpyimport*
defloadDataSet(fileName,delim='\t'):
fr=open(fileName)stringArr=[().split(delim)()]datArr=[map(float,line)forlineinstringArr]returnmat(d
atArr)
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]#reorganizeeigvectslargestt
osmallest
lowDDataMat=meanRemoved*redEigVects#transformdataintonewdimensions
reconMat=(lowDDataMat*)+meanVals
returnlowDDataMat,reconMat
defplotBestFit(dataSet1,dataSet2):
dataArrl=array(dataSetl)
dataArr2=array(dataSet2)
n=shape(dataArr1)[0]
n1=shape(dataArr2)[0]
xcordl=[];
ycordl=[]
xcord2=[];
ycord2=[]
xcord3=[];
ycord3=[]j=0foriinrange(n):
(dataArr1[i,0]);
(dataArr1[i,1])
(dataArr2[i,0]);
(dataArr2[i,1])
fig=plt・figure()
ax=(111)
(xcord1,ycordl,s=30,c='red',marker='s')(xcord2,ycord2,s=30,c='green')('XI');plt・ylabel('X2');
()
if__name=='main':mata=loadDataSet('/Users/hakuri