00001 #ifndef __IndependentBayesClassifier__
00002 #define __IndependentBayesClassifier__
00003
00022 #include <stdio.h>
00023
00024 #include "AMultiClassObjectEvaluator.hpp"
00025 #include "DataSample.hpp"
00026
00027 class IndependentBayesClassifier
00028 {
00029 private:
00030
00031 char* name;
00032
00033 int xDimension;
00034
00035 int n, nmax;
00036
00037 AMultiClassObjectEvaluator** objectClassifier;
00038
00039 public:
00040
00041 IndependentBayesClassifier(int nmax, int featureSize);
00042 virtual ~IndependentBayesClassifier();
00043
00044 virtual void add(AMultiClassObjectEvaluator* oClass);
00045
00046 virtual AMultiClassObjectEvaluator* get(int iObject){ return objectClassifier[iObject]; }
00047
00048 virtual int numberOfObjects(){ return n; }
00049 virtual int maxSize(){ return nmax; }
00050
00051
00052 virtual void initializeClasses(DataSample* objectSample);
00053
00054 virtual void start(int iObj);
00055
00056 virtual void learn(DataSample* objectSample);
00057
00058 virtual void learn(int Oi, double value){ objectClassifier[Oi]->learn(value); }
00059 virtual void learn(int Oi, RealVector& value){ objectClassifier[Oi]->learn(value); }
00060
00061 virtual void end(int iObj);
00062
00063
00064
00065 virtual double PX_O(double X, int Oi)
00066 { return objectClassifier[Oi]->Pxo(X); }
00067
00068 virtual double PX_O(RealVector& X, int Oi)
00069 { return objectClassifier[Oi]->Pxo(X); }
00070
00071 virtual double PO(int Oi)
00072 { return objectClassifier[Oi]->Po(); }
00073
00074 virtual double PX(double X);
00075 virtual double PX(RealVector& X);
00076
00077 virtual double PO_X(int Oi, double X);
00078 virtual double PO_X(int Oi, RealVector& X);
00079
00080 virtual int objectName(double X);
00081 virtual int objectName(RealVector& X);
00082
00083 virtual double PO_X(double value)
00084 { return PO_X(objectName(value), value); }
00085 virtual double PO_X(RealVector& value)
00086 { return PO_X(objectName(value), value); }
00087
00088 virtual double LX_O(double X, int Oi)
00089 { return objectClassifier[Oi]->Lxo(X); }
00090
00091 virtual double LX_O(RealVector& X, int Oi)
00092 { return objectClassifier[Oi]->Lxo(X); }
00093
00094
00095 virtual double PO_Xratio(int Oi, int Oj, double X);
00096 virtual double LO_Xratio(int Oi, int Oj, double X);
00097
00098 virtual double PO_Xratio(int Oi, int Oj, RealVector& X);
00099 virtual double LO_Xratio(int Oi, int Oj, RealVector& X);
00100
00101
00102
00103 virtual void output(FILE* file);
00104
00105 virtual void output()
00106 {
00107 printf("IndependentBayesClassifier");
00108 }
00109 };
00110
00111 #endif