00001 #ifndef __SeparateGaussianClassifier__
00002 #define __SeparateGaussianClassifier__
00003
00022 #include "ASeparateFeatureClassifier.hpp"
00023
00024 class SeparateGaussianClassifier : public ASeparateFeatureClassifier
00025 {
00026 protected:
00027
00028 RealVector* meanValue;
00029 RealVector* sigma;
00030
00031 double root2nPI;
00032 double logroot2nPI;
00033
00034 double sumLogSigma;
00035 double productSigma;
00036
00037
00038 protected:
00039
00040 virtual double reducedValue(int i, double featurei)
00041 { return ((featurei-meanValue->get0(i))/(sigma->get0(i)+1e-12)); }
00042
00043 public:
00044
00045
00046 SeparateGaussianClassifier(int n);
00047 virtual ~SeparateGaussianClassifier(){delete meanValue; delete sigma;}
00048
00049 virtual double distance2(RealVector& featureVector);
00050
00051
00052 virtual void start();
00053
00054
00055 virtual double P(RealVector& featureVector);
00056
00057
00058 virtual double L(RealVector& featureVector);
00059
00060 virtual void output(FILE* file);
00061
00062 virtual void output()
00063 {
00064 printf("A Separate Gaussian Classifier(%d)", nFeatures);
00065 }
00066 };
00067
00068 #endif