import numpy import numpy.random import pylab from dispims import dispims import logreg rng = numpy.random.RandomState(1) SMALL = 0.001 patchsize = 10 numfeatures = 100 datadir = "/home/ro/research/data/cifar/cifar-10-batches-py" def crop_patches_gray(image, keypoints, patchsize): patches = numpy.zeros((len(keypoints), patchsize**2)) for i, k in enumerate(keypoints): patches[i, :] = image[k[0]-patchsize/2:k[0]+patchsize/2, k[1]-patchsize/2:k[1]+patchsize/2].flatten() return patches def pca(data, var_fraction): """ principal components analysis of data (columnwise in array data), retaining as many components as required to retain var_fraction of the variance """ from numpy.linalg import eigh u, v = eigh(numpy.cov(data, rowvar=0, bias=1)) v = v[:, numpy.argsort(u)[::-1]] u.sort() u = u[::-1] u = u[u.cumsum()<=(u.sum()*var_fraction)] numprincomps = u.shape[0] u[u