00001 #ifndef __OptMultiKMean__
00002 #define __OptMultiKMean__
00003
00022 #include "SeparateGaussianClassifier.hpp"
00023 #include "RealSMatrix.hpp"
00024
00025 class OptMultiKMean : public SeparateGaussianClassifier
00026 {
00027 private:
00028
00029 int count;
00030
00031 RealVector* sumX;
00032 RealSMatrix* sumXY;
00033
00034 RealSMatrix* K;
00035
00036 bool optimizationFlag;
00037 RealVector* lambda;
00038 RealSMatrix* E;
00039
00040 protected:
00041
00042 virtual void computeCovariance();
00043 virtual void computeEigenvalues();
00044 virtual void computeEigenvectors();
00045
00046 public:
00047
00048 OptMultiKMean(int n);
00049 virtual ~OptMultiKMean(){delete sumX; delete sumXY; delete K; delete lambda; delete E;}
00050
00051
00052 virtual void start();
00053
00054 virtual void learn(RealVector& value);
00055 virtual void unlearn(RealVector& value);
00056
00057 virtual void end();
00058
00059 virtual int numberOfCounts(){ return count; }
00060
00061 virtual void output()
00062 {
00063 printf("An Optimal Multi KMean");
00064 }
00065 };
00066
00067 #endif