From 65abbb674195d279608346af3e0c2b367f6e4b33 Mon Sep 17 00:00:00 2001
From: Gael Varoquaux <gael.varoquaux@normalesup.org>
Date: Sun, 6 May 2012 23:21:01 +0200
Subject: [PATCH] ENH: avoid an underflow

---
 sklearn/naive_bayes.py | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/sklearn/naive_bayes.py b/sklearn/naive_bayes.py
index eb29765efe..4e7345bf0f 100644
--- a/sklearn/naive_bayes.py
+++ b/sklearn/naive_bayes.py
@@ -266,7 +266,9 @@ class BaseDiscreteNB(BaseNB):
         elif self.fit_prior:
             # empirical prior, with sample_weight taken into account
             y_freq = Y.sum(axis=0)
-            self.class_log_prior_ = np.log(y_freq) - np.log(y_freq.sum())
+            eps = np.finfo(1.).eps
+            self.class_log_prior_ = (np.log(y_freq + eps)
+                                    - np.log(y_freq.sum() + eps))
         else:
             self.class_log_prior_ = np.zeros(n_classes) - np.log(n_classes)
 
-- 
GitLab