SHOGUN  3.2.1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
MulticlassSVM.h
Go to the documentation of this file.
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-2011 Soeren Sonnenburg
8  * Written (W) 2012 Soeren Sonnenburg, Chiyuan Zhang
9  * Copyright (C) 1999-2011 Fraunhofer Institute FIRST and Max-Planck-Society
10  */
11 
12 #ifndef _MULTICLASSSVM_H___
13 #define _MULTICLASSSVM_H___
14 
15 #include <shogun/lib/config.h>
16 
17 #include <shogun/lib/common.h>
21 
22 namespace shogun
23 {
24 
25 class CSVM;
26 
29 {
30  public:
33 
36 
42 
51  CMulticlassStrategy *strategy, float64_t C, CKernel* k, CLabels* lab);
52  virtual ~CMulticlassSVM();
53 
61  bool create_multiclass_svm(int32_t num_classes);
62 
69  bool set_svm(int32_t num, CSVM* svm);
70 
76  CSVM* get_svm(int32_t num)
77  {
78  return dynamic_cast<CSVM *>(m_machines->get_element_safe(num));
79  }
80 
84  bool load(FILE* svm_file);
85 
89  bool save(FILE* svm_file);
90 
91  // TODO remove if unnecessary here
96  // TODO remove if unnecessary here
101  // TODO remove if unnecessary here
106  // TODO remove if unnecessary here
110  float64_t get_nu() { return svm_proto()->get_nu(); }
111  // TODO remove if unnecessary here
115  float64_t get_C() { return m_C; }
116  // TODO remove if unnecessary here
120  int32_t get_qpsize() { return svm_proto()->get_qpsize(); }
121  // TODO remove if unnecessary here
126  // TODO remove if unnecessary here
131 
132  // TODO remove if unnecessary here
137  // TODO remove if unnecessary here
142  // TODO remove if unnecessary here
147 
148  // TODO remove if unnecessary here
152  void set_defaults(int32_t num_sv=0) { svm_proto()->set_defaults(num_sv); }
153  // TODO remove if unnecessary here
157  void set_linear_term(SGVector<float64_t> linear_term) { svm_proto()->set_linear_term(linear_term); }
158  // TODO remove if unnecessary here
162  void set_C(float64_t C) { svm_proto()->set_C(C,C); m_C = C; }
163  // TODO remove if unnecessary here
168  // TODO remove if unnecessary here
172  void set_nu(float64_t nue) { svm_proto()->set_nu(nue); }
173  // TODO remove if unnecessary here
178  // TODO remove if unnecessary here
182  void set_qpsize(int32_t qps) { svm_proto()->set_qpsize(qps); }
183  // TODO remove if unnecessary here
187  void set_shrinking_enabled(bool enable) { svm_proto()->set_shrinking_enabled(enable); }
188  // TODO remove if unnecessary here
193  // TODO remove if unnecessary here
197  void set_bias_enabled(bool enable_bias) { svm_proto()->set_bias_enabled(enable_bias); }
198  // TODO remove if unnecessary here
202  void set_linadd_enabled(bool enable) { svm_proto()->set_linadd_enabled(enable); }
203  // TODO remove if unnecessary here
208 
210  virtual const char* get_name() const
211  {
212  return "MulticlassSVM";
213  }
214 
215  protected:
216 
219  {
220  return dynamic_cast<CSVM*>(m_machine);
221  }
224  {
225  return svm_proto()->m_svs;
226  }
227 
229  virtual bool init_machines_for_apply(CFeatures* data);
230 
232  virtual bool is_acceptable_machine(CMachine *machine)
233  {
234  CSVM *svm = dynamic_cast<CSVM*>(machine);
235  if (svm == NULL)
236  return false;
237  return true;
238  }
239 
240  private:
241 
242  void init();
243 
244  protected:
245 
248 };
249 }
250 #endif

SHOGUN Machine Learning Toolbox - Documentation