PCA算法Python實現


源代碼:

 1 #-*- coding: UTF-8 -*-
 2 from numpy import *
 3 import numpy
 4 def pca(X,CRate):
 5     #矩陣X每行是一個樣本
 6      #對樣本矩陣進行中心化樣本矩陣
 7      meanValue=mean(X,axis=0)#計算每列均值
 8      X=X-meanValue#每個維度元素減去對應維度均值
 9      #協方差矩陣
10      C=cov(X,rowvar=0)
11      #特征值,特征向量
12      eigvalue,eigvector=linalg.eig(mat(C))#特征值,特征向量
13      #根據貢獻率,來決定取多少個特征向量構成變換矩陣
14      sumEigValue=sum(eigvalue)#所有特征值之和
15      sortedeigvalue= numpy.sort(eigvalue)[::-1]    #對特征值從大到小排序
16      for i in range(sortedeigvalue.size):
17         j=i+1
18         rate=sum(eigvalue[0:j])/sumEigValue
19          if rate>CRate:
20             break
21      #取前j個列向量構成變換矩陣
22      indexVec=numpy.argsort(-eigvalue)    #對covEigenVal從大到小排序,返回索引
23      nLargestIndex=indexVec[:j] #取出最大的特征值的索引
24      T=eigvector[:,nLargestIndex] #取出最大的特征值對應的特征向量
25      newX=numpy.dot(X,T)#將X矩陣降維得到newX
26      return newX,T,meanValue#返回降維后矩陣newX,變換矩陣T,每列的均值構成的數組

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM