From 9122f0c91a2b6d329e57432573fb90dbb93bb3b2 Mon Sep 17 00:00:00 2001 From: Shxiao101 Date: Sun, 13 Sep 2026 01:02:19 +0900 Subject: [PATCH] Add epsilon to MTER progress postfix to prevent ZeroDivisionError When every sampled BPR pair is skipped (e.g. on very small datasets where all sampled pairs have equal ratings), n_bpr_samples - skipped is 0 and computing the "correct" percentage raises ZeroDivisionError. Add + 1e-8 to the denominator, consistent with the other BPR-based models fixed in #677 and #686. Co-Authored-By: Claude Opus 5 --- cornac/models/mter/recom_mter.pyx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cornac/models/mter/recom_mter.pyx b/cornac/models/mter/recom_mter.pyx index 0a1f4e2f4..75c6d5d22 100644 --- a/cornac/models/mter/recom_mter.pyx +++ b/cornac/models/mter/recom_mter.pyx @@ -419,7 +419,7 @@ class MTER(Recommender): progress.set_postfix({ "loss": "%.2f" % (loss / 3 / self.n_element_samples), "bpr_loss": "%.2f" % (bpr_loss / self.n_bpr_samples), - "correct": "%.2f%%" % (100.0 * correct / (self.n_bpr_samples - skipped)), + "correct": "%.2f%%" % (100.0 * correct / (self.n_bpr_samples - skipped + 1e-8)), "skipped": "%.2f%%" % (100.0 * skipped / self.n_bpr_samples) })