const-fixing functions
[mldemos:mldemos.git] / _AlgorithmsPlugins / KernelMethods / classifierPegasos.h
1 /*********************************************************************\r
2 MLDemos: A User-Friendly visualization toolkit for machine learning\r
3 Copyright (C) 2010  Basilio Noris\r
4 Contact: mldemos@b4silio.com\r
5 \r
6 This library is free software; you can redistribute it and/or\r
7 modify it under the terms of the GNU Lesser General Public License,\r
8 version 3 as published by the Free Software Foundation.\r
9 \r
10 This library is distributed in the hope that it will be useful, but\r
11 WITHOUT ANY WARRANTY; without even the implied warranty of\r
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\r
13 Lesser General Public License for more details.\r
14 \r
15 You should have received a copy of the GNU Lesser General Public\r
16 License along with this library; if not, write to the Free\r
17 Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.\r
18 *********************************************************************/\r
19 #ifndef _CLASSIFIER_PEGASOS_H_\r
20 #define _CLASSIFIER_PEGASOS_H_\r
21 \r
22 #include <vector>\r
23 #include "classifier.h"\r
24 #include "dlib/svm.h"\r
25 #include "dlibTypes.h"\r
26 \r
27 class ClassifierPegasos : public Classifier\r
28 {\r
29 private:\r
30     float lambda;\r
31         int kernelType; // 0: linear, 1: poly, 2: rbf\r
32         float kernelParam;\r
33         int kernelDegree;\r
34         int maxSV;\r
35 \r
36     int kernelTypeTrained;\r
37     void *decFunction;\r
38 public:\r
39 \r
40     ClassifierPegasos():maxSV(10),lambda(0.001), kernelType(2), decFunction(0){}\r
41     ~ClassifierPegasos();\r
42         void Train(std::vector< fvec > samples, ivec labels);\r
43     float Test(const fvec &sample) const ;\r
44     const char *GetInfoString() const ;\r
45         void SetParams(float lambda, int maxSV, int kernelType, float kernelParam, int kernelDegree)\r
46         {this->lambda = lambda; this->maxSV = maxSV; this->kernelType=kernelType;this->kernelParam=kernelParam;this->kernelDegree=kernelDegree;}\r
47     std::vector<fvec> GetSVs() const ;\r
48 \r
49     template <int N> void KillDim();\r
50     template <int N> void TrainDim(std::vector< fvec > _samples, ivec _labels);\r
51     template <int N> float TestDim(const fvec &sample) const ;\r
52     template <int N> std::vector<fvec> GetSVsDim() const ;\r
53 };\r
54 \r
55 #endif // _CLASSIFIER_PEGASOS_H_\r