PCA,中文名:主成分分析,在做特征篩選的時候會經(jīng)常用到,但是要注意一點,PCA并不是簡單的剔除掉一些特征,而是將現(xiàn)有的特征進行一些變換,選擇最能表達該數(shù)據(jù)集的最好的幾個特征來達到降維目的。sklearn中已經(jīng)有成熟的包,因此我們以后就可以直接調(diào)用了(開心~)。下面說一下關(guān)于此函數(shù)的一些參數(shù)說明,或者參考官網(wǎng)API。
1. 函數(shù)原型及參數(shù)說明
這里只挑幾個比較重要的參數(shù)進行說明。
sklearn.decomposition.PCA(n_components=None, copy=True, whiten=False)
- n_components: int, float, None 或 string,PCA算法中所要保留的主成分個數(shù),也即保留下來的特征個數(shù),如果 n_components = 1,將把原始數(shù)據(jù)降到一維;如果賦值為string,如n_components='mle',將自動選取特征個數(shù),使得滿足所要求的方差百分比;如果沒有賦值,默認為None,特征個數(shù)不會改變(特征數(shù)據(jù)本身會改變)。
- copy:True 或False,默認為True,即是否需要將原始訓(xùn)練數(shù)據(jù)復(fù)制。
- whiten:True 或False,默認為False,即是否白化,使得每個特征具有相同的方差。
2. PCA對象的屬性
- explained_variance_ratio_:返回所保留各個特征的方差百分比,如果n_components沒有賦值,則所有特征都會返回一個數(shù)值且解釋方差之和等于1。
- n_components_:返回所保留的特征個數(shù)。
3.PCA常用方法
- fit(X): 用數(shù)據(jù)X來訓(xùn)練PCA模型。
- fit_transform(X):用X來訓(xùn)練PCA模型,同時返回降維后的數(shù)據(jù)。
- inverse_transform(newData) :將降維后的數(shù)據(jù)轉(zhuǎn)換成原始數(shù)據(jù),但可能不會完全一樣,會有些許差別。
- transform(X):將數(shù)據(jù)X轉(zhuǎn)換成降維后的數(shù)據(jù),當模型訓(xùn)練好后,對于新輸入的數(shù)據(jù),也可以用transform方法來降維。
4.簡單栗子
import numpy as np
from sklearn.decomposition import PCA
X = np.array([[-1, -1], [-2, -1], [-3, -2], [1, 1], [2, 1], [3, 2]])
pca = PCA(n_components=2)
newX = pca.fit_transform(X)
print(X)
Out[365]:
[[-1 -1]
[-2 -1]
[-3 -2]
[ 1 1]
[ 2 1]
[ 3 2]]
print(newX)
Out[366]:
array([[ 1.38340578, 0.2935787 ],
[ 2.22189802, -0.25133484],
[ 3.6053038 , 0.04224385],
[-1.38340578, -0.2935787 ],
[-2.22189802, 0.25133484],
[-3.6053038 , -0.04224385]])
print(pca.explained_variance_ratio_)
[ 0.99244289 0.00755711]
可以發(fā)現(xiàn)第一個特征可以99.24%表達整個數(shù)據(jù)集,因此我們可以降到1維:
pca = PCA(n_components=1)
newX = pca.fit_transform(X)
print(pca.explained_variance_ratio_)
[ 0.99244289]
怎么樣,今天的技能get到了嗎,如果喜歡的話就點個贊吧~