⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 naivebayesinference.h

📁 gibbs
💻 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 + -