KSquare Utilities
SVM233::SvmModel233 Struct Reference

#include <svm.h>

Public Member Functions

 SvmModel233 ()
 
 SvmModel233 (const SvmModel233 &_model)
 
 ~SvmModel233 ()
 
kkint32 MemoryConsumedEstimated () const
 
virtual void ReadXML (XmlStream &s, XmlTagConstPtr tag, VolConstBool &cancelFlag, RunLog &log)
 
KKStr SupportVectorName (kkint32 svIDX)
 
virtual void WriteXML (const KKStr &varName, std::ostream &o) const
 

Public Attributes

std::set< kkint32BSVIndex
 
kkint32 dim
 
VectorKKStr exampleNames
 
double * featureWeight
 
double * kValueTable
 
kkint32 l
 
kkint32label
 
double * margin
 
kkint32nonSVIndex
 
kkint32 nr_class
 
kkint32nSV
 
kkint32 numNonSV
 
svm_parameter param
 
double * rho
 
svm_node ** SV
 
double ** sv_coef
 
kkint32SVIndex
 
bool valid
 
double weight
 
bool weOwnXspace
 
svm_nodexSpace
 

Detailed Description

Definition at line 135 of file svm.h.

Constructor & Destructor Documentation

SVM233::SvmModel233::SvmModel233 ( )

Definition at line 42 of file svm.cpp.

References dim, featureWeight, kValueTable, l, label, margin, nonSVIndex, nr_class, nSV, numNonSV, rho, SV, sv_coef, SVIndex, valid, weight, and weOwnXspace.

43 {
44  margin = NULL;
45  featureWeight = NULL;
46  SVIndex = NULL;
47  nonSVIndex = NULL;
48  label = NULL;
49  nSV = NULL;
50  SV = NULL;
51  sv_coef = NULL;
52  rho = NULL;
53  kValueTable = NULL;
54  nr_class = -1;
55  l = -1;
56  numNonSV = -1;
57  weight = -1;
58  dim = -1;
59  valid = true;
60  weOwnXspace = false;
61 }
double ** sv_coef
Definition: svm.h:142
kkint32 dim
Definition: svm.h:161
double * margin
Definition: svm.h:158
kkint32 * nSV
Definition: svm.h:148
double weight
Definition: svm.h:159
double * featureWeight
Definition: svm.h:162
kkint32 l
Definition: svm.h:139
kkint32 * SVIndex
Definition: svm.h:153
kkint32 nr_class
Definition: svm.h:138
kkint32 * label
Definition: svm.h:147
kkint32 * nonSVIndex
Definition: svm.h:154
bool weOwnXspace
Definition: svm.h:171
svm_node ** SV
Definition: svm.h:141
kkint32 numNonSV
Definition: svm.h:155
double * kValueTable
Definition: svm.h:165
double * rho
Definition: svm.h:143
SVM233::SvmModel233::~SvmModel233 ( )

Definition at line 64 of file svm.cpp.

65 {
66  Dispose ();
67 }
SVM233::SvmModel233::SvmModel233 ( const SvmModel233 _model)
inline

Definition at line 177 of file svm.h.

References KKB::KKException::KKException().

178  {
179  throw KKException ("SvmModel233::SvmModel233 (const SvmModel233& _model) ***ERROR*** Not Supported");
180  }

Member Function Documentation

kkint32 SVM233::SvmModel233::MemoryConsumedEstimated ( ) const

Definition at line 70 of file svm.cpp.

References dim, featureWeight, kValueTable, l, label, nr_class, nSV, rho, SV, sv_coef, weOwnXspace, and xSpace.

Referenced by KKMLL::SVMModel::MemoryConsumedEstimated().

