Exemple #1
0
    def test_scipy_integer_dist_interval_bug(self):
        """Scipy does not return the correct answer for integer distributions."""
        dim = Integer('yolo', 'randint', -3, 6)
        assert dim.interval() == (-3, 6)
        assert dim.interval(1.0) == (-3, 6)
        assert dim.interval(0.9999) == (-3, 6)

        dim = Integer('yolo2', 'randint', -2, 4, loc=8)
        assert dim.interval() == (6, 12)
Exemple #2
0
    def _sample_int_point(
        self,
        dimension: Integer,
        below_points: numpy.ndarray | Sequence[numpy.ndarray],
        above_points: numpy.ndarray | Sequence[numpy.ndarray],
    ):
        """Sample one value for integer dimension based on the observed good and bad points"""
        low, high = dimension.interval()
        assert isinstance(low, int)
        assert isinstance(high, int)
        choices = range(low, high + 1)

        below_points = numpy.array(below_points).astype(int) - low
        above_points = numpy.array(above_points).astype(int) - low

        sampler_below = CategoricalSampler(self, below_points, choices)
        candidate_points = sampler_below.sample(self.n_ei_candidates)

        sampler_above = CategoricalSampler(self, above_points, choices)

        lik_below = sampler_below.get_loglikelis(candidate_points)
        lik_above = sampler_above.get_loglikelis(candidate_points)

        new_point: numpy.ndarray = compute_max_ei_point(
            candidate_points, lik_below, lik_above
        )
        new_point = new_point + low
        return new_point
Exemple #3
0
    def test_simple_instance(self, seed):
        """Test Integer.__init__."""
        dim = Integer('yolo', 'uniform', -3, 6)
        samples = dim.sample(seed=seed)
        assert len(samples) == 1
        assert samples[0] == -2

        assert dim.interval() == (-3, 3)
        assert dim.interval(0.5) == (-2, 2)

        assert 1.0 in dim

        assert str(dim) == "Integer(name=yolo, prior={uniform: (-3, 6), {}}, "\
                           "shape=(), default value=None)"

        assert dim.name == 'yolo'
        assert dim.type == 'integer'
        assert dim.shape == ()
Exemple #4
0
def discrete_grid(dim: Integer, num: int):
    """Build discretized real grid"""
    grid = real_grid(dim, num)

    _, b = dim.interval()

    discrete_grid = [int(numpy.round(grid[0]))]
    for v in grid[1:]:
        int_v = int(numpy.round(v))
        if int_v <= discrete_grid[-1]:
            int_v = discrete_grid[-1] + 1

        if int_v > b:
            log.warning(f"Cannot list {num} discrete values for {dim.name}. "
                        "Will use {len(discrete_grid)} points instead.")
            break

        discrete_grid.append(int_v)

    return discrete_grid
Exemple #5
0
 def test_interval_with_infs(self):
     """Regression test: Interval handles correctly extreme bounds."""
     dim = Integer('yolo', 'poisson', 5)
     # XXX: Complete this on both end of interval when scipy bug is fixed
     assert dim.interval()[1] == np.inf
Exemple #6
0
 def test_inclusive_intervals(self):
     """Test that discretized bounds are valid"""
     dim = Integer("yolo", "uniform", -3, 5.5)
     assert dim.interval() == (-3, 3)