【機器學習演算法-python實現】PCA 主成分分析、降維

來源:互聯網
上載者:User

標籤:...   nts   bottom   fonts   基本   ret   form data   array   範圍   

1.背景        PCA(Principal Component Analysis),PAC的作用主要是減少資料集的維度,然後挑選出基本的特徵。        PCA的主要思想是移動座標軸,找到方差最大的方向上的特徵值。什麼叫方差最大的方向的特徵值呢。就像中的曲線B。一樣。它的覆蓋範圍最廣。

基本步驟:(1)首先計算資料集的共變數矩陣                   (2)計算共變數矩陣的特徵值和特徵向量                   (3)保留最重要的n個特徵

what is 共變數矩陣:
定義是變數向量減去均值向量,然後乘以變數向量減去均值向量的轉置再求均值。

比如x是變數,μ是均值,共變數矩陣等於E[(x-μ)(x-μ)^t],物理意義是這種,比如x=(x1,x2,...,xi)那麼共變數矩陣的第m行n列的數為xm與xn的共變數,若m=n。則是xn的方差。假設x的元素之間是獨立的,那麼共變數矩陣僅僅有對角線是有值,由於x獨立的話對於m≠n的情況xm與xn的共變數為0。另外共變數矩陣是對稱的。

能夠參考wiki:(http://zh.wikipedia.org/wiki/%E5%8D%8F%E6%96%B9%E5%B7%AE%E7%9F%A9%E9%98%B5)


2.代碼實現虛擬碼例如以下(摘自機器學習實戰):
‘‘‘@author: Garvin‘‘‘from numpy import *import matplotlib.pyplot as pltdef loadDataSet(fileName, delim=‘\t‘):    fr = open(fileName)    stringArr = [line.strip().split(delim) for line in fr.readlines()]    datArr = [map(float,line) for line in stringArr]    return mat(datArr)def pca(dataMat, topNfeat=9999999):    meanVals = mean(dataMat, axis=0)    meanRemoved = dataMat - meanVals #remove mean    covMat = cov(meanRemoved, rowvar=0)    eigVals,eigVects = linalg.eig(mat(covMat))    eigValInd = argsort(eigVals)            #sort, sort goes smallest to largest    eigValInd = eigValInd[:-(topNfeat+1):-1]  #cut off unwanted dimensions    redEigVects = eigVects[:,eigValInd]       #reorganize eig vects largest to smallest    lowDDataMat = meanRemoved * redEigVects#transform data into new dimensions    reconMat = (lowDDataMat * redEigVects.T) + meanVals    return lowDDataMat, reconMatdef plotBestFit(dataSet1,dataSet2):          dataArr1 = array(dataSet1)    dataArr2 = array(dataSet2)    n = shape(dataArr1)[0]     n1=shape(dataArr2)[0]    xcord1 = []; ycord1 = []    xcord2 = []; ycord2 = []    xcord3=[];ycord3=[]    j=0    for i in range(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“

* 轉載請標明出處:http://blog.csdn.net/buptgshengod

******************************************/


【機器學習演算法-python實現】PCA 主成分分析、降維

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.