From dcea15d97b9c63f38dcc0b15d1ced96338392016 Mon Sep 17 00:00:00 2001 From: ocourtin Date: Mon, 8 Oct 2018 19:18:00 +0200 Subject: [PATCH] Division by zero handling in metrics. Cf https://github.com/mapbox/robosat/issues/124 --- robosat/metrics.py | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/robosat/metrics.py b/robosat/metrics.py index 443bab42..5d125e2a 100644 --- a/robosat/metrics.py +++ b/robosat/metrics.py @@ -54,7 +54,13 @@ def get_fg_iou(self): Returns: The foreground Intersection over Union score for all observations seen so far. """ - return self.tp / (self.tp + self.fn + self.fp) + + try: + iou = self.tp / (self.tp + self.fn + self.fp) + except ZeroDivisionError: + iou = float("Inf") + + return iou def get_mcc(self): """Retrieves the Matthew's Coefficient Correlation score. @@ -62,9 +68,15 @@ def get_mcc(self): Returns: The Matthew's Coefficient Correlation score for all observations seen so far. """ - return (self.tp * self.tn - self.fp * self.fn) / math.sqrt( - (self.tp + self.fp) * (self.tp + self.fn) * (self.tn + self.fp) * (self.tn + self.fn) - ) + + try: + mcc = (self.tp * self.tn - self.fp * self.fn) / math.sqrt( + (self.tp + self.fp) * (self.tp + self.fn) * (self.tn + self.fp) * (self.tn + self.fn) + ) + except ZeroDivisionError: + mcc = float("Inf") + + return mcc # Todo: