官網:https://scikit-learn.org/stable/modules/generated/sklearn.decomposition.PCA.html
官網語法如下:
class sklearn.decomposition.PCA(n_components=None, *, copy=True, whiten=False, svd_solver='auto', tol=0.0, iterated_power='auto', random_state=None)
參數:
1.n_components:這個參數可以幫我們指定希望PCA降維后的特征維度數目。最常用的做法是直接指定降維到的維度數目,此時n_components是一個大於等於1的整數。當然,我們也可以指定主成分的方差和所占的最小比例閾值,讓PCA類自己去根據樣本特征方差來決定降維到的維度數,此時n_components是一個(0,1]之間的數。當然,我們還可以將參數設置為"mle", 此時PCA類會用MLE算法根據特征的方差分布情況自己去選擇一定數量的主成分特征來降維。我們也可以用默認值,即不輸入n_components,此時n_components=min(樣本數,特征數)
2.copy:類型:bool,True或者False,缺省時默認為True。意義:表示是否在運行算法時,將原始訓練數據復制一份。若為True,則運行PCA算法后,原始訓練數據的值不會有任何改變,因為是在原始數據的副本上進行運算;若為False,則運行PCA算法后,原始訓練數據的值會改,因為是在原始數據上進行降維計算
3.whiten :判斷是否進行白化。所謂白化,就是對降維后的數據的每個特征進行歸一化,讓方差都為1.對於PCA降維本身來說,一般不需要白化。如果你PCA降維后有后續的數據處理動作,可以考慮白化。默認值是False,即不進行白化
4.svd_solver:即指定奇異值分解SVD的方法,由於特征分解是奇異值分解SVD的一個特例,一般的PCA庫都是基於SVD實現的。有4個可以選擇的值:{‘auto’, ‘full’, ‘arpack’, ‘randomized’}。randomized一般適用於數據量大,數據維度多同時主成分數目比例又較低的PCA降維,它使用了一些加快SVD的隨機算法。 full則是傳統意義上的SVD,使用了scipy庫對應的實現。arpack和randomized的適用場景類似,區別是randomized使用的是scikit-learn自己的SVD實現,而arpack直接使用了scipy庫的sparse SVD實現。默認是auto,即PCA類會自己去在前面講到的三種算法里面去權衡,選擇一個合適的SVD算法來降維。一般來說,使用默認值就夠了
5.tol:svd_solver =='arpack'計算的奇異值的公差,float> = 0,可選(默認.0)
6.iterated_power: int> = 0或'auto',(默認為'auto'),svd_solver =='隨機化'計算出的冪方法的迭代次數
屬性:
1.components_ :特征空間中的主軸,表示數據中最大方差的方向。組件按排序 explained_variance_
2.explained_variance_:它代表降維后的各主成分的方差值。方差值越大,則說明越是重要的主成分
3.explained_variance_ratio_:它代表降維后的各主成分的方差值占總方差值的比例,這個比例越大,則越是重要的主成分
4.singular_values_:每個特征的奇異值,奇異值等於n_components
低維空間中變量的2范數
5.mean_:每個特征的均值
6.n_components_:即是上面輸入的參數值
7.n_features_:訓練數據中的特征數量
8.n_samples_:訓練數據中的樣本數
9.noise_variance_:等於X協方差矩陣的(min(n_features,n_samples)-n_components)個最小特征值的平均值
方法:
fit(X [,y])用X擬合模型。
fit_transform(X [,y])使用X擬合模型,並在X上應用降維。
get_covariance()用生成模型計算數據協方差。
get_params([深])獲取此估計量的參數。
get_precision()用生成模型計算數據精度矩陣。
inverse_transform(X)將數據轉換回其原始空間。
score(X [,y])返回所有樣本的平均對數似然率。
score_samples(X)返回每個樣本的對數似然。
set_params(**參數)設置此估算器的參數。
transform(X)對X應用降維。