71 {
72  kkint32 memoryConsumedEstimated = sizeof (SvmModel233)
74  + (kkint32)exampleNames.size () * 40;
75 
76  if (SV) memoryConsumedEstimated += sizeof (svm_node*) * l;
77  if (sv_coef) memoryConsumedEstimated += (nr_class - 1) * sizeof (double*) + l * (nr_class - 1) * sizeof (double);
78  if (rho) memoryConsumedEstimated += l * sizeof (double);
79  if (label) memoryConsumedEstimated += nr_class * sizeof (kkint32);
80  if (nSV) memoryConsumedEstimated += nr_class * sizeof (kkint32);
81  if (featureWeight) memoryConsumedEstimated += dim * sizeof (double);
82  if (kValueTable) memoryConsumedEstimated += sizeof (double) * l;
83  if ((xSpace != NULL) && weOwnXspace)
84  memoryConsumedEstimated += sizeof (svm_node) * l;
85 
86  return memoryConsumedEstimated;
87 }
double ** sv_coef
Definition: svm.h:142
kkint32 dim
Definition: svm.h:161
kkint32 MemoryConsumedEstimated() const
Definition: svm.cpp:886
__int32 kkint32
Definition: KKBaseTypes.h:88
kkint32 * nSV
Definition: svm.h:148
double * featureWeight
Definition: svm.h:162
kkint32 l
Definition: svm.h:139
kkint32 nr_class
Definition: svm.h:138
kkint32 * label
Definition: svm.h:147
svm_node * xSpace
Definition: svm.h:167
bool weOwnXspace
Definition: svm.h:171
svm_parameter param
Definition: svm.h:137
VectorKKStr exampleNames
Definition: svm.h:140
svm_node ** SV
Definition: svm.h:141
double * kValueTable
Definition: svm.h:165
double * rho
Definition: svm.h:143
void SVM233::SvmModel233::ReadXML ( XmlStream s,
XmlTagConstPtr  tag,
VolConstBool cancelFlag,
RunLog log 
)
virtual

Definition at line 234 of file svm.cpp.

References KKB::KKStr::Concat(), KKB::XmlContent::Content(), KKB::KKStr::EqualIgnoreCase(), KKB::KKStrParser::GetNextToken(), KKB::XmlStream::GetNextToken(), KKB::KKStrParser::GetNextTokenDouble(), KKB::KKStrParser::GetNextTokenInt(), SVM233::svm_node::index, KKB::KKStrParser::KKStrParser(), kValueTable, l, label, margin, KKB::KKStrParser::MoreTokens(), nr_class, nSV, rho, KKB::XmlElement::SectionName(), SV, sv_coef, KKB::XmlElement::ToInt32(), KKB::XmlToken::tokElement, KKB::XmlToken::TokenType(), KKB::KKStrParser::TrimWhiteSpace(), valid, SVM233::svm_node::value, KKB::XmlElement::VarName(), weOwnXspace, and xSpace.

