fix(ml): extract class labels from model when metadata is missing

The model info returned empty labels array because the pkl file has
no metadata dict. Now extracts labels from model.classes_ or
model.model.classes_ as fallback.
This commit is contained in:
Marko Djordjevic 2026-02-15 22:18:16 +01:00
parent be09cef098
commit f7b154f866

View file

@ -257,6 +257,15 @@ def load_model_from_local(model_path: str) -> tuple[Any, Dict[str, Any]]:
model = model_data model = model_data
metadata = {} metadata = {}
# Extract labels from model if not in metadata
labels = metadata.get("labels", [])
if not labels:
# Try to get class labels from the model itself
if hasattr(model, 'classes_'):
labels = [str(c) for c in model.classes_]
elif hasattr(model, 'model') and hasattr(model.model, 'classes_'):
labels = [str(c) for c in model.model.classes_]
# Build model info # Build model info
model_info = { model_info = {
"model_name": model_path.stem, "model_name": model_path.stem,
@ -265,7 +274,7 @@ def load_model_from_local(model_path: str) -> tuple[Any, Dict[str, Any]]:
"trained_at": metadata.get("trained_at", None), "trained_at": metadata.get("trained_at", None),
"dataset_version": metadata.get("dataset_version", None), "dataset_version": metadata.get("dataset_version", None),
"feature_engineering_enabled": metadata.get("feature_engineering_enabled", True), "feature_engineering_enabled": metadata.get("feature_engineering_enabled", True),
"labels": metadata.get("labels", []), "labels": labels,
"per_class_metrics": metadata.get("per_class_metrics", []) "per_class_metrics": metadata.get("per_class_metrics", [])
} }