From 57392821f3b7e0909578da0ff95c8aae4322bb4d Mon Sep 17 00:00:00 2001
From: osdf <osendorf@gmail.com>
Date: Tue, 14 Dec 2010 17:44:10 +0100
Subject: [PATCH] Fixed problem with big full covariance matrices: sum,log
 instead of log,prod for loglikelihood computations.

---
 scikits/learn/mixture.py | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/scikits/learn/mixture.py b/scikits/learn/mixture.py
index 47247c3c69..7b9a5bf733 100644
--- a/scikits/learn/mixture.py
+++ b/scikits/learn/mixture.py
@@ -561,10 +561,10 @@ def _lmvnpdffull(obs, means, covars):
     log_prob = np.empty((nobs,nmix))
     for c, (mu, cv) in enumerate(itertools.izip(means, covars)):
         cv_chol = linalg.cholesky(cv, lower=True)
-        cv_det  = np.prod(np.diagonal(cv_chol))**2
+        cv_log_det  = 2*np.sum(np.log(np.diagonal(cv_chol)))
         cv_sol  = solve_triangular(cv_chol, (obs - mu).T, lower=True).T
         log_prob[:, c]  = -.5 * (np.sum(cv_sol**2, axis=1) + \
-                           ndim * np.log(2 * np.pi) + np.log(cv_det))
+                           ndim * np.log(2 * np.pi) + cv_log_det))
 
     return log_prob
 
-- 
GitLab