SHOGUN  v3.2.0
SVM.h
浏览该文件的文档.
1 /*
2  * This program is free software; you can redistribute it and/or modify
3  * it under the terms of the GNU General Public License as published by
4  * the Free Software Foundation; either version 3 of the License, or
5  * (at your option) any later version.
6  *
7  * Written (W) 1999-2009 Soeren Sonnenburg
8  * Copyright (C) 1999-2009 Fraunhofer Institute FIRST and Max-Planck-Society
9  */
10 
11 #ifndef _SVM_H___
12 #define _SVM_H___
13 
14 #include <shogun/lib/common.h>
16 #include <shogun/kernel/Kernel.h>
18 
19 namespace shogun
20 {
21 
22 class CMKL;
23 class CMulticlassSVM;
24 
47 class CSVM : public CKernelMachine
48 {
49  public:
50 
53 
57  CSVM(int32_t num_sv=0);
58 
66  CSVM(float64_t C, CKernel* k, CLabels* lab);
67 
68  virtual ~CSVM();
69 
72  void set_defaults(int32_t num_sv=0);
73 
74 
81 
82 
88  virtual void set_linear_term(const SGVector<float64_t> linear_term);
89 
90 
94  bool load(FILE* svm_file);
95 
99  bool save(FILE* svm_file);
100 
105  inline void set_nu(float64_t nue) { nu=nue; }
106 
107 
116  inline void set_C(float64_t c_neg, float64_t c_pos) { C1=c_neg; C2=c_pos; }
117 
118 
123  inline void set_epsilon(float64_t eps) { epsilon=eps; }
124 
129  inline void set_tube_epsilon(float64_t eps) { tube_epsilon=eps; }
130 
136 
141  inline void set_qpsize(int32_t qps) { qpsize=qps; }
142 
147  inline float64_t get_epsilon() { return epsilon; }
148 
153  inline float64_t get_nu() { return nu; }
154 
159  inline float64_t get_C1() { return C1; }
160 
165  inline float64_t get_C2() { return C2; }
166 
171  inline int32_t get_qpsize() { return qpsize; }
172 
177  inline void set_shrinking_enabled(bool enable)
178  {
179  use_shrinking=enable;
180  }
181 
186  inline bool get_shrinking_enabled()
187  {
188  return use_shrinking;
189  }
190 
196 
202 
207  inline void set_objective(float64_t v)
208  {
209  objective=v;
210  }
211 
217  {
218  return objective;
219  }
220 
228  void set_callback_function(CMKL* m, bool (*cb)
229  (CMKL* mkl, const float64_t* sumw, const float64_t suma));
230 
232  virtual const char* get_name() const { return "SVM"; }
233 
234  protected:
235 
241  virtual float64_t* get_linear_term_array();
242 
245 
261  int32_t qpsize;
264 
267  bool (*callback) (CMKL* mkl, const float64_t* sumw, const float64_t suma);
271 
272  friend class CMulticlassSVM;
273 };
274 }
275 #endif
void set_shrinking_enabled(bool enable)
Definition: SVM.h:177
bool use_shrinking
Definition: SVM.h:263
float64_t get_C2()
Definition: SVM.h:165
float64_t compute_svm_primal_objective()
Definition: SVM.cpp:267
int32_t qpsize
Definition: SVM.h:261
The class Labels models labels, i.e. class assignments of objects.
Definition: Labels.h:35
MACHINE_PROBLEM_TYPE(PT_BINARY)
virtual ~CSVM()
Definition: SVM.cpp:43
bool(* callback)(CMKL *mkl, const float64_t *sumw, const float64_t suma)
Definition: SVM.h:267
float64_t get_nu()
Definition: SVM.h:153
void set_callback_function(CMKL *m, bool(*cb)(CMKL *mkl, const float64_t *sumw, const float64_t suma))
Definition: SVM.cpp:232
float64_t get_tube_epsilon()
Definition: SVM.h:135
CMKL * mkl
Definition: SVM.h:270
virtual void set_linear_term(const SGVector< float64_t > linear_term)
Definition: SVM.cpp:314
A generic KernelMachine interface.
Definition: KernelMachine.h:50
float64_t epsilon
Definition: SVM.h:249
void set_nu(float64_t nue)
Definition: SVM.h:105
virtual const char * get_name() const
Definition: SVM.h:232
float64_t get_C1()
Definition: SVM.h:159
virtual float64_t * get_linear_term_array()
Definition: SVM.cpp:302
void set_defaults(int32_t num_sv=0)
Definition: SVM.cpp:48
SGVector< float64_t > m_linear_term
Definition: SVM.h:244
float64_t compute_svm_dual_objective()
Definition: SVM.cpp:242
class MultiClassSVM
Definition: MulticlassSVM.h:26
float64_t C2
Definition: SVM.h:257
bool get_shrinking_enabled()
Definition: SVM.h:186
double float64_t
Definition: common.h:48
void set_objective(float64_t v)
Definition: SVM.h:207
void set_qpsize(int32_t qps)
Definition: SVM.h:141
virtual SGVector< float64_t > get_linear_term()
Definition: SVM.cpp:332
float64_t C1
Definition: SVM.h:255
Multiple Kernel Learning.
Definition: MKL.h:95
float64_t objective
Definition: SVM.h:259
float64_t tube_epsilon
Definition: SVM.h:251
bool load(FILE *svm_file)
Definition: SVM.cpp:90
all of classes and functions are contained in the shogun namespace
Definition: class_list.h:16
CSVM(int32_t num_sv=0)
Definition: SVM.cpp:28
A generic Support Vector Machine Interface.
Definition: SVM.h:47
bool save(FILE *svm_file)
Definition: SVM.cpp:206
The Kernel base class.
Definition: Kernel.h:150
bool svm_loaded
Definition: SVM.h:247
void set_epsilon(float64_t eps)
Definition: SVM.h:123
float64_t nu
Definition: SVM.h:253
int32_t get_qpsize()
Definition: SVM.h:171
float64_t get_epsilon()
Definition: SVM.h:147
float64_t get_objective()
Definition: SVM.h:216
void set_C(float64_t c_neg, float64_t c_pos)
Definition: SVM.h:116
void set_tube_epsilon(float64_t eps)
Definition: SVM.h:129

SHOGUN Machine Learning Toolbox - Documentation