Python實現PCA降維


PCA算法

主成分分析(Principal Component Analysis,PCA)是最常用的一種降維方法,通常用於高維數據集的探索與可視化,還可以用作數據壓縮和預處理等。PCA可以把具有相關性的高維變量合成為線性無關的低維變量,稱為主成分。主成分能夠盡可能保留原始數據的信息。PCA的計算涉及到對協方差矩陣的理解,這篇博客提供了協方差矩陣的相關內容。PCA的算法過程:

直接用numpy實現PCA

import numpy as np
n = 2                                         # 取對應特征值最大的n個特征向量
data = np.random.rand(10, 5)                  # 生成10個樣本,每個樣本5個特征
mean = np.mean(data, axis=0)                  # 計算原始數據中每一列的均值,axis=0按列取均值
zeroCentred_data = data - mean                # 數據中心化,使每個feature的均值為0
covMat = np.cov(zeroCentred_data, rowvar=False)  # 計算協方差矩陣,rowvar=False表示數據的每一列代表一個feature
featValue, featVec = np.linalg.eig(covMat)    # 計算協方差矩陣的特征值和特征向量
index = np.argsort(featValue)                 # 將特征值按從小到大排序,index是對應原featValue中的下標
n_index = index[-n:]                          # 取最大的n個特征值在原featValue中的下標
n_featVec = featVec[:, n_index]               # 取最大的兩維特征值對應的特征向量組成映射矩陣
low_dim_data = np.dot(zeroCentred_data, n_featVec)     # 降維后的數據

下圖可幫助理解:

調用sklearn庫實現PCA

這篇博客介紹了sklearn中PCA函數的具體參數。

import numpy as np
from sklearn.decomposition import PCA
data = np.random.rand(10, 5)            # 生成10個樣本,每個樣本5個特征
pca = PCA(n_components=2)
low_dim_data = pca.fit_transform(data)  # 每個樣本降為2維 

 

參考資料

[1] Python機器學習應用

[2] python 矩陣分析(求方差,協方差矩陣,特征值,特征向量......);PCA實現


免責聲明!

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



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