35 #ifndef SHARK_MODEL_NB_CLASSIFIER_H 36 #define SHARK_MODEL_NB_CLASSIFIER_H 42 #include <boost/foreach.hpp> 43 #include <boost/noncopyable.hpp> 44 #include <boost/smart_ptr/shared_ptr.hpp> 45 #include <boost/static_assert.hpp> 47 #include <boost/type_traits.hpp> 59 template <
class InputType = RealVector,
class OutputType =
unsigned int>
62 private boost::noncopyable
92 for (std::size_t i = 0; i < classSize; ++i)
94 std::vector<AbstractDistPtr> featureDist;
95 for (std::size_t j = 0; j < featureSize; ++j)
112 {
return "NBClassifier"; }
139 return boost::shared_ptr<State>(
new EmptyState());
143 void eval(BatchInputType
const& patterns, BatchOutputType& outputs,
State& state)
const{
148 outputs.resize(
size(patterns));
150 for(std::size_t p = 0; p !=
size(patterns); ++p){
160 double currentLogProb =
safeLog(classDistribution);
161 std::size_t featureIndex = 0u;
163 currentLogProb += featureDistribution->logP(patterns(p,featureIndex++));
166 if (currentLogProb > maxLogProb)
168 maxLogProb = currentLogProb;
169 bestProbClass = classIndex;
173 outputs(p) = bestProbClass;
186 throw SHARKEXCEPTION(
"[NBClassifier] class probability must be added in ascending order.");
213 #endif // SHARK_MODEL_NB_CLASSIFIER_H