In [1]:
from scipy import linalg
In [40]:
import numpy as np
import numpy.random as npr
import pylab as pl
%matplotlib inline
In [171]:
X = np.zeros((5000,100))
for i in range(1,len(X)):
X[i] = npr.randn(X.shape[1]) + X[i-1]
In [172]:
pl.scatter(X[:,0],X[:,1],c=range(len(X)),alpha=0.5,linewidth=0)
pl.colorbar()
Out[172]:
In [173]:
t=100
In [174]:
pl.imshow(np.cov(X[t:].T,X[:-t].T),interpolation='none')
pl.colorbar()
Out[174]:
In [175]:
pl.imshow(np.cov(X[t:].T),interpolation='none')
pl.colorbar()
Out[175]:
In [176]:
k = X.shape[1]
In [177]:
A = np.zeros((k*4,k*4))
A[k*2:,:k*2] = np.cov(X[:-t].T,X[t:].T)
A[:k*2,k*2:] = np.cov(X[t:].T,X[:-t].T)
In [178]:
A
Out[178]:
In [179]:
regx = 0.1
regy = 0.1
In [180]:
B = np.zeros((k*4,k*4))
B[:k*2,:k*2] = np.cov(X[t:].T,X[t:].T) + np.diag(np.ones(k*2))*regx
B[k*2:,k*2:] = np.cov(X[:-t].T,X[:-t].T) + np.diag(np.ones(k*2))*regy
In [181]:
B
Out[181]:
In [182]:
vals,vecs = linalg.eigh(A,B)
In [183]:
pl.plot(vals)
Out[183]:
In [ ]: