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)
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)
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)
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')