pythonで主成分分析

pythonで主成分分析をしてみた。

#! usr/bin/python
# -*- coding:utf-8 -*-
import numpy as np
import scipy as sp
from scipy import linalg
import csv

# imput data
fileName = './input/pcaTest.csv'
inputCSV = csv.reader(open(fileName,"rb"))
#data matrix
dataX = sp.array([map(str,row) for row in inputCSV])[1:,1:]
X = np.mat([map(float,row) for row in dataX])
N = len(X)

#variance matrix
J = np.identity(N) - (1/float(N)) * np.mat(np.ones(N)).T * np.mat(np.ones(N))
C = (1/float(N))* J * X * X.T * J.T #centering

#eigenvalues and eigenvectors
la,v = linalg.eig(C)

l0 = la[0].real
l1 = la[1].real
v0 = v[:,0].real
v1 = v[:,1].real

第1・第2固有値まで取るようにした。
固有値固有ベクトル複素数で求まっているのが気になる。
固有値固有ベクトルをscipyで求めるあたりをもう少し確認しよう。