Question 1.3: Visualization of the Eigen-Directions


In [ ]:
import sys
print(sys.version)

In [ ]:
import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt
%matplotlib inline
import time

import pandas as pd
import seaborn as sns

In [ ]:
import sys
sys.path.append('../code/')

In [ ]:
from pca import Pca, make_image

In [ ]:
from classification_base import MNIST_PATH
from mnist_helpers import mnist_training, mnist_testing

In [ ]:
train_X, train_y = mnist_training(shuffled=True)
#test_X, test_y = mnist_testing(shuffled=True)

1) Display the first 10 eigenvectors as images.


In [ ]:
eigenvectors = np.load("./data/Q-1-2_eigenvectors.npy")
sigma = np.load("./data/Q-1-2_sigma.npy")

In [ ]:
# Show two native numbers.
make_image(train_X[1,:])
make_image(train_X[2,:])

In [ ]:
from sklearn.decomposition import PCA
pca = PCA(n_components=10)
pca.fit(train_X)
make_image(pca.components_[1,:])

In [ ]:
make_image(eigenvectors[:,0])

In [ ]:
make_image(eigenvectors[:,1])

In [ ]:
# Loop over first 10 eigenvectors and save them.
for i in range(0, 10):
    make_image(eigenvectors[:,i], "../figures/eigenvectors/ev_{}.png".format(i))
    make_image(eigenvectors[:,i], "ev_{}.png".format(i))

In [ ]:
# convert +append a.png b.png c.png
!convert +append ev_0.png ev_1.png ev_2.png ev_3.png ev_4.png ev_5.png ev_6.png ev_7.png ev_8.png ev_9.png ../figures/eigenvectors.jpg

In [ ]:
! rm ev_*.png

2) Provide a brief interpretation of what you think they capture


In [ ]: