主成分分析是多元線性統(tǒng)計(jì)里面的概念锅睛,它的英文是 Principal Components Analysis埠巨,簡稱
PCA。主成分分析旨在降低數(shù)據(jù)的維數(shù)现拒,通過保留數(shù)據(jù)集中的主要成分來簡化數(shù)據(jù)集辣垒。簡化數(shù)據(jù)集在很多時候是非常必要的,因?yàn)閺?fù)雜往往就意味著計(jì)算資源的大量消耗印蔬。通過對數(shù)據(jù)進(jìn)行降維勋桶,我們就能在不較大影響結(jié)果的同時,減少模型學(xué)習(xí)時間侥猬。
主成分分析的數(shù)學(xué)基原理非常簡單例驹,通過對協(xié)方差矩陣進(jìn)行特征分解,從而得出主成分(特征向量)與對應(yīng)的權(quán)值(特征值)退唠。然后剔除那些較小特征值(較小權(quán)值)對應(yīng)的特征鹃锈,從而達(dá)到降低數(shù)據(jù)維數(shù)的目的。
導(dǎo)入 PCA 方法可以通過from sklearn.decomposition import PCA完成铜邮。PCA 函數(shù)及其默認(rèn)參數(shù)如下所示仪召。
sklearn.decomposition.PCA(n_components=None, copy=True, whiten=False, svd_solver='auto')
其中:
n_components=表示需要保留主成分(特征)的數(shù)量。
copy=表示針對原始數(shù)據(jù)降維還是針對原始數(shù)據(jù)副本降維松蒜。當(dāng)參數(shù)為 False 時扔茅,降維后的原始數(shù)據(jù)會發(fā)生改變,這里默認(rèn)為 True秸苗。
whiten=白化表示將特征之間的相關(guān)性降低召娜,并使得每個特征具有相同的方差。
svd_solver=表示奇異值分解 SVD 的方法惊楼。有 4 參數(shù)玖瘸,分別是:auto,full,arpack,randomized。
在使用 PCA 降維時檀咙,我們也會使用到PCA.fit()方法雅倒。.fit()是 scikit-learn 訓(xùn)練模型的通用方法,但是該方法本身返回的是模型的參數(shù)弧可。所以蔑匣,通常我們會使用PCA.fit_transform()方法直接返回降維后的數(shù)據(jù)結(jié)果。
import numpy as np# 導(dǎo)入數(shù)值計(jì)算模塊
from sklearn.decomposition import PCA# 導(dǎo)入 PCA 模塊
data = np.array([[1,2], [3,4], [5,6], [7,8]])# 新建一個 2 維數(shù)組
new_data = PCA(n_components=1).fit_transform(data)# 降維成 1 維并返回值
print(data)# 輸出原數(shù)據(jù)
print(new_data)# 輸出降維后的數(shù)據(jù)
data:[[1 2]
[3 4]
[5 6]
[7 8]]
new data:[[ 4.24264069]
[ 1.41421356]
[-1.41421356]
[-4.24264069]]
二維的數(shù)據(jù)被降成了一維的