239 {
240  exampleNames.clear ();
241  kkint32 numberOfBinaryClassifiers = 0;
242  kkint32 numElementsLoaded = 0;
243  kkint32 totalNumSVs = 0;
244  kkint32 totalNumOfElements = 0;
245  kkint32 numSVsLoaded = 0;
246  delete rho; rho = NULL;
247  delete margin; margin = NULL;
248  delete nSV; nSV = NULL;
249  delete label; label = NULL;
250  delete SV; SV = NULL;
251 
252  bool errorsFound = false;
253  valid = true;
254 
255  XmlTokenPtr t = NULL;
256  while ((!errorsFound) && (!cancelFlag))
257  {
258  if (t != NULL)
259  {
260  if (typeid (*t) == typeid (XmlContent))
261  {
262  XmlContentPtr cp = dynamic_cast<XmlContentPtr> (t);
263  delete cp; cp = NULL; t = NULL;
264  }
265  else
266  {
267  delete t;
268  }
269  }
270 
271  t = s.GetNextToken (cancelFlag, log);
272  if (cancelFlag)
273  {
274  delete t;
275  t = NULL;
276  }
277  if (!t) break;
278 
279  if (t->TokenType () == XmlToken::TokenTypes::tokElement)
280  {
281  XmlElementPtr e = dynamic_cast<XmlElementPtr> (t);
282  const KKStr& varName = e->VarName ();
283  const KKStr& sectionName = e->SectionName ();
284 
285  if (varName.EqualIgnoreCase ("Param") && (typeid (*e) == typeid (XmlElementKKStr)))
286  {
287  param.ParseTabDelStr (*(dynamic_cast<XmlElementKKStrPtr> (e)->Value ()));
288  }
289 
290  else if (varName.EqualIgnoreCase ("nr_class"))
291  {
292  nr_class = e->ToInt32 ();
293  numberOfBinaryClassifiers = nr_class * (nr_class - 1) / 2;
294  }
295 
296  else if (varName.EqualIgnoreCase ("totalNumSVs"))
297  {
298  totalNumSVs = e->ToInt32 ();
299  l = totalNumSVs;
300  }
301 
302  else if (varName.EqualIgnoreCase ("rho") && (typeid (*e) == typeid (XmlElementArrayDouble)))
303  {
304  delete rho; rho = NULL;
305  XmlElementArrayDoublePtr rhoArray = dynamic_cast<XmlElementArrayDoublePtr> (e);
306  if (rhoArray->Count () != numberOfBinaryClassifiers)
307  {
308  log.Level (-1) << endl
309  << "SvmModel233::ReadXML ***ERROR*** 'rho' array incorrect length: expected: "
310  << numberOfBinaryClassifiers << " found: " << rhoArray->Count () << " elements"
311  << endl <<endl;
312  errorsFound = true;
313  }
314  else
315  {
316  rho = rhoArray->TakeOwnership ();
317  }
318  }
319 
320  else if (varName.EqualIgnoreCase ("margin") && (typeid (*e) == typeid (XmlElementArrayDouble)))
321  {
322  delete margin; margin = NULL;
323  XmlElementArrayDoublePtr marginArray = dynamic_cast<XmlElementArrayDoublePtr> (e);
324  if (marginArray->Count () != numberOfBinaryClassifiers)
325  {
326  log.Level (-1) << endl
327  << "SvmModel233::ReadXML ***ERROR*** 'margin' array incorrect length: expected: "
328  << numberOfBinaryClassifiers << " found: " << marginArray->Count () << " elements"
329  << endl <<endl;
330  errorsFound = true;
331  }
332  else
333  {
334  margin = marginArray->TakeOwnership ();
335  }
336  }
337 
338  else if (varName.EqualIgnoreCase ("label") && (typeid (*e) == typeid (XmlElementArrayInt32)))
339  {
340  delete label; label = NULL;
341  XmlElementArrayInt32Ptr labelArray = dynamic_cast<XmlElementArrayInt32Ptr> (e);
342  if (labelArray->Count () != nr_class)
343  {
344  log.Level (-1) << endl
345  << "SvmModel233::ReadXML ***ERROR*** 'label' array incorrect length: expected: "
346  << nr_class << " found: " << labelArray->Count () << " elements"
347  << endl <<endl;
348  errorsFound = true;
349  }
350  else
351  {
352  label = labelArray->TakeOwnership ();
353  }
354  }
355 
356  else if (varName.EqualIgnoreCase ("nSV") && (typeid (*e) == typeid (XmlElementArrayInt32)))
357  {
358  delete nSV; nSV = NULL;
359  XmlElementArrayInt32Ptr nSVArray = dynamic_cast<XmlElementArrayInt32Ptr> (e);
360  if (nSVArray->Count () != nr_class)
361  {
362  log.Level (-1) << endl
363  << "SvmModel233::ReadXML ***ERROR*** 'nSV' array incorrect length: expected: "
364  << nr_class << " found: " << nSVArray->Count () << " elements"
365  << endl <<endl;
366  errorsFound = true;
367  }
368  else
369  {
370  nSV = nSVArray->TakeOwnership ();
371  }
372  }
373 
374  else if (varName.EqualIgnoreCase ("totalNumOfElements"))
375  {
376  totalNumOfElements = e->ToInt32 ();
377  if (totalNumOfElements < 1)
378  {
379  log.Level (-1) << endl
380  << "SvmModel233::ReadXML ***ERROR*** Invalid totalNumOfElements: " << totalNumOfElements << endl
381  << endl;
382  errorsFound = true;
383  }
384  else
385  {
386  kkint32 m = nr_class - 1;
387  // kint32 l = model->l;
388 
389  delete sv_coef;
390  sv_coef = new double*[l];
391  for (kkint32 i = 0; i < m; i++)
392  sv_coef[i] = new double[l];
393 
394  SV = new svm_node*[l];
395  xSpace = new svm_node[totalNumOfElements];
396  weOwnXspace = true;
397  }
398  }
399  }
400  else if (typeid (*t) == typeid (XmlContent))
401  {
402  XmlContentPtr content = dynamic_cast<XmlContentPtr> (t);
403  KKStrParser p (*(content->Content ()));
404  p.TrimWhiteSpace (" ");
405 
406  KKStr lineName = p.GetNextToken ("\t");
407  if (!lineName.EqualIgnoreCase ("SuportVectorNamed") && !lineName.EqualIgnoreCase ("SuportVector"))
408  {
409  log.Level (-1) << endl
410  << "SvmModel233::ReadXML ***ERROR*** Invalid Content: " << lineName << endl
411  << endl;
412  errorsFound = true;
413  }
414 
415  else if (numSVsLoaded >= totalNumSVs)
416  {
417  log.Level (-1) << "SvmModel233::ReadXML ***ERROR*** Exceeding expected number of Support Vectors." << endl;
418  }
419 
420  if (!SV)
421  {
422  log.Level (-1) << endl << "SvmModel233::ReadXML ***ERROR*** 'SV' was no defined LineNum:" << lineName << endl << endl;
423  errorsFound = true;
424  }
425 
426  if (!errorsFound)
427  {
428  if (lineName.EqualIgnoreCase ("SuportVectorNamed"))
429  {
430  exampleNames.push_back (p.GetNextToken ("\t"));
431  }
432 
433  for (kkint32 j = 0; j < nr_class - 1; j++)
434  sv_coef[j][numSVsLoaded] = p.GetNextTokenDouble ("\t");
435 
436  SV[numSVsLoaded] = &(xSpace[numElementsLoaded]);
437 
438  while ((p.MoreTokens ()) && (numElementsLoaded < (totalNumOfElements - 1)))
439  {
440  xSpace[numElementsLoaded].index = p.GetNextTokenInt (":");
441  xSpace[numElementsLoaded].value = p.GetNextTokenDouble ("\t");
442  numElementsLoaded++;
443  }
444 
445  if (numElementsLoaded >= totalNumOfElements)
446  {
447  log.Level (-1) << endl
448  << "SvmModel233::ReadXML ***ERROR*** 'numElementsLoaded' is greater than what was defined by 'totalNumOfElements'." << endl
449  << endl;
450  errorsFound = true;
451  }
452  else
453  {
454  xSpace[numElementsLoaded].index = -1;
455  xSpace[numElementsLoaded].value = 0.0;
456  numElementsLoaded++;
457  numSVsLoaded++;
458  }
459  }
460  }
461  else
462  {
463  log.Level (-1) << endl
464  << "SvmModel233::ReadXML ***ERROR*** Unexpected Token[" << t->SectionName () << " " << t->VarName () << "]" << endl
465  << endl;
466  errorsFound = true;
467  }
468 
469  delete t;
470  t = NULL;
471  }
472 
473  if (!errorsFound)
474  {
475  if (numSVsLoaded != totalNumSVs)
476  {
477  log.Level (-1) << endl
478  << "SvmModel233::ReadXML ***ERROR*** numSVsLoaded[" << numSVsLoaded << "] does not match totalNumSVs[" << totalNumSVs << "]." << endl
479  << endl;
480  errorsFound= true;
481  }
482 
483  else
484  {
485  delete kValueTable;
486  kValueTable = new double[l];
487  }
488  }
489 
490  valid = (!errorsFound) && (!cancelFlag);
491 } /* ReadXML */
double ** sv_coef
Definition: svm.h:142
HTMLReport &__cdecl endl(HTMLReport &htmlReport)
Definition: HTMLReport.cpp:240
kkuint32 Count() const
Definition: XmlStream.h:917
void ParseTabDelStr(const KKStr &_str)
Definition: svm.cpp:1176
__int32 kkint32
Definition: KKBaseTypes.h:88
double * margin
Definition: svm.h:158
kkint32 * nSV
Definition: svm.h:148
kkint32 l
Definition: svm.h:139
kkint32 nr_class
Definition: svm.h:138
bool EqualIgnoreCase(const KKStr &s2) const
Definition: KKStr.cpp:1250
virtual const KKStr & SectionName() const
Definition: XmlStream.h:265
kkint32 * label
Definition: svm.h:147
RunLog & Level(kkint32 _level)
Definition: RunLog.cpp:220
double value
Definition: svm.h:39
virtual kkint32 ToInt32() const
Definition: XmlStream.h:317
kkint16 index
Definition: svm.h:38
svm_node * xSpace
Definition: svm.h:167
bool weOwnXspace
Definition: svm.h:171
svm_parameter param
Definition: svm.h:137
virtual const KKStr & VarName() const
Definition: XmlStream.cpp:794
virtual const KKStr & SectionName() const
Definition: XmlStream.cpp:785
VectorKKStr exampleNames
Definition: svm.h:140
svm_node ** SV
Definition: svm.h:141
KKStrPtr const Content() const
Definition: XmlStream.h:338
kkuint32 Count() const
Definition: XmlStream.h:915
virtual TokenTypes TokenType()=0
Class that manages the extraction of tokens from a String without being destructive to the original s...
Definition: KKStrParser.h:18
virtual XmlTokenPtr GetNextToken(VolConstBool &cancelFlag, RunLog &log)
Definition: XmlStream.cpp:116
double * kValueTable
Definition: svm.h:165
virtual const KKStr & VarName() const
Definition: XmlStream.h:269
double * rho
Definition: svm.h:143
KKStr SVM233::SvmModel233::SupportVectorName ( kkint32  svIDX)

