/////////////////////////////////////////////////////////////////// //! rcsid="$Id: testNumClassify.cc,v 1.9 1999/06/17 15:35:03 ees1cg Exp $" #include "amma/Num/NumClassifyBayes.hh" #include "amma/Num/NumClassifyFuzzyCmeans.hh" #include "amma/Num/NumClassifyKmeans.hh" #include "amma/Num/NumClassifyFusionMean.hh" #include "amma/Num/NumPDFNormal.hh" #include "amma/Num/NumMagnitudeEuclidean.hh" #include "amma/Vector2d.hh" #include "amma/Filename.hh" #include "amma/EntryPnt.hh" #include int testNumClassify(int n,char **argv) { // Setup temporary file. FilenameC dataFile("/tmp/testNumClassify.data"); dataFile = dataFile.MkTemp(); cerr << "Starting test. \n"; // Setup training data NumVLDataSetC trainL; trainL.Append (Vector2dC(1,1),0); trainL.Append (Vector2dC(1,-1),0); trainL.Append (Vector2dC(2,0),0); trainL.Append (Vector2dC(-1,1),1); trainL.Append (Vector2dC(-1,-1),1); trainL.Append (Vector2dC(-2,0),1); // Setup individual classifiers NumPDFNormalC pdf; VectorC prior (2); prior.Fill (0.5); NumClassifyBayesC class1 (pdf,prior); class1.Learn (trainL); NumClassifyFuzzyCmeansC class2 (2,NumMagnitudeEuclideanC()); class2.Cluster (trainL.InputSet()); NumClassifyKmeansC class3 (2,NumMagnitudeEuclideanC()); class3.Cluster (trainL.InputSet()); DListC classList; classList.InsLast (class1); classList.InsLast (class2); classList.InsLast (class3); // Save classifiers { ofstream out (dataFile); out << class1 << "\n" << class2 << "\n" << class3 << "\n"; out << NumClassifyFusionMeanC (classList) << "\n"; out.close(); } // Load and get information SArray1dC classify (4); ifstream in (dataFile); for(int i =0;i < 4;i++) in >> classify[i]; FOR_SARRAY1 (classify,i) { cout << classify[i].GetInfo () << "\n"; for (ConstDLIterC elem1 (trainL); elem1.IsElm(); elem1.Next()) cout << elem1.Data().Input() << " " << elem1.Data().Output() << " " << classify[i].Classify (elem1.Data().Input()) << " " << classify[i].Evaluate (elem1.Data().Input()) << "\n"; } cerr << "Test passed. \n"; dataFile.Remove(); // Tidy up after ourselves. return 0; } AMMA_ENTRY_POINT(testNumClassify);