const-fixing functions
[mldemos:baraks-mldemos.git] / _AlgorithmsPlugins / KernelMethods / classifierSVM.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_SVM_H_\r
20 #define _CLASSIFIER_SVM_H_\r
21 \r
22 #include <vector>\r
23 #include <map>\r
24 #include <classifier.h>\r
25 #include "svm.h"\r
26 \r
27 class ClassifierSVM : public Classifier\r
28 {\r
29 private:\r
30         svm_model *svm;\r
31         svm_node *node;\r
32         svm_node *x_space;\r
33         int classCount;\r
34     int type;\r
35 public:\r
36         svm_parameter param;\r
37     bool bOptimize;\r
38 \r
39         ClassifierSVM();\r
40         ~ClassifierSVM();\r
41         void Train(std::vector< fvec > samples, ivec labels);\r
42     void Optimize(svm_problem *problem);\r
43     void OptimizeGradient(svm_problem *problem);\r
44     float Test(const fvec &sample) const ;\r
45     float Test(const fVec &sample) const ;\r
46     fvec TestMulti(const fvec &sample) const ;\r
47     const char *GetInfoString() const ;\r
48         void SetParams(int svmType, float svmC, u32 kernelType, float kernelParam);\r
49     svm_model *GetModel(){return svm;}\r
50     void SaveModel(std::string filename) const ;\r
51     bool LoadModel(std::string filename);\r
52 };\r
53 \r
54 #endif // _CLASSIFIER_SVM_H_\r