In [18]:
%matplotlib inline

# 主成分分析 principal component analysis,PCA
import numpy as np
import matplotlib.pyplot as plt

# サンプルデータの作成
np.random.seed(0)
X = np.random.random(size=50) 
Y = 2 * X + 0.5 * np.random.rand(50)

# サンプルデータの可視化
fig, ax = plt.subplots()
ax.scatter(X,Y)
plt.show()
In [28]:
# 主成分分析(PCA)のインスタンスを作成する
from sklearn.decomposition import PCA
pca = PCA(n_components=2)
'''
PCA(copy=True, iterated_power='auto', n_components=2, random_state=None,
  svd_solver='auto', tol=0.0, whiten=False)
'''
# 主成分分析を実行
X_pca = pca.fit_transform(np.hstack((X[:,np.newaxis], Y[:, np.newaxis])))

# 主成分分析結果を可視化する
fig, ax =plt.subplots()
ax.scatter(X_pca[:, 0], X_pca[:, 1])
ax.set_xlabel('PC1')
ax.set_ylabel('PC2')
ax.set_xlim(-1.1, 1.1)
ax.set_ylim(-1.1, 1.1)
plt.show()
'''
結果:軸PC1方向にデータは散らばっているが軸PC2にはあまり散らばっていない。
'''
In [30]:
X_pca
Out[30]:
array([[ 9.74355677e-02,  3.50667415e-02],
       [ 4.10195424e-01,  1.50054727e-03],
       [ 4.06295751e-01,  1.24495731e-01],
       [-1.22082619e-01, -6.67200067e-02],
       [-3.45045254e-01, -3.98796200e-02],
       [ 1.30441901e-01, -5.68079260e-02],
       [-1.13931018e-01,  5.64044746e-02],
       [ 7.21599835e-01, -4.40597265e-02],
       [ 9.78223044e-01,  1.81678010e-04],
       [-4.18955321e-01, -3.09520826e-02],
       [ 4.55447945e-01, -6.16312471e-02],
       [-1.54080580e-01, -6.44337704e-02],
       [ 1.79204951e-01,  5.32464466e-02],
       [ 7.45411004e-01, -7.01160940e-02],
       [-1.13898984e+00, -3.21245460e-02],
       [-1.02552030e+00,  4.86984639e-03],
       [-9.71543904e-01,  1.05294766e-01],
       [ 5.19034565e-01, -7.63079262e-02],
       [ 7.30739962e-01,  8.65632387e-02],
       [ 6.02187555e-01, -7.76323643e-02],
       [ 1.24129641e+00,  1.10783738e-01],
       [ 6.11466173e-01,  5.55750152e-03],
       [ 8.51754617e-02,  1.26147453e-01],
       [ 6.31118753e-01,  3.57541253e-02],
       [-7.89092333e-01,  8.46039028e-02],
       [ 6.21158529e-02, -8.32135640e-02],
       [-9.38485236e-01, -1.54952633e-02],
       [ 7.79957922e-01, -7.45954042e-02],
       [-8.62169524e-02, -2.37896873e-02],
       [-4.05731166e-01, -5.92364060e-02],
       [-6.51658353e-01, -1.14238477e-02],
       [ 5.31255428e-01, -5.54389320e-03],
       [-3.37536760e-01, -7.23442412e-02],
       [ 1.96344506e-01,  6.11021014e-02],
       [-1.08924811e+00,  4.99633632e-02],
       [ 1.14109041e-01, -3.33168048e-02],
       [ 2.17793376e-01,  2.29753551e-02],
       [ 3.53657892e-02, -7.06154910e-02],
       [ 9.83046979e-01,  2.46352926e-02],
       [ 5.56464159e-01,  1.09297583e-01],
       [-4.39093486e-01, -1.41052306e-02],
       [-1.08734681e-01,  5.95340400e-02],
       [ 2.32835251e-01, -6.47622437e-02],
       [-9.29206793e-01,  8.13285337e-02],
       [ 2.34770828e-01, -2.95424965e-02],
       [ 1.95615514e-01, -5.27768597e-02],
       [-6.51908361e-01,  4.86297940e-02],
       [-1.08899173e+00, -7.22504768e-02],
       [-3.07915035e-01,  9.82916199e-02],
       [-5.70981111e-01, -8.25506536e-02]])
In [27]:
 
Out[27]:
array([[ 9.74355677e-02,  3.50667415e-02],
       [ 4.10195424e-01,  1.50054727e-03],
       [ 4.06295751e-01,  1.24495731e-01],
       [-1.22082619e-01, -6.67200067e-02],
       [-3.45045254e-01, -3.98796200e-02],
       [ 1.30441901e-01, -5.68079260e-02],
       [-1.13931018e-01,  5.64044746e-02],
       [ 7.21599835e-01, -4.40597265e-02],
       [ 9.78223044e-01,  1.81678010e-04],
       [-4.18955321e-01, -3.09520826e-02],
       [ 4.55447945e-01, -6.16312471e-02],
       [-1.54080580e-01, -6.44337704e-02],
       [ 1.79204951e-01,  5.32464466e-02],
       [ 7.45411004e-01, -7.01160940e-02],
       [-1.13898984e+00, -3.21245460e-02],
       [-1.02552030e+00,  4.86984639e-03],
       [-9.71543904e-01,  1.05294766e-01],
       [ 5.19034565e-01, -7.63079262e-02],
       [ 7.30739962e-01,  8.65632387e-02],
       [ 6.02187555e-01, -7.76323643e-02],
       [ 1.24129641e+00,  1.10783738e-01],
       [ 6.11466173e-01,  5.55750152e-03],
       [ 8.51754617e-02,  1.26147453e-01],
       [ 6.31118753e-01,  3.57541253e-02],
       [-7.89092333e-01,  8.46039028e-02],
       [ 6.21158529e-02, -8.32135640e-02],
       [-9.38485236e-01, -1.54952633e-02],
       [ 7.79957922e-01, -7.45954042e-02],
       [-8.62169524e-02, -2.37896873e-02],
       [-4.05731166e-01, -5.92364060e-02],
       [-6.51658353e-01, -1.14238477e-02],
       [ 5.31255428e-01, -5.54389320e-03],
       [-3.37536760e-01, -7.23442412e-02],
       [ 1.96344506e-01,  6.11021014e-02],
       [-1.08924811e+00,  4.99633632e-02],
       [ 1.14109041e-01, -3.33168048e-02],
       [ 2.17793376e-01,  2.29753551e-02],
       [ 3.53657892e-02, -7.06154910e-02],
       [ 9.83046979e-01,  2.46352926e-02],
       [ 5.56464159e-01,  1.09297583e-01],
       [-4.39093486e-01, -1.41052306e-02],
       [-1.08734681e-01,  5.95340400e-02],
       [ 2.32835251e-01, -6.47622437e-02],
       [-9.29206793e-01,  8.13285337e-02],
       [ 2.34770828e-01, -2.95424965e-02],
       [ 1.95615514e-01, -5.27768597e-02],
       [-6.51908361e-01,  4.86297940e-02],
       [-1.08899173e+00, -7.22504768e-02],
       [-3.07915035e-01,  9.82916199e-02],
       [-5.70981111e-01, -8.25506536e-02]])
In [ ]: