# Visualizing Covariances in the process of whitening data

``````

In [2]:

%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt

if __name__ == "__main__":
if ('trainingFaces' not in globals()):  # In ipython, use "run -i homework2_template.py" to avoid re-loading of data

``````

### Find covariance of training data and visualize the covariance matrix

``````

In [3]:

X = trainingFaces
cov = np.cov(X.T)
small_constant = 1e-2
cov_added = cov + (small_constant * np.eye(cov.shape[0]))

plt.title('Covariance matrix')
plt.show(img)

V, U = np.linalg.eig(cov_added) #Here U is the eigenvectors of covariance and V is the eigenvalues

#sort eigenvectors
idx = V.argsort()[::-1]
V  = V[idx]
U  = U[:,idx]

diag_mat = np.diag(1. / np.sqrt(V+small_constant))

plt.title('Eigenvalue diagonal matrix')
img = plt.imshow(np.real(diag_mat))
plt.show(img)

eig_cov = np.real(np.cov(U.T))

plt.title('Eigenvector covariance matrix')
img = plt.imshow(eig_cov)
plt.show(img)

``````
``````

``````
``````

In [4]:

diag = np.diag(V)
iden = np.real(diag_mat.dot(diag.dot(diag_mat)))
diag_iden = [ iden[i][i] for i in range(len(iden))]
plt.title('Identity matrix obtained from gamma^(-1/2)*gamma*gamma^(-1/2)')
img = plt.imshow(iden)
plt.show(img)

``````
``````

``````

### Create whintening transformation and whiten data

``````

In [5]:

# white_transform = np.dot(np.dot(U, diag_mat), U.T)
white_transform = np.dot(U, diag_mat)
whitened = np.dot(X,white_transform)
cov_whitened = np.real(np.cov(whitened.T))

``````
``````

In [6]:

plt.title('Whitened training faces covariance matrix')
img = plt.imshow(cov_whitened)
plt.show(img)

``````
``````

``````
``````

In [7]:

diag_whitened_cov = [ cov_whitened[i][i] for i in range(len(cov_whitened))]

``````
``````

In [9]:

iden_lhs = np.real(diag_mat.dot(U.T.dot(cov.dot(U.dot(diag_mat)))))
diag_iden_lhs = [ iden_lhs[i][i] for i in range(len(iden_lhs))]
plt.title('Identity matrix obtained from LHS of gamma^(-1/2)*gamma*gamma^(-1/2)')
img = plt.imshow(iden_lhs)
plt.show(img)

``````
``````

``````
``````

In [ ]:

``````