예제 #1
0
    def log_pdf(self, X):
        assert (len(shape(X)) == 2)
        assert (shape(X)[1] == self.dimension)

        # compute all norms
        norms = array([norm(x) for x in X])

        # compute angles (second component first first)
        angles = arctan2(X[:, 1], X[:, 0])

        # gaussian parameters
        mu = self.radius + self.amplitude * cos(self.frequency * angles)

        log_pdf2d = zeros(len(X))
        gaussian = Gaussian(array([mu[0]]), array([[self.variance]]))
        for i in range(len(X)):
            gaussian.mu = mu[i]
            log_pdf2d[i] = gaussian.log_pdf(array([[norms[i]]]))
        if self.dimension > 2:
            remain_dims = Gaussian(zeros([self.dimension - 2]),
                                   eye(self.dimension - 2))
            log_pdfoverall = log_pdf2d + remain_dims.log_pdf(
                X[:, 2:self.dimension])
        else:
            log_pdfoverall = log_pdf2d
        return log_pdfoverall
예제 #2
0
    def log_pdf(self, X):
        assert (len(shape(X)) == 2)
        assert (shape(X)[1] == self.dimension)

        transformed = X.copy()
        transformed[:, 1] = X[:, 1] - self.bananicity * ((X[:, 0]**2) - self.V)
        transformed[:, 0] = X[:, 0] / sqrt(self.V)
        phi = Gaussian(zeros([self.dimension]), eye(self.dimension))
        return phi.log_pdf(transformed)
예제 #3
0
 def log_pdf(self, X):
     assert(len(shape(X)) == 2)
     assert(shape(X)[1] == self.dimension)
     
     transformed = X.copy()
     transformed[:, 1] = X[:, 1] - self.bananicity * ((X[:, 0] ** 2) - self.V)
     transformed[:, 0] = X[:, 0] / sqrt(self.V)
     phi = Gaussian(zeros([self.dimension]), eye(self.dimension))
     return phi.log_pdf(transformed)
예제 #4
0
 def log_pdf(self, X):
     assert(len(shape(X)) == 2)
     assert(shape(X)[1] == self.dimension)
     
     # compute all norms
     norms = array([norm(x) for x in X])
     
     # compute angles (second component first first)
     angles = arctan2(X[:, 1], X[:, 0])
     
     # gaussian parameters
     mu = self.radius + self.amplitude * cos(self.frequency * angles)
     
     log_pdf2d = zeros(len(X))
     gaussian = Gaussian(array([mu[0]]), array([[self.variance]]))
     for i in range(len(X)):
         gaussian.mu = mu[i]
         log_pdf2d[i] = gaussian.log_pdf(array([[norms[i]]]))
     if self.dimension>2:
         remain_dims=Gaussian(zeros([self.dimension-2]), eye(self.dimension-2))
         log_pdfoverall=log_pdf2d+remain_dims.log_pdf(X[:,2:self.dimension])
     else:
         log_pdfoverall=log_pdf2d
     return log_pdfoverall