예제 #1
0
 def __init__(self, X):
     assert X.shape[0] == 2
     p = X[0]
     q = X[1]
     if p[..., -1] < q[..., -1]:
         self.X = X
     else:
         self.X = np.array([q, p])
     y = X[..., -1:]
     A = np.hstack([X[..., :-1], np.ones((X.shape[0], 1), dtype=X.dtype)])
     self.theta = (np.linalg.lstsq(A, y)[0]).flatten()
예제 #2
0
 def __create_lines(self, p, q):
     '''
     for two points p,q compute all four possible separation lines_registry
     '''
     # TODO update it for high dimensions
     (x1, y1) = partition(p)
     x1 = x1[0]
     (x2, y2) = partition(q)
     x2 = x2[0]
     y_delta = math.fabs(y1 - y2)
     eps = 0.1
     delta = y_delta * eps
     pq_lines = []
     y1u = y1 + delta
     y1b = y1 - delta
     y2u = y2 + delta
     y2b = y2 - delta
     pq_lines.append(HighDimLine(np.array([(x1, y1u), (x2, y2u)])))
     pq_lines.append(HighDimLine(np.array([(x1, y1b), (x2, y2b)])))
     pq_lines.append(HighDimLine(np.array([(x1, y1u), (x2, y2b)])))
     pq_lines.append(HighDimLine(np.array([(x1, y1b), (x2, y2u)])))
     return pq_lines
def create_grid_points(n, d):
    assert d == 2
    np_points = np.zeros(shape=(n, d), dtype=float)
    root_n = int(math.ceil(math.sqrt(n)))
    eps = 0.1
    x = 0.0
    y = 0.0
    row = 0
    diff = 5.0
    for i in range(root_n):
        y = 0.0
        for j in range(root_n):
            x_eps = random.uniform(-eps, eps)
            y_eps = random.uniform(-eps, eps)
            np_points[row] = np.array((x + x_eps, y + y_eps))
            row += 1
            y += diff
        x += diff
    assert row == n
    point_set = PointSet(np_points, n, d)
    point_set.name = 'grid'
    return point_set
 def results(self):
     A = np.array(self.computed_results)
     res = np.mean(A, axis=0)
     return res.tolist()
예제 #5
0
 def call(self, p):
     assert len(p.shape) == 1
     X = np.array([p])
     y = self(X)
     return y[0]