def applyNNBigRandom(Xin,model,reps=10,msize=500,start=150):
#Returns an adjacency matrix
n_features=Xin.shape[1]
X=Xin.copy()
#Center
X -= X.mean(axis=0)
std = X.std(axis=0)
std[std == 0] = 1
X /= std
C_Final=np.zeros((X.shape[1],X.shape[1]))
ind=np.arange(0,X.shape[1])
larger=np.zeros((msize,msize))
for i in xrange(reps):
np.random.shuffle(ind)
I=np.eye(X.shape[1])
P=I[:,ind]
larger[start:start+n_features,start:start+n_features]=P.T.dot(X.T.dot(X)).dot(P)/X.shape[0]
emp_cov_matrix=np.expand_dims(larger,0)
pred=model.predict(np.expand_dims(emp_cov_matrix,0))
pred=pred.reshape(msize,msize)[start:start+n_features,start:start+n_features]
C=np.zeros((X.shape[1],X.shape[1]))
C[np.triu_indices(n_features,k=1)]=pred[np.triu_indices(n_features,k=1)]
C=C+C.T
C=P.dot(C).dot(P.T)
C_Final+=C
C_Final=C_Final/float(reps)
return C_Final
评论列表
文章目录