Files
2026-07-13 12:49:22 +08:00

32 lines
976 B
Python

import numpy as np
import pytest
from cleanlab.internal.neighbor.metric import decide_default_metric
@pytest.mark.parametrize(
"N",
[2, 10, 50, 100, 101],
)
def test_decide_default_metric_for_2d_and_3d_features(N):
# 2D and 3D features should always use the euclidean metric, disregarding the different implementations.
for M in [2, 3]:
X = np.random.rand(N, M)
metric = decide_default_metric(X)
if hasattr(metric, "__name__"):
error_msg = "The metric should be the string 'euclidean' for N > 100."
assert N <= 100, error_msg
metric = getattr(metric, "__name__")
assert metric == "euclidean"
@pytest.mark.parametrize(
"M",
[4, 5, 10, 50, 100],
)
def test_decide_default_metric_for_high_dimensional_features(M):
# High-dimensional features should always use the cosine metric.
X = np.random.rand(100, M)
metric = decide_default_metric(X)
assert metric == "cosine"