#include "amma/Num/NumClassifyBayes.hh" #include "amma/Num/NumClassifyFuzzyCmeans.hh" #include "amma/Num/NumPDFNormal.hh" #include "amma/Num/NumPerfHoldOut.hh" #include "amma/Num/NumPerfCrossVal.hh" #include "amma/Num/NumPerfLeaveOutOne.hh" #include "amma/Num/NumPerfRotation.hh" #include "amma/Num/NumErrorCount.hh" #include "amma/Num/NumErrorWeight.hh" #include "amma/Num/NumClustMinVariance.hh" #include "amma/Num/NumClustScatterDet.hh" #include "amma/Num/NumMagnitudeEuclidean.hh" #include "amma/Vector2d.hh" #include main () { // 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.5,0.5),0); trainL.Append (Vector2dC(-1,1),1); trainL.Append (Vector2dC(-1,-1),1); trainL.Append (Vector2dC(-2,0),1); trainL.Append (Vector2dC(-1.5,-0.5),1); // Setup classifier stuff NumPDFNormalC pdf; VectorC prior (2); prior.Fill (0.5); NumClassifyBayesC class1 (pdf,prior); NumClassifyFuzzyCmeansC class2 (2,NumMagnitudeEuclideanC()); // Setup error weighting stuff NumErrorCountC errorCount; // Setup performance evaluators SArray1dC eval (4); eval[0] = NumPerfHoldOutC (0.333); eval[1] = NumPerfCrossValC (2); eval[2] = NumPerfLeaveOutOneC (); eval[3] = NumPerfRotationC (2); // Setup clustering criteria SArray1dC crit (2); crit[0] = NumClustMinVarianceC (NumMagnitudeEuclideanC()); crit[1] = NumClustScatterDetC (); // Test classifier FOR_SARRAY1 (eval,i) { cout << eval[i].GetInfo () << "\n"; cout << "PMC = " << eval[i].PMC (trainL,class1,errorCount) << "\n"; } // Test clustering FOR_SARRAY1 (crit,i2) { cout << crit[i2].GetInfo () << endl; for (UIntT n = 1; n < 8; n++) { class2.Initialise (n,trainL.InputSet()); class2.Cluster (trainL.InputSet()); cout << "Clustering quality (" << n << ") = " << crit[i2].Criterion (trainL.InputSet(),class2) << endl; } } }