numpyを使って主成分分析

古いソースが出てきたので、とりあえずメモ

#coding:utf-8
import numpy

#主成分分析関数
def PCA(P):
    m = sum(P) / float(len(P))
    P_m = P - m
    l,v = numpy.linalg.eig( numpy.dot(P_m.T,P_m) )
    return v.T

#分析する標本集合
points = numpy.array([ [-1,-2, 1],
                       [ 1, 0, 2],
                       [ 2,-1, 3],
                       [ 2,-1, 2]])

pca = PCA(points)
print pca
#[[第1主成分],[第2主成分],[第3主成分]...]
#[[-0.83339667 -0.33030475 -0.44311259]
# [-0.4891064   0.06746508  0.86961106]
# [ 0.25734204 -0.94146016  0.21777935]]