[mlpack-git] master: Issue a warning when observations are not given for all classes. (2eface7)

gitdub at big.cc.gt.atl.ga.us gitdub at big.cc.gt.atl.ga.us
Fri Nov 20 13:23:15 EST 2015


Repository : https://github.com/mlpack/mlpack

On branch  : master
Link       : https://github.com/mlpack/mlpack/compare/fdd2ae00c4359e1f394abb8afbf7a6bb44277272...fa8919245e69fb9dbfa98e43f6c060213e6a1937

>---------------------------------------------------------------

commit 2eface7b7a0add7d155c151158dce277d2237e4d
Author: Ryan Curtin <ryan at ratml.org>
Date:   Fri Nov 20 09:27:26 2015 -0800

    Issue a warning when observations are not given for all classes.


>---------------------------------------------------------------

2eface7b7a0add7d155c151158dce277d2237e4d
 src/mlpack/methods/hmm/hmm_impl.hpp | 21 +++++++++++++++------
 1 file changed, 15 insertions(+), 6 deletions(-)

diff --git a/src/mlpack/methods/hmm/hmm_impl.hpp b/src/mlpack/methods/hmm/hmm_impl.hpp
index 3eeef35..ce60d4e 100644
--- a/src/mlpack/methods/hmm/hmm_impl.hpp
+++ b/src/mlpack/methods/hmm/hmm_impl.hpp
@@ -264,14 +264,23 @@ void HMM<Distribution>::Train(const std::vector<arma::mat>& dataSeq,
   {
     // Generate full sequence of observations for this state from the list of
     // emissions that are from this state.
-    arma::mat emissions(dimensionality, emissionList[state].size());
-    for (size_t i = 0; i < emissions.n_cols; i++)
+    if (emissionList[state].size() > 0)
     {
-      emissions.col(i) = dataSeq[emissionList[state][i].first].col(
-          emissionList[state][i].second);
-    }
+      arma::mat emissions(dimensionality, emissionList[state].size());
+      for (size_t i = 0; i < emissions.n_cols; i++)
+      {
+        emissions.col(i) = dataSeq[emissionList[state][i].first].col(
+            emissionList[state][i].second);
+      }
 
-    emission[state].Estimate(emissions);
+      emission[state].Estimate(emissions);
+    }
+    else
+    {
+      Log::Warn << "There are no observations in training data with hidden "
+          << "state " << state << "!  The corresponding emission distribution "
+          << "is likely to be meaningless." << std::endl;
+    }
   }
 }
 



More information about the mlpack-git mailing list