def ITQtrain(data,nbit, niter):
data_mean=npy.mean(data,axis=0)
data=data-data_mean
objPCA=PCA(copy=True,n_components=nbit, whiten=False)
dataTrans=objPCA.fit_transform(data)
codeITQ=npy.ones(dataTrans.shape, dtype=npy.float32)
codeITQ[dataTrans<0]=-1
for tau in range(niter):
dataTemp1=npy.dot(codeITQ.T,dataTrans)
matL,sig, matR=svd(dataTemp1)
matRot=npy.dot(matR.T,matL.T)
dataTemp2=dataTrans.dot(matRot)
codeITQ=npy.ones(dataTrans.shape, dtype=npy.float32)
codeITQ[dataTemp2<0]=-1
modelITQ={"mu":data_mean,"objPCA":objPCA, "matRot":matRot}
return modelITQ
评论列表
文章目录