UD5 · Protocolización y documentación técnica | MP03 · Desarrollo de componentes para sistemas de ML
Pruebas de regresión para componentes ML
Las pruebas de regresión garantizan que una nueva versión del componente no introduce degradación en el rendimiento respecto a la versión anterior.
import pytest
import joblib
import numpy as np
from sklearn.metrics import f1_score
TEXTOS_REFERENCIA = [
"Este texto es completamente inofensivo",
"Texto con contenido claramente inapropiado",
"Comentario neutro sobre el tema",
]
ETIQUETAS_REFERENCIA = [0, 1, 0]
UMBRAL_F1_MINIMO = 0.75
class TestRegresionRendimiento:
@pytest.fixture
def modelo(self):
return joblib.load("modelos/toxicidad_v1.2.0.joblib")
def test_f1_no_regresiona(self, modelo):
predicciones = modelo.predict(TEXTOS_REFERENCIA)
f1 = f1_score(ETIQUETAS_REFERENCIA, predicciones)
assert f1 >= UMBRAL_F1_MINIMO, (
f"Regresion detectada: F1={f1:.3f} < umbral={UMBRAL_F1_MINIMO}"
)
def test_predicciones_deterministas(self, modelo):
pred_1 = modelo.predict(TEXTOS_REFERENCIA)
pred_2 = modelo.predict(TEXTOS_REFERENCIA)
np.testing.assert_array_equal(pred_1, pred_2)