主成分分析

Pythonで学ぶ次元削減

Jeroen Boeye

Head of Machine Learning, Faktion

PCAの概念

手長 vs. 足長(2本のベクトル)

Pythonで学ぶ次元削減

PCAの概念

手長 vs. 足長(ベクトルと座標)

Pythonで学ぶ次元削減

PCAの概念

手長 vs. 足長(ベクトルとPC座標)

Pythonで学ぶ次元削減

主成分の計算

from sklearn.preprocessing import StandardScaler

scaler = StandardScaler()
std_df = scaler.fit_transform(df)

from sklearn.decomposition import PCA pca = PCA() print(pca.fit_transform(std_df))
[[-0.08320426 -0.12242952]
 [ 0.31478004  0.57048158]
 ...
 [-0.5609523   0.13713944]
 [-0.0448304  -0.37898246]]
Pythonで学ぶ次元削減

PCAは相関を除去

PCA変換

Pythonで学ぶ次元削減

主成分の寄与率

from sklearn.decomposition import PCA

pca = PCA()

pca.fit(std_df)

print(pca.explained_variance_ratio_)
array([0.90, 0.10])
Pythonで学ぶ次元削減

次元削減のためのPCA

左脚 vs. 右脚

Pythonで学ぶ次元削減

次元削減のためのPCA

左脚 vs. 右脚(ベクトル付き)

print(pca.explained_variance_ratio_)
array([0.9997, 0.0003])
Pythonで学ぶ次元削減

次元削減のためのPCA

pca = PCA()

pca.fit(ansur_std_df)

print(pca.explained_variance_ratio_)
array([0.44, 0.18, 0.04, 0.03, 0.02, 0.02, 0.02, 0.01, 0.01, 0.01, 0.01,
       0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01,
       0.01, 0.01, 0.01, 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  ,
       ...
       0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  ,
       0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  ,
       0.  , 0.  , 0.  , 0.  , 0.  , 0.  ])
Pythonで学ぶ次元削減

次元削減のためのPCA

pca = PCA()

pca.fit(ansur_std_df)

print(pca.explained_variance_ratio_.cumsum())
array([0.44, 0.62, 0.66, 0.69, 0.72, 0.74, 0.76, 0.77, 0.79, 0.8 , 0.81,
       0.82, 0.83, 0.84, 0.85, 0.86, 0.87, 0.87, 0.88, 0.89, 0.89, 0.9 ,
       0.9 , 0.91, 0.92, 0.92, 0.92, 0.93, 0.93, 0.94, 0.94, 0.94, 0.95,
       ...
       0.99, 0.99, 0.99, 0.99, 0.99, 1.  , 1.  , 1.  , 1.  , 1.  , 1.  ,
       1.  , 1.  , 1.  , 1.  , 1.  , 1.  , 1.  , 1.  , 1.  , 1.  , 1.  ,
       1.  , 1.  , 1.  , 1.  , 1.  , 1.  ])
Pythonで学ぶ次元削減

演習に進みましょう!

Pythonで学ぶ次元削減

Preparing Video For Download...