Exemple #1
0
 def multivariate_norm_log_pdf(self,x,mu,cov):
     # -0.5 * (dot(x-mu,dot(inv(cov),x-mu)) + len(x)*log(2*pi) + log(det(cov)))
     self.vec_d_y[:] = x
     self.vec_d_y[:] -= mu
     solve(cov,reshape(self.vec_d_y,(-1,1)),reshape(self.vec_d_y2,(-1,1)),
           self.covf,self.colvecf,self.pivotscov)
     ret = dot(self.vec_d_y,self.vec_d_y2)
     ret += len(x)*log(2*pi)
     lu(cov,self.pcov,self.Lcov,self.Ucov,self.covf,self.pivotscov)
     getdiag(self.Ucov,self.vec_d_y)
     absolute(self.vec_d_y,self.vec_d_y2)
     log(self.vec_d_y2,self.vec_d_y)
     ret += sum(self.vec_d_y)
     ret *= -0.5
     return ret
Exemple #2
0
 def multivariate_norm_log_pdf(self, x, mu, cov):
     # -0.5 * (dot(x-mu,dot(inv(cov),x-mu)) + len(x)*log(2*pi) + log(det(cov)))
     self.vec_d_y[:] = x
     self.vec_d_y[:] -= mu
     solve(cov, reshape(self.vec_d_y, (-1, 1)),
           reshape(self.vec_d_y2, (-1, 1)), self.covf, self.colvecf,
           self.pivotscov)
     ret = dot(self.vec_d_y, self.vec_d_y2)
     ret += len(x) * log(2 * pi)
     lu(cov, self.pcov, self.Lcov, self.Ucov, self.covf, self.pivotscov)
     getdiag(self.Ucov, self.vec_d_y)
     absolute(self.vec_d_y, self.vec_d_y2)
     log(self.vec_d_y2, self.vec_d_y)
     ret += sum(self.vec_d_y)
     ret *= -0.5
     return ret
Exemple #3
0
 def multivariate_norm_log_pdf(self,x,mu,cov):
     #return -0.5 * (dot(x-mu,dot(inv(cov),x-mu)) + len(x)*log(2*pi) + sum(log(eigvals(cov))))
     #return_old =  -0.5 * (dot(x-mu,solve(cov,x-mu)) + len(x)*log(2*pi) + sum(log(abs(diag(scipy.linalg.lu(cov)[2])))))
     self.vec_d_y[:] = x
     self.vec_d_y[:] -= mu
     solve(cov,reshape(self.vec_d_y,(-1,1)),reshape(self.vec_d_y2,(-1,1)),
           self.covf,self.colvecf,self.pivotscov)
     ret = dot(self.vec_d_y,self.vec_d_y2)
     ret += len(x)*log(2*pi)
     lu(cov,self.pcov,self.Lcov,self.Ucov,self.covf,self.pivotscov)
     getdiag(self.Ucov,self.vec_d_y)
     absolute(self.vec_d_y,self.vec_d_y2)
     log(self.vec_d_y2,self.vec_d_y)
     ret += sum(self.vec_d_y)
     ret *= -0.5
     return ret
Exemple #4
0
 def multivariate_norm_log_pdf(self, x, mu, cov):
     #return -0.5 * (dot(x-mu,dot(inv(cov),x-mu)) + len(x)*log(2*pi) + sum(log(eigvals(cov))))
     #return_old =  -0.5 * (dot(x-mu,solve(cov,x-mu)) + len(x)*log(2*pi) + sum(log(abs(diag(scipy.linalg.lu(cov)[2])))))
     self.vec_d_y[:] = x
     self.vec_d_y[:] -= mu
     solve(cov, reshape(self.vec_d_y, (-1, 1)),
           reshape(self.vec_d_y2, (-1, 1)), self.covf, self.colvecf,
           self.pivotscov)
     ret = dot(self.vec_d_y, self.vec_d_y2)
     ret += len(x) * log(2 * pi)
     lu(cov, self.pcov, self.Lcov, self.Ucov, self.covf, self.pivotscov)
     getdiag(self.Ucov, self.vec_d_y)
     absolute(self.vec_d_y, self.vec_d_y2)
     log(self.vec_d_y2, self.vec_d_y)
     ret += sum(self.vec_d_y)
     ret *= -0.5
     return ret