naivebayesinference.h

来自「gibbs」· C头文件 代码 · 共 82 行

H
82
字号
#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 + =
减小字号Ctrl + -
显示快捷键?