Definition at line 134 of file svm.cpp.

Referenced by KKMLL::SVMModel::FindWorstSupportVectors(), KKMLL::SVMModel::FindWorstSupportVectors2(), and KKMLL::SVMModel::SupportVectorNames().

135 {
136  if (svIDX < (kkint32)exampleNames.size ())
137  return exampleNames[svIDX];
138  else
139  return "SV" + StrFormatInt (svIDX, "ZZZ#");
140 }
__int32 kkint32
Definition: KKBaseTypes.h:88
KKStr StrFormatInt(kkint32 val, const char *mask)
Definition: KKStr.cpp:5004
VectorKKStr exampleNames
Definition: svm.h:140
void SVM233::SvmModel233::WriteXML ( const KKStr varName,
std::ostream &  o 
) const
virtual

Definition at line 144 of file svm.cpp.

References KKB::XmlTag::AddAtribute(), KKB::KKStr::Empty(), SVM233::svm_node::index, l, label, margin, nr_class, nSV, param, rho, SV, KKB::XmlTag::tagEnd, KKB::XmlTag::tagStart, SVM233::svm_parameter::ToTabDelStr(), KKB::XmlTag::WriteXML(), KKB::KKStr::WriteXML(), and KKB::XmlTag::XmlTag().

Referenced by KKMLL::SVMModel::WriteXML().

