ihsg-forecasting-dashboard / scripts /evaluate_models.py
ElvssYo's picture
Upgrade dashboard fullscreen chart workspace
90eddf9
Raw
History Blame Contribute Delete
1.75 kB
"""Compare baseline and NLP global model metrics."""
from __future__ import annotations
import argparse
import logging
from pathlib import Path
import sys
from kag.logging import configure_logging
from kag.modeling.global_model import (
build_model_comparison,
load_result_json,
write_json,
write_model_comparison_markdown,
)
DEFAULT_BASELINE_METRICS_PATH = Path("reports/baseline_metrics.json")
DEFAULT_NLP_METRICS_PATH = Path("reports/nlp_metrics.json")
DEFAULT_OUTPUT_PATH = Path("reports/metrics.json")
DEFAULT_MARKDOWN_PATH = Path("reports/model_comparison.md")
logger = logging.getLogger(__name__)
def parse_args() -> argparse.Namespace:
parser = argparse.ArgumentParser(description=__doc__)
parser.add_argument("--baseline-metrics", type=Path, default=DEFAULT_BASELINE_METRICS_PATH)
parser.add_argument("--nlp-metrics", type=Path, default=DEFAULT_NLP_METRICS_PATH)
parser.add_argument("--output", type=Path, default=DEFAULT_OUTPUT_PATH)
parser.add_argument("--markdown-output", type=Path, default=DEFAULT_MARKDOWN_PATH)
return parser.parse_args()
def main() -> int:
args = parse_args()
configure_logging()
try:
baseline_result = load_result_json(args.baseline_metrics)
nlp_result = load_result_json(args.nlp_metrics)
comparison = build_model_comparison(baseline_result, nlp_result)
write_json(comparison, args.output)
write_model_comparison_markdown(comparison, args.markdown_output)
except Exception:
logger.exception("Model evaluation failed")
return 1
logger.info("Model evaluation succeeded; output=%s markdown=%s", args.output, args.markdown_output)
return 0
if __name__ == "__main__":
sys.exit(main())