def TrainSSHNOPL(data, dataL, adjMat, nbit, eta, rau):
datamean=npy.mean(data, axis=0)
data=data-datamean
dataL=dataL-datamean
covMatU=npy.dot(data.T, data)
covMatL=npy.dot(dataL.T, npy.dot(adjMat, dataL))
covMat=eta*covMatU+(1-eta)*covMatL
eigVals, eigVecs=npy.linalg.eig(covMat)
idxSort=npy.argsort(npy.abs(eigVals))
rau=npy.max([rau, npy.max([0, -npy.abs(eigVals[idxSort[0]])])])
covMatReg=(covMat+rau*npy.eye(covMat.shape[0]))
matL= linalg.cholesky(covMatReg, lower=False)
nbit=npy.min([nbit,data.shape[1]])
projMat=npy.dot(matL, eigVecs[:,idxSort[-1:-nbit-1:-1]])
modelSSH={"datamean":datamean, "projMat":projMat}
return modelSSH
评论列表
文章目录