147 {
148  XmlTag startTag ("SvmModel233", XmlTag::TagTypes::tagStart);
149  if (!varName.Empty ())
150  startTag.AddAtribute ("VarName", varName);
151  startTag.WriteXML (o);
152  o << endl;
153 
154  kkint32 numberOfBinaryClassifiers = nr_class * (nr_class - 1) / 2;
155 
156  kkint32 origPrecision = (kkint32)o.precision ();
157  o.precision (14);
158 
159  param.ToTabDelStr ().WriteXML ("Param", o);
160 
161  XmlElementInt32::WriteXML (nr_class, "nr_class", o);
162 
163  kkint32 totalNumSVs = l;
164 
165  XmlElementInt32::WriteXML (totalNumSVs, "totalNumSVs", o);
166 
167  XmlElementArrayDouble::WriteXML (numberOfBinaryClassifiers, rho, "rho", o);
168 
169  if (margin)
170  {
171  kkint32 oldPrecision = (kkint32)o.precision ();
172  o.precision (9);
173  XmlElementArrayDouble::WriteXML (numberOfBinaryClassifiers, margin, "margin", o);
174  o.precision (oldPrecision);
175  }
176 
177  if (label)
178  XmlElementArrayInt32::WriteXML (nr_class, label, "label", o);
179 
180  if (nSV)
181  XmlElementArrayInt32::WriteXML (nr_class, nSV, "nSV", o);
182 
183  {
184  // Determine total number of elements
185  kkint32 totalNumOfElements = 0;
186  for (kkint32 i = 0; i < totalNumSVs; i++)
187  {
188  const svm_node *p = SV[i];
189  while (p->index != -1)
190  {
191  totalNumOfElements++;
192  p++;
193  }
194 
195  totalNumOfElements++; // Add one for terminating node
196  }
197 
198  XmlElementInt32::WriteXML (totalNumOfElements, "totalNumOfElements", o);
199  }
200 
201  // The Support Vector Information will be written in the Contents portion of SvmModel233
202  for (kkint32 i = 0; i < totalNumSVs; i++)
203  {
204  if ((kkint32)exampleNames.size () > i)
205  o << "SuportVectorNamed" << "\t" << exampleNames[i];
206  else
207  o << "SuportVector";
208 
209  o.precision (16);
210  for (kkint32 j = 0; j < nr_class - 1; j++)
211  o << "\t" << sv_coef[j][i];
212 
213  const svm_node *p = SV[i];
214  while (p->index != -1)
215  {
216  o << "\t" << p->index << ":" << p->value;
217  p++;
218  }
219 
220  o << endl;
221  }
222 
223  o.precision (origPrecision);
224 
225  XmlTag endTag ("SvmModel233", XmlTag::TagTypes::tagEnd);
226  endTag.WriteXML (o);
227  o << endl;
228 } /* WriteXML */
double ** sv_coef
Definition: svm.h:142
HTMLReport &__cdecl endl(HTMLReport &htmlReport)
Definition: HTMLReport.cpp:240
__int32 kkint32
Definition: KKBaseTypes.h:88
double * margin
Definition: svm.h:158
kkint32 * nSV
Definition: svm.h:148
kkint32 l
Definition: svm.h:139
kkint32 nr_class
Definition: svm.h:138
kkint32 * label
Definition: svm.h:147
double value
Definition: svm.h:39
kkint16 index
Definition: svm.h:38
bool Empty() const
Definition: KKStr.h:241
KKStr ToTabDelStr() const
Definition: svm.cpp:1104
svm_parameter param
Definition: svm.h:137
void WriteXML(const KKStr &varName, std::ostream &o) const
Definition: KKStr.cpp:4420
VectorKKStr exampleNames
Definition: svm.h:140
svm_node ** SV
Definition: svm.h:141
double * rho
Definition: svm.h:143

