()
| 88 | |
| 89 | |
| 90 | def test_cat_parameters(): |
| 91 | fruit_ratings = {"apple": 1.0, "banana": 2.0, "mango": 5.0, "honeydew melon": -10.0, "strawberry": np.pi} |
| 92 | |
| 93 | def target_func(fruit: str): |
| 94 | return fruit_ratings[fruit] |
| 95 | |
| 96 | fruits = ("apple", "banana", "mango", "honeydew melon", "strawberry") |
| 97 | pbounds = {"fruit": ("apple", "banana", "mango", "honeydew melon", "strawberry")} |
| 98 | space = TargetSpace(target_func, pbounds) |
| 99 | |
| 100 | assert space.dim == len(fruits) |
| 101 | assert space.empty |
| 102 | assert space.keys == ["fruit"] |
| 103 | |
| 104 | assert isinstance(space._params_config["fruit"], CategoricalParameter) |
| 105 | |
| 106 | assert space.bounds.shape == (len(fruits), 2) |
| 107 | assert (space.bounds[:, 0] == np.zeros(len(fruits))).all() |
| 108 | assert (space.bounds[:, 1] == np.ones(len(fruits))).all() |
| 109 | |
| 110 | point1 = {"fruit": "banana"} |
| 111 | target1 = 2.0 |
| 112 | space.probe(point1) |
| 113 | |
| 114 | point2 = {"fruit": "honeydew melon"} |
| 115 | target2 = -10.0 |
| 116 | space.probe(point2) |
| 117 | |
| 118 | assert (space.params[0] == np.array([0, 1, 0, 0, 0])).all() |
| 119 | assert (space.params[1] == np.array([0, 0, 0, 1, 0])).all() |
| 120 | |
| 121 | assert (space.target == np.array([target1, target2])).all() |
| 122 | |
| 123 | p1 = space._params_config["fruit"] |
| 124 | for i, fruit in enumerate(fruits): |
| 125 | assert (p1.to_float(fruit) == np.eye(5)[i]).all() |
| 126 | |
| 127 | assert (p1.kernel_transform(np.array([0.8, 0.2, 0.3, 0.5, 0.78])) == np.array([1, 0, 0, 0, 0])).all() |
| 128 | assert (p1.kernel_transform(np.array([0.78, 0.2, 0.3, 0.5, 0.8])) == np.array([0, 0, 0, 0, 1.0])).all() |
| 129 | |
| 130 | |
| 131 | def test_cateogrical_valid_bounds(): |
nothing calls this directly
no test coverage detected