scikit-learn
次元性の低下(特徴の選択)
サーチ…
主要コンポーネント分析によるディメンションの削減
主成分分析は、特徴の線形結合のシーケンスを見つける。最初の線形結合は、フィーチャの分散を最大にします(単位制約の影響を受けます)。以下の線形結合の各々は、以前の線形結合にまたがる部分空間と直交する部分空間における特徴の分散を最大にする。
一般的な次元削減技法は、 k番目のそのような線形結合のみを使用することである。特徴がn行m列の行列Xであると仮定する。最初のk個の線形結合は、m行 k列の行列βkを形成します。積Xβは、 n行とk列とを有する。したがって、結果の行列βkは、元の行列Xの高分散部分を保持して、 mからk次元への縮小と考えることができる。
scikit-learn
では、PCAはsklearn.decomposition.PCA
で実行されsklearn.decomposition.PCA
。たとえば、分散が最初の2つの列にのみ含まれるように構成された100×7の行列から始めるとします(最後の5つの列を縮小する)。
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)))
2次元に縮小しましょう:
from sklearn.decomposition import PCA
pca = PCA(n_components=2)
pca.fit(X)
さて、結果を確認しましょう。まず、線形結合があります:
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]])
各ベクトルの最初の2つの成分が他の成分よりも数桁大きいことに注意してください.PCAは分散が主に最初の2つのカラムに含まれていることを示しています。
このPCAによって説明される分散の比率を調べるために、 pca.explained_variance_ratio_
を調べることができpca.explained_variance_ratio_
。
pca.explained_variance_ratio_
# array([ 0.57039059, 0.42960728])
Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow