Пример #1
0
	def test_shape(self):
		x = load_and_center_dataset(mnist_path)
		S = get_covariance(x)
		_, U = get_eig(S, 2)
		# This is the image of the "9" in the spec
		projected = project_image(x[3], U)

		self.assertEqual(np.shape(projected), (784,))
		self.assertAlmostEqual(np.min(projected), -113.79455198736488)
		self.assertAlmostEqual(np.max(projected), 120.0658469887994)
Пример #2
0
import utilities as ut
import pca
import os

path = '../data/'

database = 'orl_faces'
subspace = 'orl_subspace.npz'
components = 400
rows = 112
columns = 92

if not os.path.exists(path + subspace):
   M = ut.load_images(database) 
   eigenvalues, W, mu = pca.create_subspace(M, components)
   pca.save_subspace(path + subspace, eigenvalues, W, mu)
else:
   eigenvalues, W, mu = pca.load_subspace(path + subspace)

img = ut.create_image(rows,columns, 3)

x = pca.project_image(img,W,mu)
y = pca.reverse_projection(x,W,mu)
image = ut.normalize_image(ut.unflatten_image(y,rows,columns))

original = ut.unflatten_image(img,rows,columns)

ut.display_image(image)
ut.display_image(original)
Пример #3
0
    a1 = axs[0].imshow(orig.reshape((28, 28)), aspect='equal', cmap='gray')
    axs[0].set_title("Original")

    for i in range(len(projs)):
        a = axs[i + 1].imshow(projs[i].reshape((28, 28)),
                              aspect='equal',
                              cmap='gray')
        axs[i + 1].set_title(titles[i])

    plt.show()


if __name__ == '__main__':
    data = pca.load_and_center_dataset("mnist.npy")
    cov = pca.get_covariance(data)

    _, eig10 = pca.get_eig(cov, 10)
    _, eig25 = pca.get_eig(cov, 25)
    _, eig100 = pca.get_eig(cov, 100)
    _, eig250 = pca.get_eig(cov, 250)
    _, eig500 = pca.get_eig(cov, 500)

    image = data[782]
    projs = (pca.project_image(image,
                               eig500), pca.project_image(image, eig250),
             pca.project_image(image, eig100), pca.project_image(image, eig25),
             pca.project_image(image, eig10))
    titles = ("n_components=500", "n_components=250", "n_components=100",
              "n_components=25", "n_components=10")

    display_multiple_images(image, projs, titles)
Пример #4
0
import pca
import os

path = '../data/'

database = 'orl_faces/'
subspace = 'orl_subspace.npz'
image_path = database + 's10/1.pgm'
components = 400
rows = 112
columns = 92

if not os.path.exists(path + subspace):
   M = ut.load_images(database) 
   eigenvalues, W, mu = pca.create_subspace(M, components)
   pca.save_subspace(path + subspace, eigenvalues, W, mu)
else:
   eigenvalues, W, mu = pca.load_subspace(path + subspace)

img = ut.load_image(image_path)
num_components = [1,2,3,4,5,6,7,8,9,10,15,20,50,75,100,150,200,400]
for i in num_components: 
    x = pca.project_image(img,W[:,1:i],mu)
    y = pca.reverse_projection(x,W[:,1:i],mu)
    image = ut.normalize_image(ut.unflatten_image(y,rows,columns))

    original = ut.unflatten_image(img,rows,columns)

    ut.display_image(image, str(i) + ' components')
    ut.display_image(original, 'original')