def test_pal_base(make_random_dataset): """Testing basic functionality of the PAL base class""" palinstance = PALBase(make_random_dataset[0], ["model"], 3) assert palinstance.number_discarded_points == 0 assert palinstance.number_pareto_optimal_points == 0 assert palinstance.number_unclassified_points == 100 assert palinstance.number_sampled_points == 0 assert palinstance.number_design_points == 100 assert palinstance.should_cross_validate() assert len(palinstance.discarded_points) == 0 assert len(palinstance.pareto_optimal_points) == 0 assert len(palinstance.unclassified_points) == 100 with pytest.raises(ValueError): palinstance.hyperrectangle_sizes # pylint:disable=pointless-statement assert (str(palinstance) == "pyepal at iteration 1. \ 0 Pareto optimal points, \ 0 discarded points, \ 100 unclassified points.") assert palinstance._should_optimize_hyperparameters() assert not palinstance._has_train_set with pytest.raises(ValueError): palinstance.sample() assert palinstance.y.shape == (100, 3) assert not palinstance.uses_fixed_epsilon palinstance = PALBase(make_random_dataset[0], ["model"], 3, ranges=[1, 1, 1]) assert palinstance.uses_fixed_epsilon
def test_sample(make_random_dataset): """Test the sampling""" X, _ = make_random_dataset # pylint:disable=invalid-name palinstance = PALBase(X, ["model"], 4) lows = np.array([ [0.0, 0.0, 0.0, 0.0], [-1.0, -1.0, -1.0, -1.0], [-2.0, -2.0, -2.0, -2.0], [2.0, 2.0, 2.0, 2.0], ]) highs = np.array([ [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [2.0, 2.0, 2.0, 2.0], ]) means = np.array([[1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1]]) palinstance._means = means pareto_optimal = np.array([False, False, True, True]) sampled = np.array([[False] * 4, [False] * 4, [False] * 4, [False] * 4]) unclassified = np.array([True, True, False, False]) palinstance.rectangle_lows = lows palinstance.rectangle_ups = highs palinstance.sampled = sampled palinstance.pareto_optimal = pareto_optimal palinstance.unclassified = unclassified sampled_idx = palinstance.sample() assert sampled_idx == 2 pareto_optimal = np.array([False, False, True, True]) sampled = np.array([[False] * 4, [False] * 4, [False] * 4, [False] * 4]) unclassified = np.array([True, True, False, False]) palinstance.sampled = sampled palinstance.pareto_optimal = pareto_optimal palinstance.unclassified = unclassified sampled_idx = palinstance.sample() assert sampled_idx == 2 pareto_optimal = np.array([False, False, True, True]) sampled = np.array([[False] * 4, [False] * 4, [True] * 4, [False] * 4]) unclassified = np.array([True, True, False, False]) palinstance.sampled = sampled palinstance.pareto_optimal = pareto_optimal palinstance.unclassified = unclassified sampled_idx = palinstance.sample() assert sampled_idx == 1 pareto_optimal = np.array([False, False, False, True]) sampled = np.array([[False] * 4, [False] * 4, [True] * 4, [False] * 4]) unclassified = np.array([True, True, False, False]) palinstance.sampled = sampled palinstance.pareto_optimal = pareto_optimal palinstance.unclassified = unclassified sampled_idx = palinstance.sample() assert sampled_idx == 1