?? naivebayesinference.h
字號:
#ifndef NAIVEBAYESINFERENCE_H#define NAIVEBAYESINFERENCE_H#include "InferenceMethod.h"#include <list>#include "VarSet.h"#include "Distribution.h"#include "AbstractionSet.h"#include "JointAbstractionSet.h"class NaiveBayesInference : public InferenceMethod{private: AbstractionSet* model; vector<GenDistribution*> marginals; JointAbstractionSet* jointModel; list<int> jointVars; void cleanUp() { // Free all memory given to us by the inference methods. vector<GenDistribution*>::iterator iter; for (iter = marginals.begin(); iter != marginals.end(); iter++) { delete (*iter); } marginals.clear(); delete jointModel; jointModel = NULL; }public: // Simple constructor NaiveBayesInference(AbstractionSet* m) : model(m), jointModel(NULL) { /* NOP */ } virtual ~NaiveBayesInference() { cleanUp(); } virtual void runMarginalInference(const VarSet& evidence) { cleanUp(); marginals = model->createMarginals(evidence); } virtual void runJointInference(const list<int>& queryVars, const VarSet& evidence) { cleanUp(); jointModel = new JointAbstractionSet(model, evidence); jointVars = queryVars; } virtual double singleConditionalLogProb( const list<int>& queryVars, const VarSet& evidence, const VarSet& answer) const { return (model->getLogLikelihood(answer) - model->getLogLikelihood(evidence)); } virtual int getRange(int i) const { return model->getRange(i); } //virtual Distribution getMarginal(int i) const { return marginals[i]; }; virtual double getMarginalProb(int i, double value) const { return marginals[i]->getProb(value); } virtual double getJointProb(const VarConfig& query) const { VarSet newquery(query.getNumVars()); list<int>::const_iterator iter; for (iter = jointVars.begin(); iter != jointVars.end(); iter++) { newquery[*iter] = query[*iter]; } return jointModel->getProb(newquery); }};#endif // ndef NAIVEBAYESINFERENCE_H
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -