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.源碼地址
https://github.com/RRdmlearning/Machine-Learning-From-Scratch/tree/master/pca
直接運行pca.py即可
項目包括了許多機器學習演算法的簡潔實現
此文章為記錄自己一路的學習路程,也希望能給廣大初學者們一點點幫助,如有錯誤,疑惑歡迎一起交流。
推薦閱讀:
※python爬蟲學習(一)分析ajax請求
※黃哥Python每日新聞(2017-8-8)
※如何成長為一名優秀的運維工程師
※2018年值得收藏python爬蟲面試寶典(常見問題)
※一份Python爬蟲電子書