本文將從多個方面介紹PCA(Principal Components Analysis,主成分分析)參數,包括如何選擇主成分個數、選擇特徵值大小的閾值和如何對原始數據進行歸一化處理。
一、主成分個數確定
主成分個數指在進行PCA降維時,需要從數據的若干個方向中選擇幾個作為新的基準方向。一般來說,會選擇方差較大的前幾個方向作為主成分。但是如何確定具體選擇幾個主成分呢?
有兩種方法可以進行選擇:
1.根據經驗或者業務需求確定主成分個數
在某些場景下,根據業務需求或者經驗,可以確定主成分個數。比如,如果進行壓縮圖片,在不損失太多畫質的情況下,可以選擇前10個主成分進行壓縮。
2.通過累計特徵值貢獻率選擇主成分個數
特徵值是PCA方法的一個重要參數,表示在不同方向上數據的離散程度。特徵值越大,說明在該方向上數據的離散程度越大。累計特徵值貢獻率表示前k個主成分所包含的方差佔總方差的比例。通常選擇累計特徵值貢獻率大於0.9時的主成分個數。
二、特徵值大小的閾值選擇
雖然選擇主成分個數比較容易,但是選擇特徵值大小的閾值卻比較困難。因為不同數據集中的特徵值大小相差甚遠,如果直接按照大小進行選擇,可能會損失一些重要信息。
因此,可以通過畫出特徵值大小和主成分個數的折線圖,通過直觀判斷選擇合適的特徵值閾值。一般來說,隨着主成分個數的增加,特徵值會呈現下降趨勢。可以選擇特徵值折線圖中的「拐點」處的特徵值作為閾值。
三、原始數據歸一化處理
在進行PCA分析時,需要對原始數據進行歸一化處理。這是因為不同特徵之間的度量單位不同,如果不進行歸一化處理,可能會導致結果不準確。
常用的歸一化方法為Z-score標準化,即將數據減去均值,再除以標準差。假設原始數據為$m$行$n$列的矩陣$X=\left[x_{i,j}\right]$,那麼進行歸一化處理後得到的數據矩陣$X’$的表達式為:
$$ x'_{i,j} = \frac{x_{i,j} - \mu_j}{\sigma_j} $$
其中,$\mu_j$為第$j$列的均值,$\sigma_j$為第$j$列的標準差。
四、代碼實現
下面是Python中使用sklearn庫進行PCA分析的示例代碼:
from sklearn.decomposition import PCA from sklearn.preprocessing import StandardScaler # 加載數據 X = ... # 數據歸一化處理 sc = StandardScaler() X_std = sc.fit_transform(X) # 選擇主成分個數 pca = PCA(n_components=0.9) X_pca = pca.fit_transform(X_std) # 打印特徵值、特徵向量和主成分貢獻率 print('Explained variance ratio:', pca.explained_variance_ratio_) print('Eigenvalues:', pca.explained_variance_) print('Eigenvectors:', pca.components_)
原創文章,作者:PRGXV,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/374685.html