pca(主成分分析)的python源碼實現

1.前言

想了解pca數學原理的小夥伴們,推薦你們一個鏈接,非常簡潔清晰的闡述了pca的數學原理,難度不高,鏈接如下CodingLabs - PCA的數學原理

建議閱讀順序:先閱讀源代碼,再來看源碼關鍵方法的講解,源碼地址RRdmlearning/Machine-Learning-From-Scratch

不知為何知乎上的代碼格式沒有原文章便於理解,大家可在cs229論壇社區|深度學習社區|機器學習社區|人工智慧社區

2.源碼講解

pca源碼中只有兩個函數

2.1 calculate_covariance_matrix:

def calculate_covariance_matrix(self, X, Y=None): # 計算協方差矩陣 m = X.shape[0] X = X - np.mean(X, axis=0) Y = X if Y == None else Y - np.mean(Y, axis=0) return 1 / m * np.matmul(X.T, Y)

這個函數主要計算協方差矩陣

2.2 transform:

def transform(self, X, n_components): # 設n=X.shape[1],將n維數據降維成n_component維 covariance_matrix = self.calculate_covariance_matrix(X) # 獲取特徵值,和特徵向量 eigenvalues, eigenvectors = np.linalg.eig(covariance_matrix) # 對特徵向量排序,並取最大的前n_component組 idx = np.argsort(eigenvalues[::-1]) eigenvectors = eigenvectors[:, idx] eigenvectors = eigenvectors[:, :n_components] # 轉換 return np.matmul(X, eigenvectors)

def transform()是降維函數,將數據降為n_components維度。

首先先調用calculate_covariance_matrix()函數計算協方差矩陣,然後獲取該協方差矩陣的特徵值和特徵向量,並根據特徵值的大小對特徵向量進行排序,排序後得到的矩陣的前n_component項即是我們的轉換矩陣,最後將轉換矩陣X進行矩陣乘法則得到了降維後的數據。

3.源碼地址

github.com/RRdmlearning

直接運行pca.py即可

項目包括了許多機器學習演算法的簡潔實現

此文章為記錄自己一路的學習路程,也希望能給廣大初學者們一點點幫助,如有錯誤,疑惑歡迎一起交流。

推薦閱讀:

python爬蟲學習(一)分析ajax請求
黃哥Python每日新聞(2017-8-8)
如何成長為一名優秀的運維工程師
2018年值得收藏python爬蟲面試寶典(常見問題)
一份Python爬蟲電子書

TAG:機器學習 | Python | 數據分析 |