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; // implicit eX 00032 RealSMatrix* sumXY; // implicit eXY 00033 00034 RealSMatrix* K; // covariance Matrix 00035 00036 bool optimizationFlag; 00037 RealVector* lambda; // eigenvalues 00038 RealSMatrix* E; // eigenvectors 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 // learning 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