00001 #ifndef Impala_Core_Training_Test_TestSvm_h
00002 #define Impala_Core_Training_Test_TestSvm_h
00003
00004 #include <cppunit/extensions/HelperMacros.h>
00005 #include "Basis/ILog.h"
00006 #include "Core/Training/Svm.h"
00007
00008
00009 namespace Impala
00010 {
00011 namespace Core
00012 {
00013 namespace Training
00014 {
00015
00016 class TestSvm : public CPPUNIT_NS::TestFixture
00017 {
00018 CPPUNIT_TEST_SUITE(TestSvm);
00019 CPPUNIT_TEST(testDiffSv);
00020 CPPUNIT_TEST(testDiffParams);
00021 CPPUNIT_TEST(testDiffRest);
00022 CPPUNIT_TEST(testDiffLength);
00023 CPPUNIT_TEST(testDiffProb);
00024 CPPUNIT_TEST_SUITE_END();
00025
00026 public:
00027 void
00028 testDiffSv()
00029 {
00030 Svm svm1(
00031 "svm_type c_svc \n kernel_type rbf \n gamma 1 \n nr_class 2 \n\
00032 probA -2.0 \n probB -1.0 \n\
00033 total_sv 4 \n rho -1.31232 \n label -1 1 \n nr_sv 2 2 \n SV\n\
00034 0.15 1:0.53 2:0.09\n\
00035 0.81 1:0.46 2:0.08\n\
00036 0.67 1:0.55 2:0.07\n\
00037 0.70 1:0.52 2:0.10\n");
00038 Svm svm2(
00039 "svm_type c_svc \n kernel_type rbf \n gamma 1 \n nr_class 2 \n\
00040 probA -2.0 \n probB -1.0 \n\
00041 total_sv 4 \n rho -1.31232 \n label -1 1 \n nr_sv 2 2 \n SV\n\
00042 0.15 1:0.53 2:0.09\n\
00043 0.81 1:0. 2:0.08\n\
00044 0.67 1:0. 2:0.07\n\
00045 0.70 1:0. 2:0. \n");
00046 CPPUNIT_ASSERT_EQUAL(4, svm1.Diff(&svm2));
00047 Svm svm3(
00048 "svm_type c_svc \n kernel_type rbf \n gamma 1 \n nr_class 2 \n\
00049 probA -2.0 \n probB -1.0 \n\
00050 total_sv 4 \n rho -1.31232 \n label -1 1 \n nr_sv 2 2 \n SV\n\
00051 0. 1:0.53 2:0.09\n\
00052 0.81 1:0.46 2:0.08\n\
00053 0. 1:0.55 2:0. \n\
00054 0.70 1:0.52 2:0.10\n");
00055 CPPUNIT_ASSERT_EQUAL(3, svm1.Diff(&svm3));
00056 }
00057
00058 void
00059 testDiffParams()
00060 {
00061 Svm svm1(
00062 "svm_type c_svc \n kernel_type precomputed \n gamma 1 \n\
00063 nr_class 2 \n total_sv 4 \n rho -1.31232 \n label -1 1 \n\
00064 nr_sv 2 2 \n SV\n\
00065 0.1527539041594556 1:0.53225695 2:0.095924066\n\
00066 0.8158872069487452 1:0.46593458 2:0.082806218\n\
00067 0.6799880958087516 1:0.55273578 2:0.071580481\n\
00068 0.7037686596065742 1:0.52942213 2:0.10499618\n");
00069 Svm svm2(
00070 "svm_type c_svc \n kernel_type dist-precomputed \n nr_class 2 \n\
00071 total_sv 4 \n rho -1.31232 \n label -1 1 \n nr_sv 2 2 \n SV\n\
00072 0.1527539041594556 1:0.53225695 2:0.095924066\n\
00073 0.8158872069487452 1:0.46593458 2:0.082806218\n\
00074 0.6799880958087516 1:0.55273578 2:0.071580481\n\
00075 0.7037686596065742 1:0.52942213 2:0.10499618\n");
00076 CPPUNIT_ASSERT_EQUAL(0, svm1.Diff(&svm2));
00077 }
00078
00079 void
00080 testDiffRest()
00081 {
00082 Svm svm1(
00083 "svm_type c_svc \n kernel_type rbf \n gamma 1 \n nr_class 2 \n\
00084 probA -2.0 \n probB -1.0 \n\
00085 total_sv 4 \n rho -1.31232 \n label -1 1 \n nr_sv 2 2 \n SV\n\
00086 0.1527539041594556 1:0.53225695 2:0.095924066\n\
00087 0.8158872069487452 1:0.46593458 2:0.082806218\n\
00088 0.6799880958087516 1:0.55273578 2:0.071580481\n\
00089 0.7037686596065742 1:0.52942213 2:0.10499618\n");
00090 Svm svm2(
00091 "svm_type c_svc \n kernel_type rbf \n gamma 1 \n nr_class 2 \n\
00092 probA -2.0 \n probB -1.0 \n\
00093 total_sv 4 \n rho -1.7 \n label -1 1 \n nr_sv 3 1 \n SV\n\
00094 0.1527539041594556 1:0.53225695 2:0.095924066\n\
00095 0.8158872069487452 1:0.46593458 2:0.082806218\n\
00096 0.6799880958087516 1:0.55273578 2:0.071580481\n\
00097 0.7037686596065742 1:0.52942213 2:0.10499618\n");
00098 CPPUNIT_ASSERT_EQUAL(3, svm1.Diff(&svm2));
00099 }
00100
00101 void
00102 testDiffLength()
00103 {
00104 Svm svm1(
00105 "svm_type c_svc \n kernel_type rbf \n gamma 1 \n nr_class 2 \n\
00106 probA -2.0 \n probB -1.0 \n\
00107 total_sv 3 \n rho -1.31232 \n label -1 1 \n nr_sv 2 2 \n SV\n\
00108 0.2 1:0.2 2:0.2\n\
00109 0.3 1:0.3 2:0.3\n\
00110 0.4 1:0.4 2:0.4\n");
00111 Svm svm2(
00112 "svm_type c_svc \n kernel_type rbf \n gamma 1 \n nr_class 2 \n\
00113 probA -2.0 \n probB -1.0 \n\
00114 total_sv 4 \n rho -1.31232 \n label -1 1 \n nr_sv 2 2 \n SV\n\
00115 0.1 1:0.1 2:0.1\n\
00116 0.2 1:0.2 2:0.2\n\
00117 0.3 1:0.3 2:0.3\n\
00118 0.4 1:0.4 2:0.4\n");
00119 CPPUNIT_ASSERT_EQUAL(1, svm1.Diff(&svm2));
00120 }
00121
00122 void
00123 testDiffProb()
00124 {
00125 Svm svm1(
00126 "svm_type c_svc \n kernel_type rbf \n gamma 1 \n nr_class 2 \n\
00127 total_sv 4 \n rho -1.31232 \n label -1 1 \n nr_sv 2 2 \n\
00128 probA 12.56 \n probB -24.1 \n SV\n\
00129 0.1527539041594556 1:0.53225695 2:0.095924066\n\
00130 0.8158872069487452 1:0.46593458 2:0.082806218\n\
00131 0.6799880958087516 1:0.55273578 2:0.071580481\n\
00132 0.7037686596065742 1:0.52942213 2:0.10499618\n");
00133 Svm svm2(
00134 "svm_type c_svc \n kernel_type rbf \n gamma 1 \n nr_class 2 \n\
00135 total_sv 4 \n rho -1.31232 \n label -1 1 \n nr_sv 2 2 \n\
00136 probA 56.12 \n probB -1.24 \n SV\n\
00137 0.1527539041594556 1:0.53225695 2:0.095924066\n\
00138 0.8158872069487452 1:0.46593458 2:0.082806218\n\
00139 0.6799880958087516 1:0.55273578 2:0.071580481\n\
00140 0.7037686596065742 1:0.52942213 2:0.10499618\n");
00141 CPPUNIT_ASSERT_EQUAL(2, svm1.Diff(&svm2));
00142 }
00143 };
00144
00145 CPPUNIT_TEST_SUITE_REGISTRATION(TestSvm);
00146
00147 }
00148 }
00149 }
00150
00151 #endif