Member Data Documentation

std::set<kkint32> SVM233::SvmModel233::BSVIndex

Definition at line 157 of file svm.h.

kkint32 SVM233::SvmModel233::dim
VectorKKStr SVM233::SvmModel233::exampleNames

allows the user to provide names to the labels

Definition at line 140 of file svm.h.

double* SVM233::SvmModel233::featureWeight

Definition at line 162 of file svm.h.

Referenced by MemoryConsumedEstimated(), SVM233::svm_predictTwoClasses(), and SvmModel233().

double* SVM233::SvmModel233::kValueTable
kkint32* SVM233::SvmModel233::label
double* SVM233::SvmModel233::margin

Definition at line 158 of file svm.h.

Referenced by ReadXML(), SVM233::svm_margin(), SvmModel233(), and WriteXML().

kkint32* SVM233::SvmModel233::nonSVIndex

Definition at line 154 of file svm.h.

Referenced by SvmModel233().

kkint32* SVM233::SvmModel233::nSV

number of SVs for each class (nSV[n]) nSV[0] + nSV[1] + ... + nSV[n-1] = l

Definition at line 148 of file svm.h.

Referenced by MemoryConsumedEstimated(), ReadXML(), SVM233::svm_BuildProbFromTwoClassModel(), SVM233::svm_GetSupportVectorStatistics(), SVM233::svm_margin(), SVM233::svm_predictTwoClasses(), SvmModel233(), and WriteXML().

kkint32 SVM233::SvmModel233::numNonSV

Definition at line 155 of file svm.h.

Referenced by SvmModel233().

double* SVM233::SvmModel233::rho
svm_node** SVM233::SvmModel233::SV

SVs (SV[l]) Support vector feature numbers

Definition at line 141 of file svm.h.

Referenced by MemoryConsumedEstimated(), ReadXML(), SVM233::svm_BuildProbFromTwoClassModel(), SVM233::svm_margin(), SVM233::svm_predictTwoClasses(), SvmModel233(), and WriteXML().

double** SVM233::SvmModel233::sv_coef
kkint32* SVM233::SvmModel233::SVIndex

Definition at line 153 of file svm.h.

Referenced by SvmModel233().

bool SVM233::SvmModel233::valid

Set to false if model is InValid; example look at ReadXML

Definition at line 169 of file svm.h.

Referenced by ReadXML(), and SvmModel233().

double SVM233::SvmModel233::weight

Definition at line 159 of file svm.h.

Referenced by SvmModel233().

bool SVM233::SvmModel233::weOwnXspace

Definition at line 171 of file svm.h.

Referenced by MemoryConsumedEstimated(), ReadXML(), and SvmModel233().

svm_node* SVM233::SvmModel233::xSpace

Definition at line 167 of file svm.h.

Referenced by MemoryConsumedEstimated(), and ReadXML().


The documentation for this struct was generated from the following files: