只能說(shuō)scikit-learn實(shí)在是太強(qiáng)大了饥悴,三言?xún)烧Z(yǔ)就能搞定PCA
1.函數(shù)原型及參數(shù)說(shuō)明
sklearn.decomposition.PCA(n_components=None, copy=True, whiten=False)
主要參數(shù)
n_components:
意義:PCA算法中所要保留的主成分個(gè)數(shù)n未檩,也即保留下來(lái)的特征個(gè)數(shù)n
類(lèi)型:int 或者 string蜓肆,缺省時(shí)默認(rèn)為None,所有成分被保留请唱。
賦值為int空入,比如n_components=1,將把原始數(shù)據(jù)降到一個(gè)維度咖城。
賦值為string茬腿,比如n_components='mle'县忌,將自動(dòng)選取特征個(gè)數(shù)n缠黍,使得滿(mǎn)足所要求的方差百分比闸度。
copy:
類(lèi)型:bool杨凑,True或者False募壕,缺省時(shí)默認(rèn)為T(mén)rue麦轰。
意義:表示是否在運(yùn)行算法時(shí)坦报,將原始訓(xùn)練數(shù)據(jù)復(fù)制一份盟步。若為T(mén)rue郎哭,則運(yùn)行PCA算法后他匪,原始訓(xùn)練數(shù)據(jù)的值不會(huì)有任何改變,因?yàn)槭窃谠紨?shù)據(jù)的副本上進(jìn)行運(yùn)算夸研;若為False邦蜜,則運(yùn)行PCA算法后,原始訓(xùn)練數(shù)據(jù)的 值會(huì)改亥至,因?yàn)槭窃谠紨?shù)據(jù)上進(jìn)行降維計(jì)算悼沈。
whiten:
類(lèi)型:bool,缺省時(shí)默認(rèn)為False
意義:白化姐扮,使得每個(gè)特征具有相同的方差絮供。
2.PCA屬性
components_:返回具有最大方差的成分。
explained_variance_ratio_:返回 所保留的n個(gè)成分各自的方差百分比茶敏。
n_components_:返回所保留的成分個(gè)數(shù)n壤靶。
3.PCA對(duì)象的方法
fit(X,y=None)
fit()可以說(shuō)是scikit-learn中通用的方法,每個(gè)需要訓(xùn)練的算法都會(huì)有fit()方法惊搏,它其實(shí)就是算法中的“訓(xùn)練”這一步驟贮乳。因?yàn)镻CA是無(wú)監(jiān)督學(xué)習(xí)算法,此處y自然等于None恬惯。
fit(X)向拆,表示用數(shù)據(jù)X來(lái)訓(xùn)練PCA模型。
函數(shù)返回值:調(diào)用fit方法的對(duì)象本身酪耳。比如pca.fit(X)亲铡,表示用X對(duì)pca這個(gè)對(duì)象進(jìn)行訓(xùn)練。
fit_transform(X)
用X來(lái)訓(xùn)練PCA模型,同時(shí)返回降維后的數(shù)據(jù)奖蔓。
newX=pca.fit_transform(X)赞草,newX就是降維后的數(shù)據(jù)。
inverse_transform()
將降維后的數(shù)據(jù)轉(zhuǎn)換成原始數(shù)據(jù)吆鹤,X=pca.inverse_transform(newX)
transform(X)
將數(shù)據(jù)X轉(zhuǎn)換成降維后的數(shù)據(jù)厨疙。當(dāng)模型訓(xùn)練好后,對(duì)于新輸入的數(shù)據(jù)疑务,都可以用transform方法來(lái)降維沾凄。
PCA實(shí)例
#encoding = utf-8
import numpy as np
from sklearn.decomposition import PCA
from sklearn.datasets import load_iris
X=load_iris().data
pca = PCA(n_components=2)
pca.fit(X)
newX=pca.transform(X)