Files
NODEDC_MISSION_CORE/tests/test_e38_perception_baseline.py
T

61 lines
2.0 KiB
Python

from __future__ import annotations
from k1link.compute.e38_perception_baseline import (
_dimension_metrics,
_predict_tree,
_train_tree,
)
def test_e38_cart_is_deterministic_and_respects_minimum_leaf() -> None:
rows = [
({"score": 0.1, "support": 0.0}, "background"),
({"score": 0.2, "support": 1.0}, "background"),
({"score": 0.7, "support": 3.0}, "object"),
({"score": 0.8, "support": 4.0}, "object"),
({"score": 0.9, "support": 5.0}, "object"),
({"score": 1.0, "support": 6.0}, "object"),
]
first = _train_tree(
rows,
feature_names=["score", "support"],
max_depth=3,
min_leaf=2,
)
second = _train_tree(
rows,
feature_names=["score", "support"],
max_depth=3,
min_leaf=2,
)
assert first == second
assert _predict_tree(first, {"score": 0.15, "support": 1.0}) == "background"
assert _predict_tree(first, {"score": 0.85, "support": 4.0}) == "object"
def test_e38_dimension_metrics_do_not_blend_strata() -> None:
rows = [
{
"source_stratum": "agree",
"prediction": {"presence": "object-present"},
"reference": {"presence": "object-present"},
},
{
"source_stratum": "agree",
"prediction": {"presence": "object-present"},
"reference": {"presence": "background-or-noise"},
},
{
"source_stratum": "geometry-only",
"prediction": {"presence": "occupied-environment"},
"reference": {"presence": "occupied-environment"},
},
]
metrics = _dimension_metrics(rows, dimension="presence", target=0.9)
assert metrics["correct"] == 2
assert metrics["incorrect"] == 1
assert metrics["accuracy"] == 0.666667
assert metrics["passed"] is False
assert metrics["by_stratum"]["agree"]["accuracy"] == 0.5
assert metrics["by_stratum"]["geometry-only"]["accuracy"] == 1.0