PCA為常見的降維方法,然而對於不同資料透過PCA降至多少維度則是一個需要考量的問題。

利用PCA會根據資料的分佈狀況求得個成份的比例(以非原本的維度空間)

以下針對資料進行PCA轉換後,查看主成份的比例,以IRIS資料集為例,程式如下:

 

from sklearn.decomposition import PCA
import matplotlib.pyplot as plt 
from sklearn import datasets

iris = datasets.load_iris()
X = iris.data

pca = PCA(n_components=None)
pca.fit(X)

def calc(ratios):
    idx = []        
    accumulating_ratio = []
    for i in range(len(ratios)+1):
        temp = 0
        for j in range(0,i):
            temp += ratios[j]
        idx.append(i)
        accumulating_ratio.append(temp)
    return idx,accumulating_ratio

px,py = calc(pca.explained_variance_ratio_)
plt.plot(px,py)
plt.show()

 

分析結果如下圖,從途中可以發現IRIS資料透過PCA轉換後,僅需要主成份1和主成份2即可以涵蓋超過95%成份.

因此可以透過PCA轉換後僅保留主成份1和主成份2,將資料從原本4維降低至3維。

 

若以知要保留多少成份成份的比例,可以透過以下程式直接求得:

def getIdx(x,y,T=0.95):
    for i in range(len(x)):
        if y[i] > 0.95:   
            return i
    return -1

print (getIdx(px,py))

T 參數為希望保留的成份比例,預設為95%。

 

 

 

 

arrow
arrow
    文章標籤
    pca
    全站熱搜
    創作者介紹
    創作者 Lung-Yu,Tsai 的頭像
    Lung-Yu,Tsai

    Lung-Yu,Tsai 的部落格

    Lung-Yu,Tsai 發表在 痞客邦 留言(0) 人氣()