Python

Pythonで機械学習を学ぶ 主成分分析

教師なし学習の次元圧縮の一つ。データが持つ情報をできるだけ残して変数の数を圧縮できる。探索的分析・予測モデル構築時の前処理として使われている。

サンプルコード

import numpy as np
import scipy as sp
from sklearn.datasets import make_classification
from sklearn.decomposition import PCA
import matplotlib.pyplot as plt

# サンプルデータを生成
X, y = make_classification(n_samples=200, n_features=2, n_redundant=0, n_informative=2,
                           n_classes=1, n_clusters_per_class=1, random_state=0)

# 主成分分析
pca = PCA(n_components=2)
pca.fit(X)

# 可視化
plt.scatter(X[:, 0], X[:, 1], alpha=0.5)

for l, vector in zip(pca.explained_variance_, pca.components_):
    v = vector * 3 * np.sqrt(l)
    plt.annotate('',  pca.mean_ + v, pca.mean_,
                 arrowprops=dict(connectionstyle='arc3', width=2))

plt.axis('equal')
plt.show()

実行結果