Sök…


Minska dimensionen med huvudkomponentanalys

Principal Component Analys hittar sekvenser av linjära kombinationer av funktionerna. Den första linjära kombinationen maximerar variansen hos funktionerna (med förbehåll för en enhetsbegränsning). Var och en av följande linjära kombinationer maximerar variansen hos funktionerna i underutrymmet vinkelrätt mot det som spänns av de tidigare linjära kombinationerna.

En vanlig reduktion dimension teknik är att använda endast den k första sådana linjära kombinationer. Anta att funktionerna är en matris X med n rader och m kolumner. De första k linjära kombinationerna bildar en matris P k av m rader och k kolumner. Produkten X β har n rader och k kolumner. Således kan den resulterande matrisen Pk betraktas som en reduktion från m till k- dimensioner, och bibehåller de högvariansa delarna av den ursprungliga matrisen X.

I scikit-learn PCA med sklearn.decomposition.PCA . Anta till exempel att vi börjar med en 100 X 7-matris, konstruerad så att variansen endast finns i de två första kolumnerna (genom att skala ned de fem senaste kolumnerna):

import numpy as np
np.random.seed(123) # we'll set a random seed so that our results are reproducible
X = np.hstack((np.random.randn(100, 2) + (10, 10), 0.001 * np.random.randn(100, 5)))

Låt oss utföra en reduktion till två dimensioner:

from sklearn.decomposition import PCA
pca = PCA(n_components=2)
pca.fit(X)

Låt oss nu kontrollera resultaten. Först, här är de linjära kombinationerna:

pca.components_
# array([[ -2.84271217e-01,  -9.58743893e-01,  -8.25412629e-05,
#           1.96237855e-05,  -1.25862328e-05,   8.27127496e-05,
#          -9.46906600e-05],
#        [ -9.58743890e-01,   2.84271223e-01,  -7.33055823e-05,
#          -1.23188872e-04,  -1.82458739e-05,   5.50383246e-05,
#           1.96503690e-05]])

Notera hur de första två komponenterna i varje vektor är flera ordningsföljder större än de andra, vilket visar att PCA insåg att variansen huvudsakligen finns i de två första kolumnerna.

För att kontrollera förhållandet mellan variansen som förklaras av denna PCA kan vi undersöka pca.explained_variance_ratio_ :

pca.explained_variance_ratio_
# array([ 0.57039059,  0.42960728])


Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow