def test(): numSamples = 15000 meanVector = np.array([1., -1., 0.]) covMatrix = np.array([[2., 0.1, 0.], [0.1, 1.5, -0.1], [0., -0.1, 0.01]]) sampler = CorrelatedGaussianSampler(meanVector=meanVector, covMatrix=covMatrix) sampledVectors = [] for i in range(numSamples): sampledVector = sampler.sampleOneVector() sampledVectors.append(sampledVector) # find the mean vector print vecMean(sampledVectors) # find the covariance matrix print covMat(sampledVectors)
def importVectors(self, vectors): self.trainVectors = vectors self.covMatrix = covMat(vectors) self.vecMean = vecMean(vectors) # PCA u, s, v = np.linalg.svd(self.covMatrix) self.diagCovVal = s self.U = v self.invU = np.linalg.inv(v)
def testrun(): #meanVector = np.array([1., -1.]) #covMatrix = np.array([[1., 0], [0, 2.]]) meanVector = np.array([1., -1., 0.]) covMatrix = np.array([[2., 0.1, 0.], [0.1, 1.5, -0.1], [0., -0.1, 0.01]]) ndim = len(meanVector) f = partial(unnormalizedMultivariateGaussianDist, meanVec = meanVector, covMat = covMatrix) # for testing and comparison purpose invCovMat = np.linalg.inv(covMatrix) f = lambda vec: np.exp(-0.5*np.matrix(vec-meanVector)*np.matrix(invCovMat)*np.transpose(np.matrix(vec-meanVector))) chain = MarkovChainByGibbsSampling(f, 15000, ndim) print vecMean(chain) print covMat(chain)