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で求めるあたりをもう少し確認しよう。